Skip to content

Releases: ssilverman/TeensyDMX

4.2.0

29 May 16:54
Compare
Choose a tag to compare

Added

  • New Sender::fill function that fills a channel range with a value.
  • Added NULL checking for the values pointer in Sender::set and Sender::set16Bit.

Changed

  • No more volatile objects with weird copy constructors and assignment operators. Using atomic fences instead.
  • Improved use of public, protected, private, and volatile.
  • Sender::setPacketSize now disallows sizes of zero. The new allowed range is 1-513.
  • Timeout detection in Flasher, USBProWidget, and the README now compare using strictly less than the timeout value so that the timeout value itself can be used to manually trigger a timeout, instead of having to use an arbitrary value greater than the timeout value.
  • Changed uses of std::shared_ptr to regular pointers.

Fixed

  • Ensure the packet size can't be changed in the middle of sending a packet.
  • Improved lambda hygiene.

4.1.1

03 Feb 19:32
Compare
Choose a tag to compare

Added

  • Added a BREAK start timestamp to PacketStats, frameTimestamp. The value is in microseconds.
  • Added Receiver::rxWatchPin() for retrieving the RX watch pin number.
  • Added a note to the docs for Receiver::setRXWatchPin reminding the caller to configure the pin for input.

Changed

  • DMX TX and RX are now started with new startRx and startTx convenience functions in the USBProWidget example.
  • Updated comment layout in the examples to be <= 70 columns to help improve readability, for example for larger fonts.

Fixed

  • Fixed Chaser example to start the blink and packet correctly.
  • Fixed TextPacketHandler example to define one of the static members.
  • Fixed Sender to use double-buffering to guarantee atomic behaviour.

4.1.0

22 Dec 19:47
Compare
Choose a tag to compare

Added

  • USBProWidget example: Added received message error handling.
  • Added 7- and 9-bit format support when using serial parameters to accomplish BREAK and MAB timing.
  • Sender::breakTime() and mabTime() now return correct values if the sender is using serial parameters instead of a timer to generate the BREAK/MAB times.

Changed

  • USBProWidget example:
    • Moved DMX receive processing into the main loop.
    • Reduced the minimum returned BREAK time to 10.67us instead of 9*10.67us.
    • Updated uses of memcpy and memcmp to std::copy_n and std::equal, respectively.
  • BasicSend example: Now calling begin() after setting the channel contents.
  • Sender::setBreakSerialParams now checks for valid parameters and returns a Boolean indicating success.

Fixed

  • USBProWidget example:
    • More correct changed-DMX behaviour.
    • All commands except the appropriate ones now reset the program to input mode.
  • Fixed Sender::resumeFor to ensure the UART has been started before setting it to active.

4.1.0-beta.2

07 Dec 03:37
Compare
Choose a tag to compare
4.1.0-beta.2 Pre-release
Pre-release

Added

  • Added a way to use either serial parameters or a timer to achieve the BREAK and MAB timings. Along with this, added the ability to change those serial parameters. New functions:
    • setBreakSerialParams
    • breakSerialBaud
    • breakSerialFormat
    • setBreakUseTimerNotSerial
    • isBreakUseTimerNotSerial
  • Added an "Examples" section (under "How to use") to the README.
  • Added a USBProWidget example.

Changed

  • Replaced use of the custom PeriodicTimer with the Teensy library's IntervalTimer. This helps compatibility with other libraries that use this API. This means that BREAK times are slightly less accurate (when using a timer and not serial parameters).
  • Changed the default way to generate BREAK and MAB timings to use serial parameters instead of a timer.
  • Updated the SendTestPackets example to use serial parameters for the BREAK and MAB times. Also changed the previous BREAK and MAB times to 88 and 8 (from 108 and 12), respectively, and commented that section out; it's present as an alternative.
  • Updated the Chaser example change interval to 50ms so that it's greater than the DMX packet time.

Fixed

  • Fixed the sender to handle parity correctly when using serial parameters to achieve the BREAK and MAB timings. Some of the control bits were being incorrectly overwritten (LPUART) or not saved (UART).

4.1.0-beta.1

14 Oct 02:17
Compare
Choose a tag to compare
4.1.0-beta.1 Pre-release
Pre-release

Added

  • Added an error stat for packets that are too long.
  • README additions:
    • New table of contents
    • New "Error statistics" section
    • Added details about packets that are too long

Fixed

  • Fixed the status read inside LPUARTReceiveHandler::irqHandler to use uint32_t instead of the incorrect uint8_t. STAT is a 32-bit register.

4.1.0-beta

09 Sep 06:38
Compare
Choose a tag to compare
4.1.0-beta Pre-release
Pre-release

While the functionality stays the same, this is a major update because of the
restructured code. Much of the #define-based code was replaced with something
much more maintainable.

Added

  • Added Serial8 support for Teensy 4.1.
  • Added a Teensy 4.1 section to platform.ini.

Changed

  • Replaced much of the #define-based code with something much more maintainable.

4.0.0

22 Mar 22:52
Compare
Choose a tag to compare

I figured just mark this as 4.0.0 because there haven't been any changes in a while.

Added

  • New section in the README: "A note on MAB timing" inside "Choosing BREAK and MAB times" in the "DMX transmit" section. This describes why the MAB times may be longer than specified.
  • New item in the README's TODO list: Better MAB timing.
  • New '?' command in the main example that prints all available sketches and stars the active one.

Changed

  • Updated the library description with some additional features.
  • Updated the main example program to use pre-allocation instead of dynamic allocation.

4.0.0-beta

11 Jan 05:49
Compare
Choose a tag to compare
4.0.0-beta Pre-release
Pre-release

Added

  • A TODO list to the README that describes features being considered for subsequent versions.
  • New SendADC example.

Fixed

  • Fixed IDLE detection for the case where a few characters are in the FIFO and an IDLE condition occurs. The IDLE in this case is now captured.

4.0.0-alpha.8

05 Jan 07:18
Compare
Choose a tag to compare
4.0.0-alpha.8 Pre-release
Pre-release

Added

  • Added an optional rangeError parameter to Receiver::get to match the same parameter in Receiver::get16Bit. Because the function returns a value, it provides a way to know whether a zero return value was because of an error.
  • New "Keep Short Packets" feature and associated PacketStats::isShort variable that allow callers to know when received packet data is part of a short packet, if kept. Also added new Receiver::setKeepShortPackets(bool) and Receiver::isKeepShortPackets() functions for setting and getting the feature state.

Changed

  • Changed util::IntervalTimer to accept std::functions for the trigger function.
  • Renamed util::IntervalTimer to util::PeriodicTimer.
  • Improved IDLE and timeout handling logic. It is the goal to be as accurate as possible.

Fixed

  • Fixed Receiver::packetStats() and Receiver::errorStats() to access the values atomically.
  • Changed Receiver::setRXWatchPin(int) to disable all interrupts instead of just the UART ones because the pin interrupt may have a different priority.

4.0.0-alpha.7

20 Dec 10:59
Compare
Choose a tag to compare
4.0.0-alpha.7 Pre-release
Pre-release

Added

  • Teensy 4 support.

Fixed

  • Fixed a case in the transmitter where if the MAB was zero, then it would be sent with the same duration as the BREAK.