1.4 KiB
1.4 KiB
Interop Checklist
A) Rust Receiver <-> C++ Sender
- Run C++ sender on
lora-refactorbaseline and Rust receiver host simulation harness. - Verify receiver accepts sender short-id and sender-id mapping.
- Verify ACK payload bytes:
[flags:1][batch_id_be:2][epoch_utc_be:4]
- Verify duplicate batch handling:
- ACK still sent
- duplicate counters increment
- publish/log suppressed
- Compare MQTT state and fault payload keys/semantics against baseline.
- Compare CSV line/header output for shared sample windows.
B) Rust Sender <-> C++ Receiver
- Run Rust sender with sync-request startup behavior.
- Confirm C++ receiver decodes payload schema v3 and sparse mask reconstruction.
- Confirm ACK mismatch handling does not clear inflight batch.
- Confirm retry and catch-up behavior under injected packet loss.
C) Contract Comparison
- Home Assistant discovery topics and payload fields:
- topic:
homeassistant/sensor/<device_id>/<key>/config unique_id,device.identifiers,device.name,device.model,device.manufacturer
- MQTT state payload:
- required keys present
- legacy keys absent
- 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=1and epoch >=MIN_ACCEPTED_EPOCH_UTC). - Frame/CRC/ACK/payload golden fixtures all pass.
- All protocol encode/decode paths covered by fixture-backed tests.