Skip to content

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 15:33
· 71 commits to master since this release

Changed

  • 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.