Files
DD3-LoRa-Bridge-MultiSender…/docs/INTEROP_CHECKLIST.md

1.4 KiB

Interop Checklist

A) Rust Receiver <-> C++ Sender

  1. Run C++ sender on lora-refactor baseline and Rust receiver host simulation harness.
  2. Verify receiver accepts sender short-id and sender-id mapping.
  3. Verify ACK payload bytes:
  • [flags:1][batch_id_be:2][epoch_utc_be:4]
  1. Verify duplicate batch handling:
  • ACK still sent
  • duplicate counters increment
  • publish/log suppressed
  1. Compare MQTT state and fault payload keys/semantics against baseline.
  2. Compare CSV line/header output for shared sample windows.

B) Rust Sender <-> C++ Receiver

  1. Run Rust sender with sync-request startup behavior.
  2. Confirm C++ receiver decodes payload schema v3 and sparse mask reconstruction.
  3. Confirm ACK mismatch handling does not clear inflight batch.
  4. Confirm retry and catch-up behavior under injected packet loss.

C) Contract Comparison

  1. Home Assistant discovery topics and payload fields:
  • topic: homeassistant/sensor/<device_id>/<key>/config
  • unique_id, device.identifiers, device.name, device.model, device.manufacturer
  1. MQTT state payload:
  • required keys present
  • legacy keys absent
  1. CSV output:
  • exact header order
  • stable numeric formatting

D) Port Validation Items

  • Sender unsynced boot sends only sync-requests.
  • ACK bootstrap gate enforced (time_valid=1 and epoch >= MIN_ACCEPTED_EPOCH_UTC).
  • Frame/CRC/ACK/payload golden fixtures all pass.
  • All protocol encode/decode paths covered by fixture-backed tests.