Skip to content

v3.0.0

Latest

Choose a tag to compare

@github-actions github-actions released this 13 Nov 19:42
· 1 commit to master since this release

Changed

  • Made EnableInterrupt a required dependency for AVR boards while retaining compatibility with sketches that do not include its header directly.
  • BREAKING Introduced the SDI12_INTERNAL_PCINT macro to control internal PCINT ISRs on AVR boards, replacing the previous SDI12_EXTERNAL_PCINT approach.
  • Reworked command sequencing around the new recorder workflow, including retry/break behavior and cancellation handling that returns the bus to listening mode.
  • Split shared protocol timing and response-limit definitions into dedicated protocol headers/source to simplify core transport maintenance.
  • Updated and reorganized example coverage toward recorder-driven and non-blocking usage patterns.

Added

  • Added the new SDI12Recorder API implementation for phased command/response orchestration.
  • Added non-blocking recorder examples, including m_non_blocking_concurrent_logger and n_non_blocking_measurement.
  • Added a terminal-style command example (g_terminal_interface) and an examples/extras/raw_extended_commands sketch for raw command workflows.
  • Added CI coverage for SDI12_INTERNAL_PCINT example compilation.
  • Added the SDI12_RECEIVE_EVENT_COMMAND_COMPLETED keyword token.

Removed

  • Removed deprecated example sketches that were replaced by recorder-focused or reorganized examples (f_basic_data_request, g_terminal_window, i_SDI-12_interface, j_external_pcint_library, and l_verify_crc).
  • Removed extras/TestCommands.
  • Potentially breaking: Removed the macros SDI12_VALUE_STR_SIZE, SDI12_DATA_STR_SIZE, and SDI12_HV_STR_SIZE. The values can now be found in the SDI12ResponseLimits struct. These numbers are defined by the protocol specification.

Fixed

  • Added a link-time fallback EnableInterrupt implementation to prevent missing symbols in existing AVR sketches without conflicting with sketches or libraries that provide EnableInterrupt themselves.
  • Fixed parsing boundaries between command terminators (!) and response terminators (CRLF) to reduce malformed-response handling edge cases.
  • Fixed service-request and zero-value response handling edge cases in recorder-driven data collection.