View Source Changelog

I'm looking for help maintaining Circuits.UART. While it generally can be made to do what people want, there are some significant improvements that are possible that would be really nice to have. I just haven't had a project to justify them and don't have time. Please consider reaching out if you have time and interest.

v1.5.3

  • Fixes
    • Fix compilation when Erlang has been installed to a directory with spaces

v1.5.2

v1.5.1

  • Fixes
    • Don't even try using the RS485 ioctls if not set by the user. This fixes an issue on Allwinner devices, but probably others, where getting RS485 settings works, but setting them, even if unchanged always fails. Thanks to @jjcarstens for the fix.

v1.5.0

  • Updates
    • Added RS485 configuration options. These only work on Linux. Thanks to @jjcarstens for this feature.

v1.4.5

  • Bug fix
    • Gracefully handle Process.info/2 returning nil (:heart: @tonnenpinguin)

v1.4.4

  • Improvements
    • Fix MacOS deprecation warning. Thanks to @tonnenpinguin for the fix.

v1.4.3

This release doesn't contain any new features. Most of the changes relate to updating dependencies and CI to make the project more pleasant to maintain.

  • Improvements
    • Minor documentation fixes and build message cleanup.

v1.4.2

  • Bug fix
    • Updated non-standard UART speed configuration to use the newer termios2 API on Linux. This fixes a custom speed issue that was seen when using the older API. Thanks to Tom Boland for reporting the issue and providing a fix.

v1.4.1

  • Bug fix
    • Remove unneeded terminate/2 that could crash under some situations.

v1.4.0

v1.3.2

  • Bug fixes
    • Fix incorrect switch in C that caused flow control enum to be incorrect. Thanks to Lee Bannard

v1.3.1

  • Bug fixes

    • Lengthen timeouts on messages sent to ports. This provides more slack time on heavily loaded uniprocessor devices that were missing timeouts by ~100 ms periodically.
    • Move C object files and the port executable to under the _build directory. This makes it easier to switch between host/target builds especially when using Elixir 1.8's mix target feature.
  • Improvements

    • Handle iodata on Circuits.UART.write in addition to binaries and charlists.

v1.3.0

Rebrand to Circuits.UART. No features or bugs were fixed in this version. To upgrade, you will need to rename all occurences of nerves_uart to circuits_uart and Nerves.UART to Circuits.UART.

v1.2.1

  • Bug fixes
    • Added missing ignore parity option to parity checking choices
    • Fix compiler warnings when built using newer versions of gcc

v1.2.0

  • Improvements
    • Added id: pid option. In active mode, this causes the receive notification messages to contain the pid of the Circuits.UART GenServer that sends them. Thanks to Tallak Tveide for this improvement.
    • Added find_pids/0 diagnostic utility for finding lost Circuits.UART pids. This is handy when you need to close a serial port and don't know the pid.
    • Added configuration/1 to get the current configuration of a UART.

v1.1.1

The mix.exs file has the Elixir requirement bumped from 1.3 to 1.4. This was done to fix a Dialyzer warning caused by a change in arguments to System.monotonic_time/1 with newer versions of Erlang and Elixir. Unfortunately this broke compilation under Elixir 1.3.

  • Bug fixes
    • Removed unnecessary open failure notification message. The failure gets returned from the open call already and the notification was due to an unfortunate path through the Linux file handle polling code.
    • Various Windows fixes:
      • Fixed unhandled tx ready event seen during big transfers at 250000. Thanks to Arne Ehrlich for figuring this out.
      • Fixed bogus file handle errors when an open fails and then an attempt to open again happens without a restart of the GenServer.

v1.1.0

  • Improvements

    • Added 4-byte framer both since it is periodically useful and as a very simple example of the framing feature.
  • Bug fixes

    • Fix active mode state not being updated and a message being sent in passive mode on an open failure.
    • Maintain the elapsed time on passive mode reads to avoid reading forever when bytes keep arriving, but no messages get sent from the framer

v1.0.1

  • Improvements
    • Refactored Makefile logic to avoid 1-2 second hit when building. This was due to erl being called to get the directory containing the erl interface include/lib paths. Now mix.exs passes them down.
    • Trivial Elixir 1.6 formatting tweaks

v1.0.0

  • Bug fixes
    • Flush framing when closing a port
    • Fix broken spec's
    • Documentation and code cleanup

v0.1.2

Prebuilt port binaries are no longer distributed in hex.pm for Windows users. You'll need to install MinGW. Feedback was that it didn't work as well as I thought it would.

  • Bug fixes
    • Fix custom baudrates not working on OSX. Thanks to salzig for identifying the problem and helping to debug it.
    • Pass flush request through to framer as well as the serial port
    • Minor code cleanup

v0.1.1

  • New features
    • Enable experimental feature on Windows to use prebuilt port binary. Feedback appreciated.

v0.1.0

  • New features

    • Add support for adding and removing framing on data transferred over the serial port.
    • Add line framing implementation to support receiving notifications only for complete lines (lines ending in '\n' or '\r\n') or lines that are longer than a set length.
  • Bugs fixed

    • Enable RTS when not using it. Keeping it cleared was stopping transmission on devices that supported flow control when the user wasn't using it.
    • Fix quirks on Windows when using com0com. This should improve support with at least one other serial driver based on user error reports.
  • Known limitations

    • Framing receive timeouts only work in active mode. (I.e., you're waiting for a complete line to be received, but if it takes too long, then you want to receive a notification of a partial line.) Passive mode support is coming.

v0.0.7

  • Bugs fixed
    • Force elixir_make v0.3.0 so that it works OTP 19

v0.0.6

  • New features
    • Use elixir_make

v0.0.5

  • Bugs fixed
    • Fixed enumeration of ttyACM devices on Linux

v0.0.4

  • New features

    • Added hardware signal support (rts, cts, dtr, dsr, etc.)
    • Added support for sending breaks
    • Added support for specifying which queue to flush (:receive, :transmit, or :both)
  • Bugs fixed

    • Fixed crash in active mode when sending and receiving at the same time

v0.0.3

  • Bugs fixed
    • Crosscompiling on OSX works now

v0.0.2

  • Bugs fixed
    • Fix hex.pm release by not publishing .o files

v0.0.1

  • Initial release