Files
StarPilot/openpilot/starpilot/car/gm/camera.py
T
firestar5683 ef11470b30 GM
Register GM controllers, car state, distance-button actions and feature capabilities against the shared platform groups.
2026-10-14 19:56:17 -05:00

36 lines
1.5 KiB
Python

from opendbc.car.gm.values import camera_acc_pedal_profile, volt_cc_pedal_profile
from openpilot.starpilot.saved_source import read_saved
class CameraPedalPreference:
def __init__(self, cp, params, *, maneuver=False):
self.cp, self.params = cp, params
self.maneuver = maneuver
self.read_ns = 0
self.enabled = False
def update(self, now_ns):
cc_profile = volt_cc_pedal_profile(self.cp)
profile = camera_acc_pedal_profile(self.cp) or cc_profile
if (type(now_ns) is not int or now_ns <= 0 or profile is None or not profile.longitudinal or
self.maneuver and cc_profile is None and not profile.volt):
self.enabled = False
return False
if now_ns < self.read_ns:
self.read_ns = 0
self.enabled = False
return False
if self.read_ns == 0 or now_ns - self.read_ns >= 250_000_000:
self.read_ns = now_ns
try:
master = read_saved(self.params, 'OpenpilotEnabledToggle', 8)
safe, safe_valid = read_saved(self.params, 'SafeMode', 8)
disabled, disable_valid = read_saved(self.params, 'DisableOpenpilotLongitudinal', 8)
self.enabled = bool(master == (b'1', True) and safe_valid and safe in (None, b'0') and
disable_valid and disabled in (None, b'0'))
if self.maneuver:
self.enabled = self.enabled and read_saved(self.params, 'LongitudinalManeuverMode', 8) == (b'1', True)
except (OSError, RuntimeError, TypeError, ValueError):
self.enabled = False
return self.enabled