• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Alan-Jowett / sonde / 24443141467
82%

Build:
DEFAULT BRANCH: main
Ran 15 Apr 2026 08:03AM UTC
Jobs 1
Files 112
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

15 Apr 2026 03:05AM UTC coverage: 80.383% (+0.08%) from 80.306%
24443141467

push

github

web-flow
feat: store-and-forward radio protocol implementation (#708)

* feat: add optional blob field to WAKE and COMMAND messages

Implements protocol-level store-and-forward support (SF-2, SF-3):

- NodeMessage::Wake gains optional blob field (CBOR key 10) for
  piggybacked uplink data from send_async().
- GatewayMessage::Command gains optional blob field (CBOR key 10)
  for piggybacked downlink data on NOP commands only.
- Non-NOP commands ignore blob (key 10) per protocol.md section 5.2.
- Add get_bytes_optional() helper for decoding optional bstr fields.
- Add validation tests T-P120, T-P121, T-P122 (round-trip encoding,
  key absence verification, non-NOP blob rejection).
- Update all call sites across gateway, node, and test code with
  blob: None (construction) or blob: _ (pattern matching).

All 683 tests pass. Backward compatible: existing WAKE/COMMAND
messages without blob decode identically to before.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat: gateway store-and-forward support

Implements GW-0509 through GW-0512 and modifies GW-0102, GW-0103,
GW-0506 for the store-and-forward data channel:

handler.rs:
- DataReply gains delivery field (CBOR key 4, default 0).
  delivery=1 means deferred; delivery=0 means immediate.
- Encode omits key 4 when delivery=0 (backward compatible).

engine.rs:
- Add deferred_replies storage (HashMap<node_id, Vec<u8>>, RAM-only).
- handle_wake_core: extract WAKE blob, route to handler, store
  non-empty reply for NEXT cycle's COMMAND.
- handle_wake_core: inject stored deferred reply into NOP COMMAND
  blob, clear after delivery.
- handle_app_data_core: when handler replies with delivery=1 and
  non-empty data, store for deferred delivery instead of sending
  immediate APP_DATA_REPLY.
- Deferred data only delivered on NOP (non-NOP commands skip it).

All 683 tests pass across protocol, gateway, and node crates.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* feat(... (continued)

492 of 577 new or added lines in 11 files covered. (85.27%)

1 existing line in 1 file now uncovered.

23545 of 29291 relevant lines covered (80.38%)

186.19 hits per line

Uncovered Changes

Lines Coverage ∆ File
50
87.28
-4.79% crates/sonde-gateway/src/engine.rs
28
84.02
-1.37% crates/sonde-node/src/wake_cycle.rs
3
98.3
crates/sonde-node/src/async_queue.rs
2
82.75
0.91% crates/sonde-gateway/src/handler.rs
1
45.09
-0.26% crates/sonde-e2e/src/bin/tmp102_handler.rs
1
97.83
0.14% crates/sonde-node/src/bpf_dispatch.rs

Coverage Regressions

Lines Coverage ∆ File
1
84.02
-1.37% crates/sonde-node/src/wake_cycle.rs
Jobs
ID Job ID Ran Files Coverage
1 24443141467.1 15 Apr 2026 08:03AM UTC 112
80.38
GitHub Action Run
Source Files on build 24443141467
  • Tree
  • List 112
  • Changed 13
  • Source Changed 13
  • Coverage Changed 12
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #24443141467
  • 209c66be on github
  • Prev Build on main (#24408470577)
  • Next Build on main (#24463130973)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc