adbad81e19a7bae1641d8d9c552687c3b236a787
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.
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_responsefor USB/UART transports.tests/— proptest suite (roundtrips, bounded-capacity invariants, regional-regs, duty-cycle math).fuzz/— cargo-fuzz targets on the parser and framer.
Languages
Rust
98.6%
Just
1.4%