c905e1236b
Build Firmware / Build stm32-teslacharger (pull_request) Successful in 59s
S8 trimmed the 73-entry chargercan.cpp down to 37 entries to fit libopeninv's 50-slot CANPOS pool — needed because the upstream firmware silently overflowed the pool and dropped the SKUDAK 0x211 broadcast at the tail. Without that broadcast the VCU couldn't see idc/udc/tmpobcmax. S9 restores 8 of the entries S8 dropped: c2/c3 uac, flag, idc, udc. These turn out to be NECESSARY for 3-module Tesla OBC operation: - CalcTotals (charger.cpp:41/48) sums c1+c2+c3 idc and takes the max udc. Without c2/c3 idc mapped, idc reports only module 1's contribution. Bench observed 2.7 kW reported vs 9.7 kW actual EVSE draw — exactly the 1/3 ratio expected. - CheckChargerFaults (charger.cpp:226-261) gates active2/active3 detection on c2uac/c3uac > 70V. Without those mapped, the active bits short-circuit to false — which masked the c2flag/c3flag CheckAlive timeout. We were getting away with the trim by accident. Kept dropped (still need pool headroom for future): - c2/c3 iac (AC current — c1iac × 3 is a fine proxy, not used in aggregation anywhere) - c2/c3 stt (state — all modules report same value for healthy operation) - c2/c3 tmp1/2/in (temps — tmpobcmax from c1's 3 probes is sufficient; full 9-probe worst-case is a nice-to-have) - CHAdeMO RX/TX (0x102/0x108/0x109) — Polarity VCU doesn't use CHAdeMO - 0x368 idle frame — cosmetic only - hwaclim duplicates on 0x209/0x20B — all modules report identical limits Pool math: 42 / 50 slots used, 8-slot headroom for future additions. VERSTR S8 → S9 so any bench reporting -S8 in the openinverter UI is visibly the regressed build and needs canclear + reflash. After flash: user must issue `canclear` from the openinverter Commands tab so the persisted map gets rebuilt from the new chargercan.cpp. Power-cycle, verify `can p` shows the 8 new c2/c3 lines, then EVSE test should report ~9.5 kW in the app (was 2.7 kW). #patch Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>