Add firmware verification harness
CI / Non-hardware verification (push) Has been cancelled

This commit is contained in:
2026-07-13 11:10:19 +02:00
parent def09160d0
commit 99c07ecda6
16 changed files with 1004 additions and 32 deletions
+3 -3
View File
@@ -47,7 +47,7 @@ Sender state machine invariants must remain behavior-equivalent:
- frame format: `[msg_kind][short_id_be][payload][crc16_ccitt]`.
- reject invalid CRC/msg-kind/length.
- Payload codec:
- schema `3` with `present_mask` (30-bit sparse second map).
- schema `4` with `present_mask` (30-bit sparse second map).
- support `n==0` sync-request packets.
- Time bootstrap guardrail:
- sender must not run normal sampling/transmit until valid ACK time received.
@@ -221,7 +221,7 @@ Sender state machine invariants must remain behavior-equivalent:
## `lib/dd3_legacy_core/src/payload_codec.cpp`
- `bool encode_batch(const BatchInput&, uint8_t*, size_t, size_t*)`
- schema v3 encoder with metadata, sparse present mask, delta coding.
- schema v4 encoder with metadata, sparse present mask, delta coding.
- `bool decode_batch(const uint8_t*, size_t, BatchInput*)`
- strict schema/magic/flags decode + bounds checks.
- Varint primitives:
@@ -475,7 +475,7 @@ Current core orchestration requirements:
## 6. Rust Porting Constraints and Recommendations
- Preserve wire compatibility first:
- LoRa frame byte layout, CRC16, ACK format, payload schema v3.
- LoRa frame byte layout, CRC16, ACK format, payload schema v4.
- sender optimization changes must not alter payload field meanings.
- Preserve persistent storage keys:
- Preferences keys (`ssid`, `pass`, `mqhost`, `mqport`, `mquser`, `mqpass`, `ntp1`, `ntp2`, `webuser`, `webpass`, `valid`).