feat: S8/S9 - trim chargercan.cpp + restore c2/c3 RX for multi-module Tesla OBC
Build Firmware / Build stm32-teslacharger (pull_request) Successful in 59s
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>
This commit is contained in:
+6
-1
@@ -134,7 +134,12 @@
|
||||
// HandleClear callback and stack-overflowed at boot before the terminal
|
||||
// came up. Jumping straight to -S7 so any bench that still reports -S6
|
||||
// in the openinverter UI is visibly the broken build and gets re-flashed.
|
||||
#define VERSTR STRINGIFY(4=VER-S7)
|
||||
// -S8 trims chargercan.cpp from 73 → 37 entries so the libopeninv 50-slot
|
||||
// pool doesn't silently drop the SKUDAK 0x211 broadcast on rebuild.
|
||||
// -S9 restores 8 c2/c3 RX entries (uac/flag/idc/udc per module). -S8 over-
|
||||
// trimmed multi-module Tesla OBC support: CalcTotals was summing only
|
||||
// module 1's contribution, so reported pack power was 1/3 of actual delivery.
|
||||
#define VERSTR STRINGIFY(4=VER-S9)
|
||||
|
||||
/***** enums ******/
|
||||
|
||||
|
||||
Reference in New Issue
Block a user