Releases: elixir-circuits/circuits_gpio
v2.1.2
v2.1.1
v2.1.0
v2.0.2
-
Bug fixes
- Remove lazy NIF loading. There's an unexplained segfault in a small example
program that uses the same strategy. Even though it wasn't reproduceable
here, it's not worth the risk. Thanks to @pojiro for investigating.
- Remove lazy NIF loading. There's an unexplained segfault in a small example
-
Changes
- Add example Livebook. Thanks to @mnishiguchi.
v1.2.2
v2.0.1
- Bug fixes
- Fix race condition when loading NIF. If two processes caused the NIF to be
loaded at the same time, then it was possible for one to return an error. - Remove tracking of the number of open pins from the cdev backend to not need
to synchronize access to the count. This feature really was only used for
the unit tests.
- Fix race condition when loading NIF. If two processes caused the NIF to be
v1.2.1
v2.0.0
This is a major update to Circuits.GPIO that modernizes the API, restricts usage
to Nerves and Linux, and updates the Linux/Nerves backend to the Linux GPIO cdev
interface.
It is mostly backwards compatible with Circuits.GPIO v1. Please see PORTING.md
for upgrade instructions.
-
New features
-
Support alternative backends for different operating systems or for
simulated hardware. The Linux cdev backend can be compiled out. -
Circuits.GPIO.open/3
is much more flexible in how GPIOs are identified.
Specifying GPIOs by number still works, but it's now possible to specify
GPIOs by string labels and by tuples that contain the GPIO controller name
and index. Seet:gpio_spec/0
and theREADME.md
for details. -
List out available GPIOs with
Circuits.GPIO.enumerate/0
. Other helper
functions are available for getting more information about each GPIO too. -
Specify pull modes in general rather than only Raspberry Pis on Linux and
Nerves -
Easily do one-off reads and writes with
Circuits.GPIO.read_one/2
and
Circuits.GPIO.write_one/3
-
Improved performance on Nerves and Linux; kernel-applied timestamping of
GPIO input events -
Add
Circuits.GPIO.Diagnostics
to automate runtime testing
-
-
Changes
- More consistent error returns. Unexpected errors return
{:errno, value}
tuples to help correlate errors to low level docs - Deferred loading of the NIF to simplify debugging of GPIO backends.
Segfaults crash on first use ofCircuits.GPIO
rather than on load.
- More consistent error returns. Unexpected errors return
v1.2.0
- Changes
- Add workaround to GPIO pin numbering change on TI AM335x platforms (like the
BBB) that happened between Linux 5.10 and 5.15. Circuits.GPIO will remap the
pins automatically so the number is consistent with the way it's been for
years and the way that most online docs talk about it. E.g., GPIO number is
the pin bank times 32 plus the pin offset in the bank. - Defer NIF loading until opening the first GPIO. This is a minor optimization
to delay shared library load time and issue to a little later in boot.
- Add workaround to GPIO pin numbering change on TI AM335x platforms (like the