swaits adbad81e19 test: 23 proptests across two budget tiers (1M+ cases per run)
Scaled the proptest suite hard and added 13 new properties:

- cobs_decoder_multi_frame: N frames decode to N commands in order.
- cobs_decoder_chunk_invariant: arbitrary chunk splits yield the same
  sequence as feed-all-at-once.
- cobs_decoder_byte_by_byte_equivalent: stronger form of chunking.
- cobs_decoder_recovers_after_garbage: decoder is not poisoned by a
  leading garbage frame.
- cobs_decoder_ignores_sentinel_runs: arbitrary leading/trailing 0x00
  runs do not affect decoding.
- cobs_decoder_oversized_discards: frames > MAX_FRAME are discarded;
  subsequent frames still decode.
- response_full_roundtrip: encode + COBS + decode + re-parse yields the
  original Response (via a test-only decode_response helper).
- response_encoding_deterministic: byte-identical output across runs.
- cobs_encoded_has_single_trailing_zero: COBS invariant check.
- bandwidth_u8_is_bijection: sweeps the whole u8 space.
- radio_config_write_to_stays_in_bounds: buffer-write sanity.
- resolve_then_validate_consistent: cross-field contract.

Split into two proptest! blocks: lightweight at 100,000 cases each, and
heavyweight (MAX_FRAME-sized buffers, multi-frame streams) at 10,000.
Total ~1.13M test cases per suite run, finishing in ~20 s.
2026-04-13 12:12:12 -06:00
2026-04-13 12:12:12 -06:00

donglora-protocol

Wire protocol types and COBS framing for DongLoRa, shared between firmware and host crates (client-rs, mux-rs, bridge).

no_std by default. defmt::Format derives are opt-in via the default defmt feature. Host consumers disable default features:

donglora-protocol = { version = "0.1", default-features = false }

Status

Pre-1.0. Currently consumed by path dep; will publish to crates.io once the surface area settles.

Layout

  • src/lib.rs — Command, Response, RadioConfig, ErrorCode, etc.
  • src/framing.rs — CobsDecoder + cobs_encode_response for USB/UART transports.
  • tests/ — proptest suite (roundtrips, bounded-capacity invariants, regional-regs, duty-cycle math).
  • fuzz/ — cargo-fuzz targets on the parser and framer.
S
Description
No description provided
Readme MIT
176 KiB
0 Stars 1 Watchers 0 Forks
Languages
Rust 98.6%
Just 1.4%