Skip to content

Releases: elixir-circuits/circuits_gpio

v2.1.2

08 Sep 19:34
Compare
Choose a tag to compare
  • Bug fixes
    • Fix compilation when Erlang has been installed to a directory with spaces

v2.1.1

20 Aug 01:35
Compare
Choose a tag to compare
  • Changes
    • Show if GPIO number remapping is happening for AM335x platforms via backend_info/0.
    • Drop support for Elixir 1.11 and 1.12.

v2.1.0

08 Apr 12:54
Compare
Choose a tag to compare
  • Changes

    • Show backend options via backend_info/0 so that it's possible to see
      whether you're using CDev test mode or not.
    iex> Circuits.GPIO.backend_info()
    %{name: {Circuits.GPIO.CDev, [test: true]}, pins_open: 0}

v2.0.2

18 Jan 03:51
Compare
Choose a tag to compare
  • 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.
  • Changes

v1.2.2

18 Jan 03:50
Compare
Choose a tag to compare
  • 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.

v2.0.1

14 Jan 05:01
Compare
Choose a tag to compare
  • 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.

v1.2.1

14 Jan 04:42
Compare
Choose a tag to compare
  • Bug fixes
    • Fix race condition when loading NIF. If two processes caused the NIF to be
      loaded at the same time, one might return an error. This issue was
      introduced in v1.2.0.

v2.0.0

11 Jan 14:49
Compare
Choose a tag to compare

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. See t:gpio_spec/0 and the README.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 of Circuits.GPIO rather than on load.

v1.2.0

15 Dec 00:57
Compare
Choose a tag to compare
  • 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.

v1.1.0

31 Dec 20:32
Compare
Choose a tag to compare
  • Changes
    • Remove Erlang convenience functions since no one used them
    • Require Elixir 1.10 or later. Previous versions probably work, but won't be
      supported. This opens up the possibility of using Elixir 1.10+ features in
      future releases.