Skip to content

v1.4.0

Choose a tag to compare

@tylerkron tylerkron released this 03 Aug 02:50
· 197 commits to main since this release
da74a4c

Verified end-to-end against a DAQiFi Nyquist (firmware 3.7.2) over USB: serial discovery, connect + populated init, 100 Hz streaming, SD card list/storage, and LAN chip info all pass. Full unit suite green (2,531 tests) on net9.0 and net10.0.

Highlights

  • Auto-reconnect and streaming session resume — opt in, and a device that drops mid-capture reconnects and picks the stream back up instead of leaving you to rebuild it. (#379, #418)
  • Cancellable async connect/disconnect and IAsyncDisposable — connect and teardown now honor a CancellationToken, and devices can be await using'd. (#341, #416)
  • Per-device operation serialization — concurrent callers no longer read each other's replies; every exchange takes its turn on the device. (#342, #421)
  • SD card operations over WiFi — list, storage, download, and logging control now work over the TCP transport, not just USB. (#327, #420)

Features

  • DeviceCapabilities merges the device's own live capability document, so what a device reports wins over compiled-in assumptions. (#390, #404)
  • Managed WINC serial-bridge protocol plus a read-only WiFi module inspector. (part of #271, #423)
  • Producer write failures surface through a SendFailed event instead of vanishing. (#413)
  • An opt-in connect that attaches to a device without disturbing a stream already running on it. (#385, #414)

Reliability & fixes

  • A physically dropped serial or TCP connection is detected, making ConnectionStatus.Lost reachable. (#403)
  • Core's connectivity guards throw a typed DeviceNotConnectedException. (#395, #402)
  • Four downstream workarounds retired: SD stall typing, empty-transfer guard, ResetAll semantics, and the Verifying overload. (#398, #405)
  • SD download is bounded, so a wedged card can't hang the call or ignore cancellation. (#399, #401)
  • A timed-out SD LIST is no longer reported as an empty card. (#396, #400)
  • The SD bus switch and the SD→LAN restore both run inside the exchange lock. (#406, #407, #417)
  • Background failures are visible, and the last silent read-loop spin is gone. (#377, #378, #394, #415)
  • Analog IsEnabled tracks the device — protobuf field 22 is parsed. (#409, #411)
  • Serial connect failures are named for what they are instead of all reading as access denials. (#424, #427)
  • Firmware's malformed first stream frame is no longer broadcast to consumers. (#425, #428)
  • SD log parsing uses the device's own timestamp clock. (#426, #429)
  • The MCP server rejects over-max sample rates instead of silently clamping them. (#412)

Internal

  • DaqifiStreamingDevice and FirmwareUpdateService split into focused collaborators. (part of #344, #419, #422)
  • WINC abandoned-open tests are deterministic rather than timing-based. (#430)
  • Dependency bump. (#393)

Full Changelog: v1.3.0...v1.4.0