mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 05:23:41 +08:00
ef11470b30
Register GM controllers, car state, distance-button actions and feature capabilities against the shared platform groups.
36 lines
1.5 KiB
Python
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
|