Releases: ssilverman/TeensyDMX
Releases · ssilverman/TeensyDMX
4.2.0
Added
- New
Sender::fill
function that fills a channel range with a value. - Added NULL checking for the
values
pointer inSender::set
andSender::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
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
andstartTx
convenience functions in theUSBProWidget
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
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()
andmabTime()
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
andmemcmp
tostd::copy_n
andstd::equal
, respectively.
BasicSend
example: Now callingbegin()
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
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'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
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
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 useuint32_t
instead of the incorrectuint8_t
.STAT
is 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
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
Added
- Added an optional
rangeError
parameter toReceiver::get
to 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::isShort
variable 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::IntervalTimer
to acceptstd::function
s for the trigger function. - Renamed
util::IntervalTimer
toutil::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.