mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-02 12:02:09 +08:00
Subaru: Signals Cleanup (#28602)
Co-authored-by: Cameron Clough <cameronjclough@gmail.com> old-commit-hash: 803c077dc1f4b1b7aafe6df11f168159f986d602
This commit is contained in:
+1
-1
Submodule opendbc updated: aa044ea945...f241a87591
+1
-1
Submodule panda updated: 58b80f3b77...b2cf197679
@@ -1,7 +1,7 @@
|
||||
from opendbc.can.packer import CANPacker
|
||||
from selfdrive.car import apply_driver_steer_torque_limits
|
||||
from selfdrive.car.subaru import subarucan
|
||||
from selfdrive.car.subaru.values import DBC, GLOBAL_GEN2, PREGLOBAL_CARS, CarControllerParams, SubaruFlags
|
||||
from selfdrive.car.subaru.values import DBC, GLOBAL_GEN2, PREGLOBAL_CARS, CanBus, CarControllerParams, SubaruFlags
|
||||
|
||||
|
||||
class CarController:
|
||||
@@ -44,7 +44,6 @@ class CarController:
|
||||
|
||||
|
||||
# *** alerts and pcm cancel ***
|
||||
|
||||
if self.CP.carFingerprint in PREGLOBAL_CARS:
|
||||
if self.frame % 5 == 0:
|
||||
# 1 = main, 2 = set shallow, 3 = set deep, 4 = resume shallow, 5 = resume deep
|
||||
@@ -66,7 +65,7 @@ class CarController:
|
||||
|
||||
else:
|
||||
if pcm_cancel_cmd and (self.frame - self.last_cancel_frame) > 0.2:
|
||||
bus = 1 if self.CP.carFingerprint in GLOBAL_GEN2 else 0
|
||||
bus = CanBus.alt if self.CP.carFingerprint in GLOBAL_GEN2 else CanBus.main
|
||||
can_sends.append(subarucan.create_es_distance(self.packer, CS.es_distance_msg, bus, pcm_cancel_cmd))
|
||||
self.last_cancel_frame = self.frame
|
||||
|
||||
@@ -78,7 +77,7 @@ class CarController:
|
||||
hud_control.leftLaneDepart, hud_control.rightLaneDepart))
|
||||
|
||||
if self.CP.flags & SubaruFlags.SEND_INFOTAINMENT:
|
||||
can_sends.append(subarucan.create_infotainmentstatus(self.packer, CS.es_infotainmentstatus_msg, hud_control.visualAlert))
|
||||
can_sends.append(subarucan.create_es_infotainment(self.packer, CS.es_infotainment_msg, hud_control.visualAlert))
|
||||
|
||||
new_actuators = actuators.copy()
|
||||
new_actuators.steer = self.apply_steer_last / self.p.STEER_MAX
|
||||
|
||||
@@ -4,7 +4,7 @@ from opendbc.can.can_define import CANDefine
|
||||
from common.conversions import Conversions as CV
|
||||
from selfdrive.car.interfaces import CarStateBase
|
||||
from opendbc.can.parser import CANParser
|
||||
from selfdrive.car.subaru.values import DBC, CAR, GLOBAL_GEN2, PREGLOBAL_CARS, SubaruFlags
|
||||
from selfdrive.car.subaru.values import DBC, CAR, GLOBAL_GEN2, PREGLOBAL_CARS, CanBus, SubaruFlags
|
||||
|
||||
|
||||
class CarState(CarStateBase):
|
||||
@@ -87,12 +87,12 @@ class CarState(CarStateBase):
|
||||
self.es_distance_msg = copy.copy(cp_es_distance.vl["ES_Distance"])
|
||||
self.es_dashstatus_msg = copy.copy(cp_cam.vl["ES_DashStatus"])
|
||||
if self.CP.flags & SubaruFlags.SEND_INFOTAINMENT:
|
||||
self.es_infotainmentstatus_msg = copy.copy(cp_cam.vl["INFOTAINMENT_STATUS"])
|
||||
self.es_infotainment_msg = copy.copy(cp_cam.vl["ES_Infotainment"])
|
||||
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def get_common_global_signals():
|
||||
def get_common_global_body_signals():
|
||||
signals = [
|
||||
("Cruise_On", "CruiseControl"),
|
||||
("Cruise_Activated", "CruiseControl"),
|
||||
@@ -111,20 +111,10 @@ class CarState(CarStateBase):
|
||||
return signals, checks
|
||||
|
||||
@staticmethod
|
||||
def get_global_es_brake_signals():
|
||||
def get_common_global_es_signals():
|
||||
signals = [
|
||||
("AEB_Status", "ES_Brake"),
|
||||
("Brake_Pressure", "ES_Brake"),
|
||||
]
|
||||
checks = [
|
||||
("ES_Brake", 20),
|
||||
]
|
||||
|
||||
return signals, checks
|
||||
|
||||
@staticmethod
|
||||
def get_global_es_distance_signals():
|
||||
signals = [
|
||||
("COUNTER", "ES_Distance"),
|
||||
("CHECKSUM", "ES_Distance"),
|
||||
("Signal1", "ES_Distance"),
|
||||
@@ -146,7 +136,9 @@ class CarState(CarStateBase):
|
||||
("Cruise_Resume", "ES_Distance"),
|
||||
("Signal6", "ES_Distance"),
|
||||
]
|
||||
|
||||
checks = [
|
||||
("ES_Brake", 20),
|
||||
("ES_Distance", 20),
|
||||
]
|
||||
|
||||
@@ -193,8 +185,8 @@ class CarState(CarStateBase):
|
||||
|
||||
if CP.carFingerprint not in PREGLOBAL_CARS:
|
||||
if CP.carFingerprint not in GLOBAL_GEN2:
|
||||
signals += CarState.get_common_global_signals()[0]
|
||||
checks += CarState.get_common_global_signals()[1]
|
||||
signals += CarState.get_common_global_body_signals()[0]
|
||||
checks += CarState.get_common_global_body_signals()[1]
|
||||
|
||||
signals += [
|
||||
("Steer_Warning", "Steering_Torque"),
|
||||
@@ -233,7 +225,7 @@ class CarState(CarStateBase):
|
||||
("CruiseControl", 50),
|
||||
]
|
||||
|
||||
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 0)
|
||||
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, CanBus.main)
|
||||
|
||||
@staticmethod
|
||||
def get_cam_can_parser(CP):
|
||||
@@ -319,32 +311,28 @@ class CarState(CarStateBase):
|
||||
]
|
||||
|
||||
if CP.carFingerprint not in GLOBAL_GEN2:
|
||||
signals += CarState.get_global_es_distance_signals()[0]
|
||||
signals += CarState.get_global_es_brake_signals()[0]
|
||||
checks += CarState.get_global_es_distance_signals()[1]
|
||||
checks += CarState.get_global_es_brake_signals()[1]
|
||||
signals += CarState.get_common_global_es_signals()[0]
|
||||
checks += CarState.get_common_global_es_signals()[1]
|
||||
|
||||
if CP.flags & SubaruFlags.SEND_INFOTAINMENT:
|
||||
signals += [
|
||||
("COUNTER", "INFOTAINMENT_STATUS"),
|
||||
("CHECKSUM", "INFOTAINMENT_STATUS"),
|
||||
("LKAS_State_Infotainment", "INFOTAINMENT_STATUS"),
|
||||
("LKAS_Blue_Lines", "INFOTAINMENT_STATUS"),
|
||||
("Signal1", "INFOTAINMENT_STATUS"),
|
||||
("Signal2", "INFOTAINMENT_STATUS"),
|
||||
("COUNTER", "ES_Infotainment"),
|
||||
("CHECKSUM", "ES_Infotainment"),
|
||||
("LKAS_State_Infotainment", "ES_Infotainment"),
|
||||
("LKAS_Blue_Lines", "ES_Infotainment"),
|
||||
("Signal1", "ES_Infotainment"),
|
||||
("Signal2", "ES_Infotainment"),
|
||||
]
|
||||
checks.append(("INFOTAINMENT_STATUS", 10))
|
||||
checks.append(("ES_Infotainment", 10))
|
||||
|
||||
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 2)
|
||||
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, CanBus.camera)
|
||||
|
||||
@staticmethod
|
||||
def get_body_can_parser(CP):
|
||||
if CP.carFingerprint in GLOBAL_GEN2:
|
||||
signals, checks = CarState.get_common_global_signals()
|
||||
signals += CarState.get_global_es_distance_signals()[0]
|
||||
signals += CarState.get_global_es_brake_signals()[0]
|
||||
checks += CarState.get_global_es_distance_signals()[1]
|
||||
checks += CarState.get_global_es_brake_signals()[1]
|
||||
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 1)
|
||||
signals, checks = CarState.get_common_global_body_signals()
|
||||
signals += CarState.get_common_global_es_signals()[0]
|
||||
checks += CarState.get_common_global_es_signals()[1]
|
||||
return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, CanBus.alt)
|
||||
|
||||
return None
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from cereal import car
|
||||
from selfdrive.car.subaru.values import CanBus
|
||||
|
||||
VisualAlert = car.CarControl.HUDControl.VisualAlert
|
||||
|
||||
@@ -102,7 +103,7 @@ def create_es_lkas_state(packer, es_lkas_state_msg, enabled, visual_alert, left_
|
||||
values["LKAS_Left_Line_Visible"] = int(left_line)
|
||||
values["LKAS_Right_Line_Visible"] = int(right_line)
|
||||
|
||||
return packer.make_can_msg("ES_LKAS_State", 0, values)
|
||||
return packer.make_can_msg("ES_LKAS_State", CanBus.main, values)
|
||||
|
||||
|
||||
def create_es_dashstatus(packer, dashstatus_msg):
|
||||
@@ -140,12 +141,12 @@ def create_es_dashstatus(packer, dashstatus_msg):
|
||||
if values["LKAS_State_Msg"] in (2, 3):
|
||||
values["LKAS_State_Msg"] = 0
|
||||
|
||||
return packer.make_can_msg("ES_DashStatus", 0, values)
|
||||
return packer.make_can_msg("ES_DashStatus", CanBus.main, values)
|
||||
|
||||
|
||||
def create_infotainmentstatus(packer, infotainmentstatus_msg, visual_alert):
|
||||
def create_es_infotainment(packer, es_infotainment_msg, visual_alert):
|
||||
# Filter stock LKAS disabled and Keep hands on steering wheel OFF alerts
|
||||
values = {s: infotainmentstatus_msg[s] for s in [
|
||||
values = {s: es_infotainment_msg[s] for s in [
|
||||
"CHECKSUM",
|
||||
"COUNTER",
|
||||
"LKAS_State_Infotainment",
|
||||
@@ -164,7 +165,7 @@ def create_infotainmentstatus(packer, infotainmentstatus_msg, visual_alert):
|
||||
if visual_alert == VisualAlert.fcw:
|
||||
values["LKAS_State_Infotainment"] = 2
|
||||
|
||||
return packer.make_can_msg("INFOTAINMENT_STATUS", 0, values)
|
||||
return packer.make_can_msg("ES_Infotainment", CanBus.main, values)
|
||||
|
||||
|
||||
# *** Subaru Pre-global ***
|
||||
@@ -181,7 +182,7 @@ def create_preglobal_steering_control(packer, apply_steer, steer_req):
|
||||
}
|
||||
values["Checksum"] = subaru_preglobal_checksum(packer, values, "ES_LKAS")
|
||||
|
||||
return packer.make_can_msg("ES_LKAS", 0, values)
|
||||
return packer.make_can_msg("ES_LKAS", CanBus.main, values)
|
||||
|
||||
|
||||
def create_preglobal_es_distance(packer, cruise_button, es_distance_msg):
|
||||
@@ -208,4 +209,4 @@ def create_preglobal_es_distance(packer, cruise_button, es_distance_msg):
|
||||
values["Cruise_Button"] = cruise_button
|
||||
values["Checksum"] = subaru_preglobal_checksum(packer, values, "ES_Distance")
|
||||
|
||||
return packer.make_can_msg("ES_Distance", 0, values)
|
||||
return packer.make_can_msg("ES_Distance", CanBus.main, values)
|
||||
|
||||
@@ -34,6 +34,12 @@ class SubaruFlags(IntFlag):
|
||||
SEND_INFOTAINMENT = 1
|
||||
|
||||
|
||||
class CanBus:
|
||||
main = 0
|
||||
alt = 1
|
||||
camera = 2
|
||||
|
||||
|
||||
class CAR:
|
||||
# Global platform
|
||||
ASCENT = "SUBARU ASCENT LIMITED 2019"
|
||||
|
||||
Reference in New Issue
Block a user