diff --git a/opendbc b/opendbc index 61534fd131..6efaf246a9 160000 --- a/opendbc +++ b/opendbc @@ -1 +1 @@ -Subproject commit 61534fd13162d714432c5685f2c59fafe7a96823 +Subproject commit 6efaf246a90b513995a374a9939e4e051cf1b41c diff --git a/panda b/panda index f24db45955..48d50b6182 160000 --- a/panda +++ b/panda @@ -1 +1 @@ -Subproject commit f24db459559423bd326f6237ffa2a00c42fafda6 +Subproject commit 48d50b6182820a4b8d03462a0c96c2c31074efac diff --git a/selfdrive/car/volkswagen/carcontroller.py b/selfdrive/car/volkswagen/carcontroller.py index 9009ac5d0f..d0f3423120 100644 --- a/selfdrive/car/volkswagen/carcontroller.py +++ b/selfdrive/car/volkswagen/carcontroller.py @@ -66,21 +66,24 @@ class CarController(): cb_pos = 0.0 if lead_visible or CS.out.vEgo < 2.0 else 0.1 # react faster to lead cars, also don't get hung up at DSG clutch release/kiss points when creeping to stop cb_neg = 0.0 if accel < 0 else 0.2 # IDK why, but stock likes to zero this out when accel is negative - secondary_accel = accel if lead_visible else 0 # try matching part of stock behavior, presumably drag/compression brake only if we can get away with it idx = (frame / P.ACC_CONTROL_STEP) % 16 can_sends.append(volkswagencan.create_mqb_acc_06_control(self.packer_pt, CANBUS.pt, enabled, acc_status, accel, self.acc_stopping, self.acc_starting, cb_pos, cb_neg, idx)) can_sends.append(volkswagencan.create_mqb_acc_07_control(self.packer_pt, CANBUS.pt, enabled, - accel, secondary_accel, acc_hold_request, acc_hold_release, + accel, acc_hold_request, acc_hold_release, acc_hold_type, stopping_distance, idx)) if frame % P.ACC_HUD_STEP == 0: idx = (frame / P.ACC_HUD_STEP) % 16 can_sends.append(volkswagencan.create_mqb_acc_02_control(self.packer_pt, CANBUS.pt, CS.tsk_status, - set_speed * CV.MS_TO_KPH, speed_visible, lead_visible, idx)) - can_sends.append(volkswagencan.create_mqb_acc_04_control(self.packer_pt, CANBUS.pt, CS.acc_04_stock_values, idx)) + set_speed * CV.MS_TO_KPH, speed_visible, lead_visible, + idx)) + can_sends.append(volkswagencan.create_mqb_acc_04_control(self.packer_pt, CANBUS.pt, CS.acc_04_stock_values, + idx)) + can_sends.append(volkswagencan.create_mqb_acc_13_control(self.packer_pt, CANBUS.pt, enabled, + CS.acc_13_stock_values)) # **** Steering Controls ************************************************ # diff --git a/selfdrive/car/volkswagen/carstate.py b/selfdrive/car/volkswagen/carstate.py index 03130ec9d2..84a739a9bf 100644 --- a/selfdrive/car/volkswagen/carstate.py +++ b/selfdrive/car/volkswagen/carstate.py @@ -98,6 +98,7 @@ class CarState(CarStateBase): # Update ACC radar status. self.acc_04_stock_values = ext_cp.vl["ACC_04"] + self.acc_13_stock_values = ext_cp.vl["ACC_13"] self.tsk_status = pt_cp.vl["TSK_06"]["TSK_Status"] if self.tsk_status == 2: # ACC okay and enabled, but not currently engaged @@ -273,11 +274,14 @@ class MqbExtraSignals: ("AWV2_Freigabe", "ACC_10", 0), # FCW brake jerk release ("ANB_Teilbremsung_Freigabe", "ACC_10", 0), # AEB partial braking release ("ANB_Zielbremsung_Freigabe", "ACC_10", 0), # AEB target braking release + ("Unknown_Osc_1", "ACC_13", 0), # Unknown oscillating value (checksum/xor?) + ("Unknown_Osc_2", "ACC_13", 0), # Unknown oscillating value (checksum/xor?) ] fwd_radar_checks = [ ("ACC_10", 50), # From J428 ACC radar control module - ("ACC_04", 17), # From J428 ACC radar control module ("ACC_02", 17), # From J428 ACC radar control module + ("ACC_04", 17), # From J428 ACC radar control module + ("ACC_13", 17), # From J428 ACC radar control module ] bsm_radar_signals = [ ("SWA_Infostufe_SWA_li", "SWA_01", 0), # Blind spot object info, left diff --git a/selfdrive/car/volkswagen/volkswagencan.py b/selfdrive/car/volkswagen/volkswagencan.py index 95ca059aa5..afd1fa8443 100644 --- a/selfdrive/car/volkswagen/volkswagencan.py +++ b/selfdrive/car/volkswagen/volkswagencan.py @@ -85,7 +85,7 @@ def create_mqb_acc_06_control(packer, bus, enabled, acc_status, accel, acc_stopp return packer.make_can_msg("ACC_06", bus, values, idx) -def create_mqb_acc_07_control(packer, bus, enabled, accel, secondary_accel, acc_hold_request, acc_hold_release, +def create_mqb_acc_07_control(packer, bus, enabled, accel, acc_hold_request, acc_hold_release, acc_hold_type, stopping_distance, idx): values = { "ACC_Distance_to_Stop": stopping_distance, @@ -93,8 +93,18 @@ def create_mqb_acc_07_control(packer, bus, enabled, accel, secondary_accel, acc_ "ACC_Freewheel_Type": 2 if enabled else 0, "ACC_Hold_Type": acc_hold_type, "ACC_Hold_Release": acc_hold_release, - "ACC_Accel_Secondary": secondary_accel+0.01 if enabled else 3.03, # FIXME: think there are rounding/scaling issues here + "ACC_Accel_Secondary": 3.02, # not using this unless and until we understand its impact "ACC_Accel_TSK": accel if enabled else 3.01, } return packer.make_can_msg("ACC_07", bus, values, idx) + +def create_mqb_acc_13_control(packer, bus, enabled, acc_13_stock_values): + values = acc_13_stock_values.copy() + + values.update({ + "Unknown_Status": 15, + "ACC_Engaged": enabled, + }) + + return packer.make_can_msg("ACC_13", bus, values)