f9fcc7adab
date: 2026-06-28T09:48:35 master commit: da6313dbe95b3f24bb5d8018b0e5f950f5823ca7
52 lines
1.8 KiB
Python
52 lines
1.8 KiB
Python
"""
|
|
Copyright (c) 2021-, Haibin Wen, sunnypilot, and a number of other contributors.
|
|
|
|
This file is part of sunnypilot and is licensed under the MIT License.
|
|
See the LICENSE.md file in the root directory for more details.
|
|
"""
|
|
|
|
from cereal import log, custom
|
|
from opendbc.car import structs
|
|
|
|
from opendbc.car.chrysler.values import RAM_DT
|
|
from openpilot.selfdrive.selfdrived.events import Events
|
|
from openpilot.sunnypilot.selfdrive.selfdrived.events import EventsSP
|
|
|
|
EventName = log.OnroadEvent.EventName
|
|
EventNameSP = custom.OnroadEventSP.EventName
|
|
GearShifter = structs.CarState.GearShifter
|
|
|
|
|
|
class CarSpecificEventsSP:
|
|
def __init__(self, CP: structs.CarParams, CP_SP: structs.CarParamsSP):
|
|
self.CP = CP
|
|
self.CP_SP = CP_SP
|
|
|
|
self.low_speed_alert = False
|
|
|
|
def update(self, CS: structs.CarState, events: Events):
|
|
events_sp = EventsSP()
|
|
|
|
if self.CP.brand == 'chrysler':
|
|
if self.CP.carFingerprint in RAM_DT:
|
|
# remove belowSteerSpeed event from CarSpecificEvents as RAM_DT uses a different logic
|
|
if events.has(EventName.belowSteerSpeed):
|
|
events.remove(EventName.belowSteerSpeed)
|
|
|
|
# TODO-SP: use if/elif to have the gear shifter condition takes precedence over the speed condition
|
|
# TODO-SP: add 1 m/s hysteresis
|
|
if CS.vEgo >= self.CP.minEnableSpeed:
|
|
self.low_speed_alert = False
|
|
if self.CP.minEnableSpeed >= 14.5 and CS.gearShifter != GearShifter.drive:
|
|
self.low_speed_alert = True
|
|
if self.low_speed_alert:
|
|
events.add(EventName.belowSteerSpeed)
|
|
|
|
elif self.CP.brand == 'toyota':
|
|
if self.CP.openpilotLongitudinalControl:
|
|
if CS.cruiseState.standstill and not CS.brakePressed and self.CP_SP.enableGasInterceptor:
|
|
if events.has(EventName.resumeRequired):
|
|
events.remove(EventName.resumeRequired)
|
|
|
|
return events_sp
|