307853bea8
Build Firmware / Build stm32-teslacharger (pull_request) Successful in 59s
Pairs with stm32-hal-vcu PR #42. Adds a runtime "vcuchglim" param that the VCU broadcasts every 200 ms; on receipt, the param's Change() callback translates 20-100% to the charger's udcspnt (DC voltage setpoint) using a linear cell-voltage ramp. Without this, the teslacharger had no path for the user's app-set charge limit to actually limit charging — udcspnt was effectively a compile-time setpoint. What's added ------------ - Param::vcuchglim in include/param_prj.h: PARAM_ENTRY(CAT_CHARGER, vcuchglim, "%", 20, 100, 80, 23) - Range 20-100 (matches VCU validation) - Default 80% if VCU never connects - ID 23 (next free per the comment, bumped to 24) - Saveable so a flashed charger paired with a silent VCU still behaves predictably across reboots - can->AddRecv(Param::vcuchglim, 0x212, 0, 8, 1) registration in ChargerCAN::MapMessages() — libopeninv's CanMap dispatches to the Change() callback on each received frame. - Param::Change(vcuchglim) handler in src/main.cpp: cell_target = 3.30 + (4.15 - 3.30) * (pct - 20) / 80 udcspnt = cell_target * 96 Endpoints chosen to be safe across Tesla LDU / VW MEB / Volt2: 20% → 3.30 V/cell × 96 = 316.8 V (deep-cycle storage floor) 80% → 3.94 V/cell × 96 = 378.0 V (recommended daily ceiling) 100% → 4.15 V/cell × 96 = 398.4 V (matches existing udclim default) Tuneable here as constants if a particular pack needs a tighter range. - VER bump 1.19.R → 1.20.R. Combined with the pre-existing -S1 suffix the OI web UI shows "4=1.20.R-S1", visually distinct from upstream and from the previous Skudak build. Build ----- text=25288, links clean. The "RWX LOAD segment" linker warning is pre-existing on this template, unrelated. No new warnings from this change. Version string in the binary verified as "4=1.20.R-S1". Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>