Releases: ssilverman/TeensyDMX
Releases · ssilverman/TeensyDMX
4.2.0
Added
- New
Sender::fillfunction that fills a channel range with a value. - Added NULL checking for the
valuespointer inSender::setandSender::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::setPacketSizenow 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_ptrto regular pointers.
Fixed
- Ensure the packet size can't be changed in the middle of sending a packet.
- Improved lambda hygiene.
4.1.1
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::setRXWatchPinreminding the caller to configure the pin for input.
Changed
- DMX TX and RX are now started with new
startRxandstartTxconvenience functions in theUSBProWidgetexample. - Updated comment layout in the examples to be <= 70 columns to help improve readability, for example for larger fonts.
Fixed
- Fixed
Chaserexample to start the blink and packet correctly. - Fixed
TextPacketHandlerexample to define one of the static members. - Fixed
Senderto use double-buffering to guarantee atomic behaviour.
4.1.0
Added
USBProWidgetexample: Added received message error handling.- Added 7- and 9-bit format support when using serial parameters to accomplish BREAK and MAB timing.
Sender::breakTime()andmabTime()now return correct values if the sender is using serial parameters instead of a timer to generate the BREAK/MAB times.
Changed
USBProWidgetexample:- 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
memcpyandmemcmptostd::copy_nandstd::equal, respectively.
BasicSendexample: Now callingbegin()after setting the channel contents.Sender::setBreakSerialParamsnow checks for valid parameters and returns a Boolean indicating success.
Fixed
USBProWidgetexample:- More correct changed-DMX behaviour.
- All commands except the appropriate ones now reset the program to input mode.
- Fixed
Sender::resumeForto ensure the UART has been started before setting it to active.
4.1.0-beta.2
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:
setBreakSerialParamsbreakSerialBaudbreakSerialFormatsetBreakUseTimerNotSerialisBreakUseTimerNotSerial
- Added an "Examples" section (under "How to use") to the README.
- Added a
USBProWidgetexample.
Changed
- Replaced use of the custom
PeriodicTimerwith the Teensy library'sIntervalTimer. 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
SendTestPacketsexample 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
Chaserexample 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
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::irqHandlerto useuint32_tinstead of the incorrectuint8_t.STATis a 32-bit register.
4.1.0-beta
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
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
Added
- A TODO list to the README that describes features being considered for subsequent versions.
- New
SendADCexample.
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
Added
- Added an optional
rangeErrorparameter toReceiver::getto match the same parameter inReceiver::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::isShortvariable that allow callers to know when received packet data is part of a short packet, if kept. Also added newReceiver::setKeepShortPackets(bool)andReceiver::isKeepShortPackets()functions for setting and getting the feature state.
Changed
- Changed
util::IntervalTimerto acceptstd::functions for the trigger function. - Renamed
util::IntervalTimertoutil::PeriodicTimer. - Improved IDLE and timeout handling logic. It is the goal to be as accurate as possible.
Fixed
- Fixed
Receiver::packetStats()andReceiver::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
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.