4
4
from opendbc .can .can_define import CANDefine
5
5
from selfdrive .car .interfaces import CarStateBase
6
6
from selfdrive .car .chrysler .values import DBC , STEER_THRESHOLD , CAR
7
+
8
+
7
9
class CarState (CarStateBase ):
8
10
def __init__ (self , CP ):
9
11
super ().__init__ (CP )
10
12
can_define = CANDefine (DBC [CP .carFingerprint ]["pt" ])
11
13
self .shifter_values = can_define .dv ["Transmission_Status" ]["Gear_State" ]
12
14
self .lkasdisabled = 0
13
15
self .lkasbuttonprev = 0
14
-
16
+
15
17
def update (self , cp , cp_cam ):
16
18
17
- ret = car .CarState .new_message ()
19
+ ret = car .CarState .new_message ()
18
20
19
- # lock info
21
+ # lock info
20
22
ret .doorOpen = any ([cp .vl ["BCM_1" ]["Driver_Door_Ajar" ],
21
23
cp .vl ["BCM_1" ]["Passenger_Door_Ajar" ],
22
24
cp .vl ["BCM_1" ]["Left_Rear_Door_Ajar" ],
23
25
cp .vl ["BCM_1" ]["Right_Rear_Door_Ajar" ]])
24
- ret .seatbeltUnlatched = cp .vl ["ORC_1" ]['Driver_Seatbelt_Status' ] == 1 # 1 is unbuckled
26
+ ret .seatbeltUnlatched = cp .vl ["ORC_1" ]['Driver_Seatbelt_Status' ] == 1 # 1 is unbuckled
25
27
26
28
# brake pedal
27
- ret .brakePressed = cp .vl ["ESP_1" ]['Brake_Pedal_State' ] == 1 # Physical brake pedal switch
29
+ ret .brakePressed = cp .vl ["ESP_1" ]['Brake_Pedal_State' ] == 1 # Physical brake pedal switch
28
30
ret .brake = 0
29
31
30
32
# gas pedal
31
33
ret .gas = cp .vl ["ECM_5" ]["Accelerator_Position" ]
32
- ret .gasPressed = ret .gas > 1e-5
33
-
34
- # car speed
34
+ ret .gasPressed = ret .gas > 1e-5
35
+
36
+ # car speed
35
37
ret .vEgoRaw = cp .vl ["ESP_8" ]["Vehicle_Speed" ] * CV .KPH_TO_MS
36
38
ret .vEgo , ret .aEgo = self .update_speed_kf (ret .vEgoRaw )
37
39
ret .standstill = not ret .vEgoRaw > 0.001
38
40
ret .wheelSpeeds = self .get_wheel_speeds (
39
- cp .vl ["ESP_6" ]["Wheel_RPM_Front_Left" ],
40
- cp .vl ["ESP_6" ]["Wheel_RPM_Rear_Right" ],
41
- cp .vl ["ESP_6" ]["Wheel_RPM_Rear_Left" ],
42
- cp .vl ["ESP_6" ]["Wheel_RPM_Front_Right" ],
43
- unit = 1 ,
41
+ cp .vl ["ESP_6" ]["Wheel_RPM_Front_Left" ],
42
+ cp .vl ["ESP_6" ]["Wheel_RPM_Rear_Right" ],
43
+ cp .vl ["ESP_6" ]["Wheel_RPM_Rear_Left" ],
44
+ cp .vl ["ESP_6" ]["Wheel_RPM_Front_Right" ],
45
+ unit = 1 ,
44
46
)
45
- #ret.aEgo = cp.vl["ESP_4"]["Acceleration"] #m/s2
46
- #ret.yawRate = cp.vl["ESP_4"]["Yaw_Rate"] #deg/s
47
+ # ret.aEgo = cp.vl["ESP_4"]["Acceleration"] #m/s2
48
+ # ret.yawRate = cp.vl["ESP_4"]["Yaw_Rate"] #deg/s
47
49
48
50
# button presses
49
51
ret .leftBlinker = (cp .vl ["Steering_Column_Commands" ]["Turn_Signal_Status" ] == 1 )
50
52
ret .rightBlinker = (cp .vl ["Steering_Column_Commands" ]["Turn_Signal_Status" ] == 2 )
51
53
ret .genericToggle = bool (cp .vl ["Steering_Column_Commands" ]["High_Beam_Lever_Status" ])
52
54
53
- # steering wheel
55
+ # steering wheel
54
56
ret .steeringAngleDeg = cp .vl ["Steering_Column_Angle_Status" ]["Steering_Wheel_Angle" ]
55
57
ret .steeringRateDeg = cp .vl ["Steering_Column_Angle_Status" ]["Steering_Rate" ]
56
58
ret .steeringTorque = cp .vl ["EPS_2" ]["Steering_Column_Torque" ]
57
59
ret .steeringTorqueEps = cp .vl ["EPS_2" ]["EPS_Motor_Torque" ]
58
60
ret .steeringPressed = abs (ret .steeringTorque ) > STEER_THRESHOLD
59
- ret .espDisabled = (cp .vl ["Center_Stack_1" ]["Traction_Button" ] == 1 ) # button is pressed. This doesn't mean ESP is diabled .
61
+ ret .espDisabled = (cp .vl ["Center_Stack_1" ]["Traction_Button" ] == 1 ) # button is pressed. This doesn't mean ESP is disabled .
60
62
self .frame = int (cp .vl ["EPS_2" ]["COUNTER" ])
61
63
# steer_state = cp.vl["EPS_2"]["LKAS_STATE"]
62
64
# ret.steerFaultPermanent = steer_state == 4 or (steer_state == 0 and ret.vEgo > self.CP.minSteerSpeed)
63
65
64
66
# gear
65
67
ret .gearShifter = self .parse_gear_shifter (self .shifter_values .get (cp .vl ["Transmission_Status" ]["Gear_State" ], None ))
66
68
67
- # cruise state
69
+ # cruise state
68
70
self .lkas_counter = cp_cam .vl ["DAS_3" ]["COUNTER" ]
69
71
self .lanelines = cp_cam .vl ["DAS_6" ]["LKAS_LANE_LINES" ]
70
72
self .iconcolor = cp_cam .vl ["DAS_6" ]["LKAS_ICON_COLOR" ]
71
- self .lkas_car_model = cp_cam .vl ["DAS_6" ]["CAR_MODEL" ]
73
+ self .lkas_car_model = cp_cam .vl ["DAS_6" ]["CAR_MODEL" ]
72
74
self .lkasalerts = cp_cam .vl ["DAS_6" ]["LKAS_ALERTS" ]
73
75
self .accaccel = cp .vl ["Cruise_Control_Buttons" ]["ACC_Accel" ]
74
76
self .accdecel = cp .vl ["Cruise_Control_Buttons" ]["ACC_Decel" ]
@@ -81,91 +83,88 @@ def update(self, cp, cp_cam):
81
83
self .button_counter = cp .vl ["Cruise_Control_Buttons" ]["COUNTER" ]
82
84
self .cruise = cp .vl ["Cruise_Control_Buttons" ]
83
85
84
-
85
- if self .CP .carFingerprint in (CAR .PACIFICA_2017_HYBRID , CAR .PACIFICA_2018_HYBRID , CAR .PACIFICA_2019_HYBRID , CAR .PACIFICA_2018 , CAR .PACIFICA_2020 , CAR .JEEP_CHEROKEE_2019 , CAR .JEEP_CHEROKEE ):
86
- self .lkasbutton = (cp .vl ["Center_Stack_1" ]["LKAS_Button" ] == 1 )
87
- #if self.lkasbutton ==1 and self.lkasdisabled== 0 and self.lkasbuttonprev == 0:
88
- # self.lkasdisabled = 1
89
- #elif self.lkasbutton ==1 and self.lkasdisabled== 1 and self.lkasbuttonprev == 0:
90
- # self.lkasdisabled = 0
91
- self .lkasbuttonprev = self .lkasbutton
92
- ret .cruiseState .enabled = cp .vl ["DAS_3" ]["ACC_Engaged" ] == 1 # and self.lkasdisabled == 0 # ACC is green.
93
- ret .cruiseState .standstill = cp .vl ["DAS_3" ]["ACC_StandStill" ] == 1
94
- ret .cruiseState .speed = cp .vl ["DAS_4" ]["ACC_Set_Speed" ] * CV .KPH_TO_MS
95
- # ACC_Activation_Status is a three bit msg, 0 is off, 1 and 2 are Non-ACC mode, 3 and 4 are ACC mode
96
- ret .cruiseState .available = cp .vl ["DAS_4" ]['ACC_Activation_Status' ] in [3 , 4 ] #3 ACCOn and 4 ACCSet
97
- ret .cruiseState .nonAdaptive = cp .vl ["DAS_4" ]["ACC_Activation_Status" ] in (1 , 2 ) #1 NormalCCOn and 2 NormalCCSet
98
- #ret.cruiseState.speedOffset = ret.cruiseState.speed - ret.vEgo
99
- self .dashboard = cp .vl ["DAS_4" ]
100
- self .steer_state = cp .vl ["EPS_2" ]["Torque_Overlay_Status" ]
101
- ret .steerFaultPermanent = self .steer_state == 4 or (self .steer_state == 0 and ret .vEgo > self .CP .minSteerSpeed )
102
-
103
- if self .CP .carFingerprint in (CAR .RAM_1500 , CAR .RAM_2500 ):
86
+ if self .CP .carFingerprint == CAR .RAM_1500 :
104
87
self .lkasbutton = (cp .vl ["Center_Stack_2" ]["LKAS_Button" ] == 1 ) or (cp .vl ["Center_Stack_1" ]["LKAS_Button" ] == 1 )
105
- if self .lkasbutton == 1 and self .lkasdisabled == 0 and self .lkasbuttonprev == 0 :
88
+ if self .lkasbutton == 1 and self .lkasdisabled == 0 and self .lkasbuttonprev == 0 :
106
89
self .lkasdisabled = 1
107
- elif self .lkasbutton == 1 and self .lkasdisabled == 1 and self .lkasbuttonprev == 0 :
90
+ elif self .lkasbutton == 1 and self .lkasdisabled == 1 and self .lkasbuttonprev == 0 :
108
91
self .lkasdisabled = 0
109
92
self .lkasbuttonprev = self .lkasbutton
110
- ret .cruiseState .enabled = cp_cam .vl ["DAS_3" ]["ACC_Engaged" ] == 1 and self .lkasdisabled == 0 # ACC is green.
93
+ ret .cruiseState .enabled = cp_cam .vl ["DAS_3" ]["ACC_Engaged" ] == 1 and self .lkasdisabled == 0 # ACC is green.
111
94
ret .cruiseState .standstill = cp_cam .vl ["DAS_3" ]["ACC_StandStill" ] == 1
112
95
ret .cruiseState .speed = cp_cam .vl ["DAS_4" ]["ACC_Set_Speed" ] * CV .KPH_TO_MS
113
96
# ACC_Activation_Status is a three bit msg, 0 is off, 1 and 2 are Non-ACC mode, 3 and 4 are ACC mode
114
- ret .cruiseState .available = cp_cam .vl ["DAS_4" ]['ACC_Activation_Status' ] in [3 , 4 ] #3 ACCOn and 4 ACCSet
115
- ret .cruiseState .nonAdaptive = cp_cam .vl ["DAS_4" ]["ACC_Activation_Status" ] in [1 , 2 ] # 1 NormalCCOn and 2 NormalCCSet
116
- self .autoHighBeamBit = cp_cam .vl ["DAS_6" ]['Auto_High_Beam' ] # Auto High Beam isn't Located in this message on chrysler or jeep currently located in 729 message
117
- #ret.cruiseState.speedOffset = ret.cruiseState.speed - ret.vEgo
97
+ ret .cruiseState .available = cp_cam .vl ["DAS_4" ]['ACC_Activation_Status' ] in [3 , 4 ] # 3 ACCOn and 4 ACCSet
98
+ ret .cruiseState .nonAdaptive = cp_cam .vl ["DAS_4" ]["ACC_Activation_Status" ] in [1 , 2 ] # 1 NormalCCOn and 2 NormalCCSet
99
+ self .autoHighBeamBit = cp_cam .vl ["DAS_6" ]['Auto_High_Beam' ] # Auto High Beam isn't Located in this message on chrysler or jeep currently located in 729 message
100
+ # ret.cruiseState.speedOffset = ret.cruiseState.speed - ret.vEgo
118
101
self .dashboard = cp_cam .vl ["DAS_4" ]
119
- ret .steerFaultTemporary = cp .vl ["EPS_3" ]["DASM_FAULT" ]== 1
120
-
102
+ ret .steerFaultTemporary = cp .vl ["EPS_3" ]["DASM_FAULT" ] == 1
103
+ else :
104
+ self .lkasbutton = (cp .vl ["Center_Stack_1" ]["LKAS_Button" ] == 1 )
105
+ # if self.lkasbutton ==1 and self.lkasdisabled== 0 and self.lkasbuttonprev == 0:
106
+ # self.lkasdisabled = 1
107
+ # elif self.lkasbutton ==1 and self.lkasdisabled== 1 and self.lkasbuttonprev == 0:
108
+ # self.lkasdisabled = 0
109
+ self .lkasbuttonprev = self .lkasbutton
110
+ ret .cruiseState .enabled = cp .vl ["DAS_3" ]["ACC_Engaged" ] == 1 # and self.lkasdisabled == 0 # ACC is green.
111
+ ret .cruiseState .standstill = cp .vl ["DAS_3" ]["ACC_StandStill" ] == 1
112
+ ret .cruiseState .speed = cp .vl ["DAS_4" ]["ACC_Set_Speed" ] * CV .KPH_TO_MS
113
+ # ACC_Activation_Status is a three bit msg, 0 is off, 1 and 2 are Non-ACC mode, 3 and 4 are ACC mode
114
+ ret .cruiseState .available = cp .vl ["DAS_4" ]['ACC_Activation_Status' ] in [3 , 4 ] # 3 ACCOn and 4 ACCSet
115
+ ret .cruiseState .nonAdaptive = cp .vl ["DAS_4" ]["ACC_Activation_Status" ] in (1 , 2 ) # 1 NormalCCOn and 2 NormalCCSet
116
+ # ret.cruiseState.speedOffset = ret.cruiseState.speed - ret.vEgo
117
+ self .dashboard = cp .vl ["DAS_4" ]
118
+ self .steer_state = cp .vl ["EPS_2" ]["Torque_Overlay_Status" ]
119
+ ret .steerFaultPermanent = self .steer_state == 4 or (self .steer_state == 0 and ret .vEgo > self .CP .minSteerSpeed )
121
120
122
- # blindspot sensors
121
+ # blindspot sensors
123
122
if self .CP .enableBsm :
124
123
ret .leftBlindspot = cp .vl ["BSM_1" ]["Blind_Spot_Monitor_Left" ] == 1
125
- ret .rightBlindspot = cp .vl ["BSM_1" ]["Blind_Spot_Monitor_Right" ] == 1
124
+ ret .rightBlindspot = cp .vl ["BSM_1" ]["Blind_Spot_Monitor_Right" ] == 1
126
125
127
126
return ret
128
127
129
128
@staticmethod
130
129
def get_can_parser (CP ):
131
130
signals = [
132
131
# sig_name, sig_address, default
133
- ("Gear_State" , "Transmission_Status" ), # Gear Position
134
- ("Vehicle_Speed" , "ESP_8" ),# Vehicle Speed
135
- ("Acceleration" , "ESP_4" ),# Acceleration Rate
136
- ("Yaw_Rate" , "ESP_4" ),# Yaw Rate
137
- ("Wheel_RPM_Front_Left" , "ESP_6" ),# FL Wheel Speed
138
- ("Wheel_RPM_Front_Right" , "ESP_6" ),# FR Wheel Speed
139
- ("Wheel_RPM_Rear_Left" , "ESP_6" ),# RL Wheel Speed
140
- ("Wheel_RPM_Rear_Right" , "ESP_6" ),# RR Wheel Speed
141
- ("Accelerator_Position" , "ECM_5" ), # Accelerator Position
142
- ("Brake_Pedal_State" , "ESP_1" ),# Brake Pedal Pressed
143
- ("Steering_Wheel_Angle" , "Steering_Column_Angle_Status" ),# Steering Angle
144
- ("Steering_Rate" , "Steering_Column_Angle_Status" ),# Steering rate
145
- ("Steering_Column_Torque" , "EPS_2" ),# EPS Driver applied torque
146
- ("EPS_Motor_Torque" , "EPS_2" ),# EPS Motor Torque output
132
+ ("Gear_State" , "Transmission_Status" ), # Gear Position
133
+ ("Vehicle_Speed" , "ESP_8" ), # Vehicle Speed
134
+ ("Acceleration" , "ESP_4" ), # Acceleration Rate
135
+ ("Yaw_Rate" , "ESP_4" ), # Yaw Rate
136
+ ("Wheel_RPM_Front_Left" , "ESP_6" ), # FL Wheel Speed
137
+ ("Wheel_RPM_Front_Right" , "ESP_6" ), # FR Wheel Speed
138
+ ("Wheel_RPM_Rear_Left" , "ESP_6" ), # RL Wheel Speed
139
+ ("Wheel_RPM_Rear_Right" , "ESP_6" ), # RR Wheel Speed
140
+ ("Accelerator_Position" , "ECM_5" ), # Accelerator Position
141
+ ("Brake_Pedal_State" , "ESP_1" ), # Brake Pedal Pressed
142
+ ("Steering_Wheel_Angle" , "Steering_Column_Angle_Status" ), # Steering Angle
143
+ ("Steering_Rate" , "Steering_Column_Angle_Status" ), # Steering rate
144
+ ("Steering_Column_Torque" , "EPS_2" ), # EPS Driver applied torque
145
+ ("EPS_Motor_Torque" , "EPS_2" ), # EPS Motor Torque output
147
146
("Torque_Overlay_Status" , "EPS_2" ),
148
- ("Traction_Button" , "Center_Stack_1" ),# Traction Control Button
149
- ("LKAS_Button" , "Center_Stack_1" ),# LKAS Button
150
- ("Turn_Signal_Status" , "Steering_Column_Commands" ),#Blinker
151
- ("High_Beam_Lever_Status" , "Steering_Column_Commands" ),# High Beam Lever
152
- ("ACC_Accel" , "Cruise_Control_Buttons" ),# ACC Accel Button
153
- ("ACC_Decel" , "Cruise_Control_Buttons" ),# ACC Decel Button
154
- ("ACC_Cancel" , "Cruise_Control_Buttons" ),# ACC Cancel Button
155
- ("ACC_Distance_Dec" , "Cruise_Control_Buttons" ),# ACC Distance Decrement Button
156
- ("ACC_Distance_Inc" , "Cruise_Control_Buttons" ),# ACC Distance Increment Button
157
- ("ACC_Resume" , "Cruise_Control_Buttons" ),# ACC Resume Button
158
- ("Cruise_OnOff" , "Cruise_Control_Buttons" ),# Cruise On Off Button
159
- ("ACC_OnOff" , "Cruise_Control_Buttons" ),# ACC On Off Button
160
- ("COUNTER" , "Cruise_Control_Buttons" ),# ACC Counter Button
161
- ("ACC_Distance_Inc" , "Cruise_Control_Buttons" ),# ACC Distance Increase Button
162
- ("Driver_Door_Ajar" , "BCM_1" ),# driver Door
163
- ("Passenger_Door_Ajar" , "BCM_1" ),# Passenger Door
164
- ("Left_Rear_Door_Ajar" , "BCM_1" ),# Driver Rear Door
165
- ("Right_Rear_Door_Ajar" , "BCM_1" ),# Passenger Rear Door
166
- ("Driver_Seatbelt_Status" , "ORC_1" ), # Driver Sear Belt
167
- ("COUNTER" , "EPS_2" ),# EPS Counter
168
- ("DASM_FAULT" , "EPS_3" ),# EPS Fault
147
+ ("Traction_Button" , "Center_Stack_1" ), # Traction Control Button
148
+ ("LKAS_Button" , "Center_Stack_1" ), # LKAS Button
149
+ ("Turn_Signal_Status" , "Steering_Column_Commands" ), # Blinker
150
+ ("High_Beam_Lever_Status" , "Steering_Column_Commands" ), # High Beam Lever
151
+ ("ACC_Accel" , "Cruise_Control_Buttons" ), # ACC Accel Button
152
+ ("ACC_Decel" , "Cruise_Control_Buttons" ), # ACC Decel Button
153
+ ("ACC_Cancel" , "Cruise_Control_Buttons" ), # ACC Cancel Button
154
+ ("ACC_Distance_Dec" , "Cruise_Control_Buttons" ), # ACC Distance Decrement Button
155
+ ("ACC_Distance_Inc" , "Cruise_Control_Buttons" ), # ACC Distance Increment Button
156
+ ("ACC_Resume" , "Cruise_Control_Buttons" ), # ACC Resume Button
157
+ ("Cruise_OnOff" , "Cruise_Control_Buttons" ), # Cruise On Off Button
158
+ ("ACC_OnOff" , "Cruise_Control_Buttons" ), # ACC On Off Button
159
+ ("COUNTER" , "Cruise_Control_Buttons" ), # ACC Counter Button
160
+ ("ACC_Distance_Inc" , "Cruise_Control_Buttons" ), # ACC Distance Increase Button
161
+ ("Driver_Door_Ajar" , "BCM_1" ), # driver Door
162
+ ("Passenger_Door_Ajar" , "BCM_1" ), # Passenger Door
163
+ ("Left_Rear_Door_Ajar" , "BCM_1" ), # Driver Rear Door
164
+ ("Right_Rear_Door_Ajar" , "BCM_1" ), # Passenger Rear Door
165
+ ("Driver_Seatbelt_Status" , "ORC_1" ), # Driver Sear Belt
166
+ ("COUNTER" , "EPS_2" ), # EPS Counter
167
+ ("DASM_FAULT" , "EPS_3" ), # EPS Fault
169
168
]
170
169
171
170
checks = [
@@ -193,27 +192,25 @@ def get_can_parser(CP):
193
192
]
194
193
checks += [("BSM_1" , 2 )]
195
194
196
- if CP .carFingerprint in (CAR .PACIFICA_2017_HYBRID , CAR .PACIFICA_2018_HYBRID , CAR .PACIFICA_2019_HYBRID , CAR .PACIFICA_2018 , CAR .PACIFICA_2020 , CAR .JEEP_CHEROKEE_2019 , CAR .JEEP_CHEROKEE ):
195
+ if CP .carFingerprint == CAR .RAM_1500 :
196
+ signals += [
197
+ ("LKAS_Button" , "Center_Stack_2" ), # LKAS Button
198
+ ]
199
+ checks += [
200
+ ("Center_Stack_2" , 1 ),
201
+ ]
202
+ else :
197
203
signals += [
198
- ("ACC_Engaged" , "DAS_3" ),# ACC Engaged
199
- ("ACC_StandStill" , "DAS_3" ),# ACC Engaged
204
+ ("ACC_Engaged" , "DAS_3" ), # ACC Engaged
205
+ ("ACC_StandStill" , "DAS_3" ), # ACC Engaged
200
206
("ACC_Set_Speed" , "DAS_4" ),
201
207
("ACC_Activation_Status" , "DAS_4" ),
202
208
]
203
209
checks += [
204
210
("DAS_3" , 50 ),
205
211
("DAS_4" , 50 ),
206
- ]
207
-
208
- if CP .carFingerprint in (CAR .RAM_1500 , CAR .RAM_2500 ):
209
- signals += [
210
- ("LKAS_Button" , "Center_Stack_2" ),#LKAS Button
211
212
]
212
213
213
- checks += [
214
- ("Center_Stack_2" , 1 ),
215
- ]
216
-
217
214
return CANParser (DBC [CP .carFingerprint ]["pt" ], signals , checks , 0 )
218
215
219
216
@staticmethod
@@ -230,10 +227,10 @@ def get_cam_can_parser(CP):
230
227
("DAS_6" , 15 ),
231
228
]
232
229
233
- if CP .carFingerprint in ( CAR .RAM_1500 , CAR . RAM_2500 ) :
230
+ if CP .carFingerprint == CAR .RAM_1500 :
234
231
signals += [
235
- ("ACC_Engaged" , "DAS_3" ),# ACC Engaged
236
- ("ACC_StandStill" , "DAS_3" ),# ACC Engaged
232
+ ("ACC_Engaged" , "DAS_3" ), # ACC Engaged
233
+ ("ACC_StandStill" , "DAS_3" ), # ACC Engaged
237
234
("COUNTER" , "DAS_3" ),
238
235
("ACC_Set_Speed" , "DAS_4" ),
239
236
("ACC_Activation_Status" , "DAS_4" ),
@@ -242,6 +239,6 @@ def get_cam_can_parser(CP):
242
239
checks += [
243
240
("DAS_3" , 50 ),
244
241
("DAS_4" , 50 ),
245
- ]
242
+ ]
246
243
247
244
return CANParser (DBC [CP .carFingerprint ]["pt" ], signals , checks , 2 )
0 commit comments