This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
donglora/crates/donglora-cobs/README.md
T

1.5 KiB

donglora-cobs

Minimal COBS (Consistent Overhead Byte Stuffing) encoder/decoder.

  • no_std, zero-alloc, zero dependencies at runtime
  • Spec-compliant: implements Cheshire & Baker (IEEE/ACM 1999)
  • Exhaustively tested: 39 tests including cross-validation against corncobs

Why our own crate?

DongLoRa is an embedded firmware project. We want:

  • Zero runtime dependencies (just 130 lines of code)
  • Complete control over the implementation
  • Spec compliance verified against both the canonical Wikipedia vectors AND a battle-tested third-party crate (corncobs)

For higher-throughput use cases, consider corncobs which has been benchmark-optimized for streaming applications.

Testing

# Unit tests + property tests + interop
cargo test -p donglora-cobs

# Fuzz testing (requires cargo-fuzz: cargo install cargo-fuzz)
cd crates/donglora-cobs
cargo +nightly fuzz run fuzz_decode -- -max_total_time=60
cargo +nightly fuzz run fuzz_roundtrip -- -max_total_time=60

Tests include:

  • 18 canonical COBS vectors (Wikipedia / IEEE/ACM spec)
  • Round-trip verification for various payload sizes
  • 8 interop tests cross-validating against corncobs
  • 500 randomized round-trip payloads verified against corncobs
  • 5 proptest properties (~1280 random inputs): round-trip, interop encode/decode both directions, length bounds, decode-never-panics
  • 2 fuzz targets: fuzz_decode (arbitrary bytes → must not panic) and fuzz_roundtrip (encode→decode must match)