- modeld standby: skip inference at standstill (model stays loaded in GPU), ModelStandby param + ModelStandbyTs heartbeat for race-free suppression - controlsd: suppress commIssue/modeldLagging when ModelStandbyTs < 2s old, ignore telemetryd/dashcamd in process_not_running check - Fan controller: standstill below 74°C clamps to 0-10% (near silent), standstill above 74°C allows 0-100%, thermald reads carState.standstill - Deleter: enforce 4GB quota on /data/log2 session logs, oldest-first cleanup - Diagnostic logging: steerTempUnavailable and controlsdLagging log to stderr with full context (steering angle, torque, speed, remaining time) - CLAUDE.md: document memory params method name difference (C++ camelCase vs Python snake_case) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Car port structure
interface.py
Generic interface to send and receive messages from CAN (controlsd uses this to communicate with car)
fingerprints.py
Fingerprints for matching to a specific car
carcontroller.py
Builds CAN messages to send to car
carstate.py
Reads CAN from car and builds openpilot CarState message
values.py
Limits for actuation, general constants for cars, and supported car documentation
radar_interface.py
Interface for parsing radar points from the car