feat(sim): add 2026.8.3 message variants for a 2026 DIR/PMR #24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/sim-2026-fw-variant"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Adds
2026.8.3fw_variantsso the sim can drive a 2026 DIR/PMR. 2020/2022 targets are byte-identical.Derived from the gen-28 2022 vs 2026 DIR rx sets (enumerated from the
checkRxDlccall sites — the frame ID is a literal argument) plus both ETH DBCs.0x132→ DLC 6;0x212hvState@16→@60;0x252powerLimitsState@48→@420x284gains counter@52 + checksum@56; adds0x238,0x3FD0x3A1checksum seed0x2A→0xC00x25C→0x25B, DLC 1→8, gated, seed0x5B0x1420x318Three things the DBC does not tell you:
checkRxDlcreturns 1 only whenactual == expected; both short and long frames are rejected. So0x1328→6 is a hard break, not cosmetic.0x3A1's checksum seed was reseeded again:0xA4(2020) →0x2A(2022) →0xC0(2026). It is a vcfrontMIA member, so a stale seed presents as an MIA on a frame that looks perfectly healthy on the wire. Swept the seed out of all 17 gated frames: 15 useid_lo + id_hi, only0x3A1and0x25Bdeviate — henceSimFrame.cksum_magic/place_checksum(magic_value).0x25C→0x25Bis a renumber, not a deletion — the app-liveness frame behind appMIA a108.0x25Cis the only id the 2026 DIR dropped.The four other frames 2026 adds (
0x142,0x238,0x318,0x3FD) are all MIA-supervised, so they are sent aszeros(8)liveness for the same reason0x3B3is on 2022 — arrival is what clears the MIA, and optional-node MIA bites in DRIVE, which is where a spin test lives. Zeros are checked against the handlers rather than assumed:0x142and0x3FDclear their MIA bit inside(word0 & 3) == 0/(word0 & 7) == 0, which zeros satisfy;0x238and0x318clear unconditionally once validation passes. Both gated ones use the defaultid_lo + id_hiseed.0x1D5 PMF_state4and0x2E5 DIF_powerare also new to the 2026 DIR but are AWD-only — confirmed against a same-rev gen-32 RWD/AWD PMR pair — so they stay unsimulated.Scaling is unchanged (no BMS LSB moved 2022→2026), so
_SCALE_2022carries forward and the a125 calibration still holds.Golden tests encoded "only 2022 variants exist" and "nothing is dropped going forward"; 2026 makes the latter false. Updated to be revision-aware, with a guard that a 2022 bench still resolves to the 2022 set.
Verified by re-deriving the frame bytes against the firmware rules rather than just the wiring:
0x212byte70x01→0x31,0x3A1byte7 shifted by exactly0xC0-0x2A,0x238/0x318checksums0x3a/0x1b, counters increment, 2022 path byte-identical. 3203 tests pass, ruff clean.Untested on hardware — needs a bench run against a 2026 DU (watch appMIA a108, vcfrontMIA a155, uiMIA a088).
Background:
docs/private/dir-pmr-can-delta-2022-to-2026.md.🤖 Generated with Claude Code