Port the infiniteCable2 MQB EVO car port: Golf Mk8 and SEAT Leon Mk4 platforms, MQB EVO DBC/generator sources, CarState/CarController/RadarInterface handling, and the Volkswagen MQB EVO safety mode.
The current recompiled42 model catalog declares tinygrad_ref=fe5d3169b. The old vendored e837 runtime accepted the pkl but left policy outputs at zero, so sync the runtime package to the compiler version used by the downloaded models.
models: add a refresh models button to mici, gate and show progress on both panels
Adds the refresh-models tile to the mici models panel (it was missing there),
factoring the sync-key trigger + in-progress check into refresh_model_list()
and refresh_in_progress() shared with the big UI.
On both UIs the refresh button is now gated on offroad + not-downloading +
not-refreshing (the manager runs offroad-only and its per-tick manifest fetch
sits above a blocking download loop, so a refresh queued in either state would
stick), and shows progress while the manager refetches: mici shows "fetching..."
on the tile, the big UI flips its button from REFRESH to "FETCHING..." to match
its FETCHING.../SELECT/CLEAR label style (as in the OSM panel), replacing the
old fire-and-forget popup.
Claude-Session: https://claude.ai/code/session_01EGMnVnSk5inGTrd7kuDVG9
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: James Vecellio-Grant <159560811+Discountchubbs@users.noreply.github.com>
(cherry picked from commit a5f44653d7f43ad57fef2f546f3916ec4cbf3c56)
Upstream triggers on 0x2FF, the slot-15 companion burst. A car only broadcasts
the object slots that hold a target, so on the 2018-22 Accord rlog (144k Bosch-A
frames, 80 ids) 0x2FF never appears and the decoder never evaluated: zero radar
points. Any Bosch-A main frame now drives evaluation; per-slot signal reads are
unchanged, so this only changes when we look.
Widening the enable gate to the whole HONDA_BOSCH_A family meant the other
platforms (N-Box, Accord, Civic Bosch Diesel, CR-V Hybrid, RDX 3G, Insight,
Honda e) still lacked a Bus.radar entry, so constructing the radar interface
raised KeyError: Bus.radar. Give each of them the hand-written Bosch-A DBC.
Instead of the verified-subset allowlist (Civic Bosch / CR-V 5G only), clear
radarUnavailable for the whole HONDA_BOSCH_A hardware family so the decoder can
be tried on other Bosch-A cars. The sentinel-file kill switch still turns it
off, and HONDA_BOSCH_A_RADAR_VERIFIED is kept for reference.
opendbc's RadarPoint keeps aRel, yvRel and measured inside the deprecated group
(the upstream fork had them at the top level), so assigning them raised
'struct has no such member; name = aRel'. Point at the group in the radar
interface and in the tests.
sunnypilot's RadarInterfaceBase.__init__ takes (CP, CP_SP); the upstream file
only took CP, so constructing the radar interface raised
'RadarInterfaceBase.__init__() missing 1 required positional argument: CP_SP'.
Build CP_SP in the tests as well and pass it through.
Ported from StarPilot together with the radar interface. The tests cover the
16-slot CAN id map, DBC bit geometry, range/azimuth/vRel conversion, object
lifecycle, fallback behaviour, stale-bus handling and the platform allowlists.
The tester toggle uses this fork's sentinel file
(/data/params/d/HondaBoschARadarOff) instead of the upstream HondaBoschARadar
params key, so the suite runs without a libparams rebuild.