7
7
# 2 = ACC-CAN - camera side
8
8
# 3 = F-CAN A - OBDII port
9
9
10
- def get_pt_bus (car_fingerprint ):
11
- return 1 if car_fingerprint in HONDA_BOSCH else 0
10
+ # CAN bus layout with giraffe
11
+ # 0 = F-CAN B - powertrain
12
+ # 1 = ACC-CAN - camera side
13
+ # 2 = ACC-CAN - radar side
12
14
15
+ def get_pt_bus (car_fingerprint , has_relay ):
16
+ return 1 if car_fingerprint in HONDA_BOSCH and has_relay else 0
13
17
14
- def get_lkas_cmd_bus (car_fingerprint , radar_disabled = False ):
18
+
19
+ def get_lkas_cmd_bus (car_fingerprint , has_relay , radar_disabled = False ):
15
20
if radar_disabled :
16
21
# when radar is disabled, steering commands are sent directly to powertrain bus
17
- return get_pt_bus (car_fingerprint )
22
+ return get_pt_bus (car_fingerprint , has_relay )
18
23
# normally steering commands are sent to radar, which forwards them to powertrain bus
19
- return 0
24
+ return 2 if car_fingerprint in HONDA_BOSCH and not has_relay else 0
20
25
21
26
22
- def create_brake_command (packer , apply_brake , pump_on , pcm_override , pcm_cancel_cmd , fcw , idx , car_fingerprint , stock_brake ):
27
+ def create_brake_command (packer , apply_brake , pump_on , pcm_override , pcm_cancel_cmd , fcw , idx , car_fingerprint , has_relay , stock_brake ):
23
28
# TODO: do we loose pressure if we keep pump off for long?
24
29
brakelights = apply_brake > 0
25
30
brake_rq = apply_brake > 0
@@ -40,13 +45,13 @@ def create_brake_command(packer, apply_brake, pump_on, pcm_override, pcm_cancel_
40
45
"AEB_REQ_2" : 0 ,
41
46
"AEB_STATUS" : 0 ,
42
47
}
43
- bus = get_pt_bus (car_fingerprint )
48
+ bus = get_pt_bus (car_fingerprint , has_relay )
44
49
return packer .make_can_msg ("BRAKE_COMMAND" , bus , values , idx )
45
50
46
51
47
- def create_acc_commands (packer , enabled , accel , gas , idx , stopping , starting , car_fingerprint ):
52
+ def create_acc_commands (packer , enabled , accel , gas , idx , stopping , starting , car_fingerprint , has_relay ):
48
53
commands = []
49
- bus = get_pt_bus (car_fingerprint )
54
+ bus = get_pt_bus (car_fingerprint , has_relay )
50
55
51
56
control_on = 5 if enabled else 0
52
57
# no gas = -30000
@@ -79,31 +84,31 @@ def create_acc_commands(packer, enabled, accel, gas, idx, stopping, starting, ca
79
84
80
85
return commands
81
86
82
- def create_steering_control (packer , apply_steer , lkas_active , car_fingerprint , idx , radar_disabled ):
87
+ def create_steering_control (packer , apply_steer , lkas_active , car_fingerprint , idx , has_relay , radar_disabled ):
83
88
values = {
84
89
"STEER_TORQUE" : apply_steer if lkas_active else 0 ,
85
90
"STEER_TORQUE_REQUEST" : lkas_active ,
86
91
}
87
- bus = get_lkas_cmd_bus (car_fingerprint , radar_disabled )
92
+ bus = get_lkas_cmd_bus (car_fingerprint , has_relay , radar_disabled )
88
93
return packer .make_can_msg ("STEERING_CONTROL" , bus , values , idx )
89
94
90
95
91
- def create_bosch_supplemental_1 (packer , car_fingerprint , idx ):
96
+ def create_bosch_supplemental_1 (packer , car_fingerprint , idx , has_relay ):
92
97
# non-active params
93
98
values = {
94
99
"SET_ME_X04" : 0x04 ,
95
100
"SET_ME_X80" : 0x80 ,
96
101
"SET_ME_X10" : 0x10 ,
97
102
}
98
- bus = get_lkas_cmd_bus (car_fingerprint )
103
+ bus = get_lkas_cmd_bus (car_fingerprint , has_relay )
99
104
return packer .make_can_msg ("BOSCH_SUPPLEMENTAL_1" , bus , values , idx )
100
105
101
106
102
- def create_ui_commands (packer , pcm_speed , hud , car_fingerprint , is_metric , idx , openpilot_longitudinal_control , stock_hud ):
107
+ def create_ui_commands (packer , pcm_speed , hud , car_fingerprint , is_metric , idx , has_relay , openpilot_longitudinal_control , stock_hud ):
103
108
commands = []
104
- bus_pt = get_pt_bus (car_fingerprint )
109
+ bus_pt = get_pt_bus (car_fingerprint , has_relay )
105
110
radar_disabled = car_fingerprint in HONDA_BOSCH and openpilot_longitudinal_control
106
- bus_lkas = get_lkas_cmd_bus (car_fingerprint , radar_disabled )
111
+ bus_lkas = get_lkas_cmd_bus (car_fingerprint , has_relay , radar_disabled )
107
112
108
113
if openpilot_longitudinal_control :
109
114
if car_fingerprint in HONDA_BOSCH :
@@ -153,10 +158,10 @@ def create_ui_commands(packer, pcm_speed, hud, car_fingerprint, is_metric, idx,
153
158
return commands
154
159
155
160
156
- def spam_buttons_command (packer , button_val , idx , car_fingerprint ):
161
+ def spam_buttons_command (packer , button_val , idx , car_fingerprint , has_relay ):
157
162
values = {
158
163
'CRUISE_BUTTONS' : button_val ,
159
164
'CRUISE_SETTING' : 0 ,
160
165
}
161
- bus = get_pt_bus (car_fingerprint )
166
+ bus = get_pt_bus (car_fingerprint , has_relay )
162
167
return packer .make_can_msg ("SCM_BUTTONS" , bus , values , idx )
0 commit comments