bench mode: live camera via thermald, blinking telemetry indicator

- Unblocked thermald and camerad — thermald manages CPU cores and reads
  fake pandaStates for ignition, bench no longer publishes deviceState
- camerad starts with live camera feed on bench
- Force nvg->update() every frame for HUD repaint without camera dependency
- Blue blinking telemetry circle uses getBool pattern
- camerad debug logging for startup diagnostics

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-13 03:10:06 +00:00
parent 3edc1972c8
commit b70543a003
4 changed files with 22 additions and 22 deletions

View File

@@ -36,8 +36,9 @@ def main():
params_mem.put("BenchGear", "P")
params_mem.put("BenchEngaged", "0")
# thermald handles deviceState (reads our fake pandaStates for ignition)
pm = messaging.PubMaster([
"deviceState", "pandaStates", "carState", "controlsState",
"pandaStates", "carState", "controlsState",
"driverMonitoringState", "liveCalibration",
])
@@ -65,19 +66,7 @@ def main():
speed_ms = speed_mph * MS_PER_MPH
gear = gear_map.get(gear_str, car.CarState.GearShifter.park)
# deviceState — 2 Hz
if frame % 5 == 0:
dat = messaging.new_message("deviceState")
dat.deviceState.started = True
dat.deviceState.freeSpacePercent = 80
dat.deviceState.memoryUsagePercent = 30
dat.deviceState.cpuTempC = [40.0] * 3
dat.deviceState.gpuTempC = [40.0] * 3
dat.deviceState.cpuUsagePercent = [20] * 8
dat.deviceState.networkType = log.DeviceState.NetworkType.cell4G
pm.send("deviceState", dat)
# pandaStates — 10 Hz
# pandaStates10 Hz (thermald reads ignition from this)
if frame % 1 == 0:
dat = messaging.new_message("pandaStates", 1)
dat.pandaStates[0].ignitionLine = True