36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
# 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]`
|
|
4. Verify duplicate batch handling:
|
|
- ACK still sent
|
|
- duplicate counters increment
|
|
- publish/log suppressed
|
|
5. Compare MQTT state and fault payload keys/semantics against baseline.
|
|
6. 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`
|
|
2. MQTT state payload:
|
|
- required keys present
|
|
- legacy keys absent
|
|
3. 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. |