v1.4.0
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 aCancellationToken, and devices can beawait 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
DeviceCapabilitiesmerges 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
SendFailedevent 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.Lostreachable. (#403) - Core's connectivity guards throw a typed
DeviceNotConnectedException. (#395, #402) - Four downstream workarounds retired: SD stall typing, empty-transfer guard,
ResetAllsemantics, and theVerifyingoverload. (#398, #405) - SD download is bounded, so a wedged card can't hang the call or ignore cancellation. (#399, #401)
- A timed-out SD
LISTis 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
IsEnabledtracks 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
DaqifiStreamingDeviceandFirmwareUpdateServicesplit 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