You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Made receiveISR() virtual and protected so subclasses can customize receive handling.
Made the shared buffer-overflow state static and volatile across all SDI12 instances.
Moved receive parity checking from the interrupt service routine into read() and peek() so standard 7E1 and high-volume binary 8N1 data can share the receive buffer.
Switched ATmega640, ATmega1280, ATmega2560, ATmega1284, and ATmega1284P boards from 8-bit Timer2 to 16-bit Timer3 for SDI-12 timing.
Updated examples and test sketches to use protocol response windows instead of fixed post-command delays and to improve address, CRC, and retry handling.
Updated the bundled SDI-12 specification to version 1.4 dated February 20, 2023, and removed superseded specification files.
Added
Added support for high-volume binary data commands, including peekBinary(), readBinary(), timedReadBinary(), writeBytes(), and SDI12BinaryDataType_e.
Added getTimeout() and getTimeoutValue() to report the stream timeout and the value returned when parseInt() or parseFloat() times out.
Added the write(const uint8_t*, size_t) overload for writing multiple bytes.
Added STM32 support using micros()-based timing.
Added support for ATmega640 boards.
Removed
Removed the SDI12_IGNORE_PARITY option; standard character reads now always validate parity.
Removed the SDI12_YIELD() and SDI12_YIELD_MS configuration macros and their artificial read delay; timed reads and peeks provide the required waiting behavior.
Fixed
Fixed extra sensor wake delays that could be shortened by integer overflow.
Fixed overflow in receive bit-time calculations on 16-bit timers near counter rollover.