diff --git a/opendbc_repo/opendbc/car/gm/interface.py b/opendbc_repo/opendbc/car/gm/interface.py index d5d68203..c8b71028 100755 --- a/opendbc_repo/opendbc/car/gm/interface.py +++ b/opendbc_repo/opendbc/car/gm/interface.py @@ -200,7 +200,6 @@ class CarInterface(CarInterfaceBase): if candidate in EV_CAR: ret.transmissionType = TransmissionType.direct - ret.safetyConfigs[0].safetyParam |= GMSafetyFlags.EV.value else: ret.transmissionType = TransmissionType.automatic @@ -615,6 +614,7 @@ class CarInterface(CarInterfaceBase): if (ret.networkLocation == NetworkLocation.fwdCamera or candidate in CC_ONLY_CAR) and CAM_MSG not in fingerprint[CanBus.CAMERA] and candidate not in SDGM_CAR: ret.flags |= GMFlags.NO_CAMERA.value + ret.safetyConfigs[0].safetyParam |= GMSafetyFlags.FLAG_GM_NO_CAMERA.value if ACCELERATOR_POS_MSG not in fingerprint[CanBus.POWERTRAIN]: ret.flags |= GMFlags.NO_ACCELERATOR_POS_MSG.value diff --git a/opendbc_repo/opendbc/car/gm/values.py b/opendbc_repo/opendbc/car/gm/values.py index 344b53e2..b1d64c50 100644 --- a/opendbc_repo/opendbc/car/gm/values.py +++ b/opendbc_repo/opendbc/car/gm/values.py @@ -157,7 +157,8 @@ class CarControllerParams: class GMSafetyFlags(IntFlag): HW_CAM = 1 HW_CAM_LONG = 2 - EV = 4 + # Reuses the retired EV safety bit. EV-specific safety handling is no longer needed. + FLAG_GM_NO_CAMERA = 4 FLAG_GM_CC_LONG = 8 FLAG_GM_GAS_INTERCEPTOR = 16 diff --git a/opendbc_repo/opendbc/car/interfaces.py b/opendbc_repo/opendbc/car/interfaces.py index cb0380d4..97f9c19d 100644 --- a/opendbc_repo/opendbc/car/interfaces.py +++ b/opendbc_repo/opendbc/car/interfaces.py @@ -50,6 +50,7 @@ GEAR_SHIFTER_MAP: dict[str, structs.CarState.GearShifter] = { 'D': GearShifter.drive, 'DRIVE': GearShifter.drive, 'S': GearShifter.sport, 'SPORT': GearShifter.sport, 'L': GearShifter.low, 'LOW': GearShifter.low, + 'L2': GearShifter.low, 'L3': GearShifter.low, 'B': GearShifter.brake, 'BRAKE': GearShifter.brake, } diff --git a/opendbc_repo/opendbc/safety/modes/gm.h b/opendbc_repo/opendbc/safety/modes/gm.h index ae1edcb3..551ec4c1 100644 --- a/opendbc_repo/opendbc/safety/modes/gm.h +++ b/opendbc_repo/opendbc/safety/modes/gm.h @@ -522,7 +522,7 @@ static bool gm_fwd_hook(int bus_num, int addr) { static safety_config gm_init(uint16_t param) { const uint16_t GM_PARAM_HW_CAM = 1; const uint16_t GM_PARAM_HW_CAM_LONG = 2; - const uint16_t GM_PARAM_EV = 4; + const uint16_t GM_PARAM_NO_CAMERA = 4; const uint16_t GM_PARAM_CC_LONG = 8; const uint16_t GM_PARAM_PEDAL_INTERCEPTOR = 16; const uint16_t GM_PARAM_NO_ACC = 32; @@ -566,18 +566,23 @@ static safety_config gm_init(uint16_t param) { {0x200, 0, 6, .check_relay = false}, {0x1E1, 0, 7, .check_relay = false}, {0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}}; // pt bus + static const CanMsg GM_CAM_LONG_NO_CAMERA_TX_MSGS[] = {{0x180, 0, 4, .check_relay = false}, {0x315, 0, 5, .check_relay = false}, {0x2CB, 0, 8, .check_relay = false}, {0x370, 0, 6, .check_relay = false}, {0x3D1, 0, 8, .check_relay = false}, // pt bus + {0x184, 2, 8, .check_relay = false}, // camera bus + {0x200, 0, 6, .check_relay = false}, {0x1E1, 0, 7, .check_relay = false}, + {0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}}; // pt bus + static RxCheck gm_rx_checks[] = { - GM_COMMON_RX_CHECKS - - GM_ACC_RX_CHECKS - }; - - static RxCheck gm_ev_rx_checks[] = { - GM_COMMON_RX_CHECKS - {.msg = {{0xBD, 0, 7, 40U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, - - GM_ACC_RX_CHECKS + {.msg = {{0x184, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, + {.msg = {{0x34A, 0, 5, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, + {.msg = {{0x1E1, 0, 7, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, + {0x1E1, 2, 7, 100000U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, + { 0 }}}, + {.msg = {{0xF1, 0, 6, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, + {0xF1, 2, 6, 100000U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, + { 0 }}}, + {.msg = {{0x1C4, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, + {.msg = {{0xC9, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, }; static RxCheck gm_ascm_int_stock_cam_rx_checks[] = { @@ -591,11 +596,11 @@ static safety_config gm_init(uint16_t param) { {0x1E1, 0, 7, .check_relay = false}, {0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}}; // pt bus - static RxCheck gm_no_acc_ev_rx_checks[] = { - GM_COMMON_RX_CHECKS - {.msg = {{0xBD, 0, 7, 40U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, - {.msg = {{0x3D1, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, // Non-ACC PCM - }; + static const CanMsg GM_CAM_NO_CAMERA_TX_MSGS[] = {{0x180, 0, 4, .check_relay = false}, {0x370, 0, 6, .check_relay = false}, {0x3D1, 0, 8, .check_relay = false}, // pt bus + {0x1E1, 2, 7, .check_relay = false}, {0x184, 2, 8, .check_relay = false}, // camera bus + {0x200, 0, 6, .check_relay = false}, + {0x1E1, 0, 7, .check_relay = false}, + {0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}}; // pt bus static RxCheck gm_no_acc_rx_checks[] = { GM_COMMON_RX_CHECKS @@ -615,12 +620,6 @@ static safety_config gm_init(uint16_t param) { {.msg = {{0xC9, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, }; - static RxCheck gm_cam_acc_rx_checks[] = { - GM_COMMON_RX_CHECKS - GM_ACC_RX_CHECKS - {.msg = {{0x370, 2, 6, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, // camera ACC status - }; - static RxCheck gm_cam_acc_pedal_rx_checks[] = { {.msg = {{0x184, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, {.msg = {{0x34A, 0, 5, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, @@ -634,26 +633,18 @@ static safety_config gm_init(uint16_t param) { {.msg = {{0xC9, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, }; - static RxCheck gm_sdgm_acc_rx_checks[] = { - {.msg = {{0x184, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, - {.msg = {{0x34A, 0, 5, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, - {.msg = {{0x1E1, 0, 7, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, - {0x1E1, 2, 7, 100000U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, - { 0 }}}, - {.msg = {{0xF1, 0, 6, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, - {0xF1, 2, 6, 100000U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, - { 0 }}}, - {.msg = {{0x1C4, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, - {.msg = {{0xC9, 0, 8, 10U, .ignore_checksum = true, .ignore_counter = true, .ignore_quality_flag = true}, { 0 }, { 0 }}}, - }; - static const CanMsg GM_CC_LONG_TX_MSGS[] = {{0x180, 0, 4, .check_relay = true}, {0x370, 0, 6, .check_relay = false}, {0x1E1, 0, 7, .check_relay = false}, {0x3D1, 0, 8, .check_relay = false}, // pt bus {0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}, {0x184, 2, 8, .check_relay = true}, {0x1E1, 2, 7, .check_relay = false}}; // camera bus + static const CanMsg GM_CC_LONG_NO_CAMERA_TX_MSGS[] = {{0x180, 0, 4, .check_relay = false}, {0x370, 0, 6, .check_relay = false}, {0x1E1, 0, 7, .check_relay = false}, {0x3D1, 0, 8, .check_relay = false}, // pt bus + {0xBD, 0, 7, .check_relay = false}, {0x1F5, 0, 8, .check_relay = false}, + {0x184, 2, 8, .check_relay = false}, {0x1E1, 2, 7, .check_relay = false}}; // camera bus + gm_hw = GET_FLAG(param, GM_PARAM_HW_CAM) ? GM_CAM : GM_ASCM; gm_sdgm = GET_FLAG(param, GM_PARAM_HW_SDGM); gm_ascm_int = GET_FLAG(param, GM_PARAM_HW_ASCM_INT); + const bool gm_no_camera = GET_FLAG(param, GM_PARAM_NO_CAMERA); gm_cc_long = GET_FLAG(param, GM_PARAM_CC_LONG); gm_has_acc = !GET_FLAG(param, GM_PARAM_NO_ACC); @@ -704,46 +695,50 @@ static safety_config gm_init(uint16_t param) { } safety_config ret; - if (gm_hw == GM_CAM) { + // SDGM behaves like a forwarding camera path for whitelist/forwarding purposes. + if ((gm_hw == GM_CAM) || gm_sdgm) { // FIXME: cppcheck thinks that gm_cam_long is always false. This is not true // if ALLOW_DEBUG is defined but cppcheck is run without ALLOW_DEBUG // cppcheck-suppress knownConditionTrueFalse if (gm_cc_long) { - ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CC_LONG_TX_MSGS); + if (gm_no_camera) { + ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CC_LONG_NO_CAMERA_TX_MSGS); + } else { + ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CC_LONG_TX_MSGS); + } } else if (gm_cam_long) { - ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CAM_LONG_TX_MSGS); + if (gm_no_camera) { + ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CAM_LONG_NO_CAMERA_TX_MSGS); + } else { + ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CAM_LONG_TX_MSGS); + } } else { - ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CAM_TX_MSGS); + if (gm_no_camera) { + ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CAM_NO_CAMERA_TX_MSGS); + } else { + ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_CAM_TX_MSGS); + } } } else { ret = BUILD_SAFETY_CFG(gm_rx_checks, GM_ASCM_TX_MSGS); } - const bool gm_ev = GET_FLAG(param, GM_PARAM_EV); if (enable_gas_interceptor) { if (gm_has_acc && (gm_hw == GM_CAM || gm_sdgm)) { SET_RX_CHECKS(gm_cam_acc_pedal_rx_checks, ret); } else { SET_RX_CHECKS(gm_pedal_rx_checks, ret); } - } else if (gm_has_acc && gm_sdgm) { - SET_RX_CHECKS(gm_sdgm_acc_rx_checks, ret); - } else if (gm_has_acc && (gm_hw == GM_CAM || gm_sdgm)) { - SET_RX_CHECKS(gm_cam_acc_rx_checks, ret); - } else if (!gm_has_acc && gm_ev) { - SET_RX_CHECKS(gm_no_acc_ev_rx_checks, ret); - } else if (!gm_has_acc && !gm_ev) { + } else if (!gm_has_acc) { SET_RX_CHECKS(gm_no_acc_rx_checks, ret); - } else if (gm_ev) { - SET_RX_CHECKS(gm_ev_rx_checks, ret); } if (gm_ascm_int_stock_cam || gm_ascm_int_no_accel_pos) { SET_RX_CHECKS(gm_ascm_int_stock_cam_rx_checks, ret); } - // ASCM does not forward any messages - if (gm_hw == GM_ASCM) { + // ASCM does not forward any messages. SDGM still forwards between PT and camera. + if ((gm_hw == GM_ASCM) && !gm_sdgm) { ret.disable_forwarding = true; } return ret; diff --git a/opendbc_repo/opendbc/safety/tests/test_gm.py b/opendbc_repo/opendbc/safety/tests/test_gm.py index 0a1df913..d471dd5a 100755 --- a/opendbc_repo/opendbc/safety/tests/test_gm.py +++ b/opendbc_repo/opendbc/safety/tests/test_gm.py @@ -139,7 +139,7 @@ class TestGmSafetyBase(common.CarSafetyTest, common.DriverTorqueSteeringSafetyTe class TestGmEVSafetyBase(TestGmSafetyBase): - EXTRA_SAFETY_PARAM = GMSafetyFlags.EV + EXTRA_SAFETY_PARAM = 0 # existence of _user_regen_msg adds regen tests def _user_regen_msg(self, regen): @@ -233,8 +233,21 @@ class TestGmCameraSafety(TestGmCameraSafetyBase): self.assertEqual(enabled, self._tx(self._button_msg(Buttons.CANCEL))) -def _prime_gm_ascm_int_stock_cam_rx_checks(safety, f1_bus: int) -> None: - # This path should only accept the Volt/Malibu ASCM_INT stock-camera status on bus 0. +class TestGmSdgmSafety(TestGmSafetyBase): + TX_MSGS = [[0x180, 0], [0x370, 0], [0x200, 0], [0x1E1, 0], [0x3D1, 0], [0xBD, 0], [0x1F5, 0], # pt bus + [0x1E1, 2], [0x184, 2]] # camera bus + FWD_BLACKLISTED_ADDRS = {2: [0x180], 0: [0x184]} # block LKAS message and PSCMStatus + BUTTONS_BUS = 2 # tx only + + def setUp(self): + self.packer = CANPackerSafety("gm_global_a_powertrain_generated") + self.packer_chassis = CANPackerSafety("gm_global_a_chassis") + self.safety = libsafety_py.libsafety + self.safety.set_safety_hooks(CarParams.SafetyModel.gm, GMSafetyFlags.HW_SDGM | self.EXTRA_SAFETY_PARAM) + self.safety.init_tests() + + +def _prime_gm_base_rx_checks(safety, f1_bus: int) -> None: for bus, addr, length in ( (0, 0x184, 8), (0, 0x34A, 5), @@ -246,6 +259,20 @@ def _prime_gm_ascm_int_stock_cam_rx_checks(safety, f1_bus: int) -> None: safety.safety_rx_hook(common.make_msg(bus, addr, length)) +def test_gm_camera_stock_acc_uses_base_rx_checks(): + safety = libsafety_py.libsafety + safety.set_safety_hooks(CarParams.SafetyModel.gm, GMSafetyFlags.HW_CAM) + safety.init_tests() + + _prime_gm_base_rx_checks(safety, 0) + assert safety.safety_config_valid() + + +def _prime_gm_ascm_int_stock_cam_rx_checks(safety, f1_bus: int) -> None: + # This path should only accept the Volt/Malibu ASCM_INT stock-camera status on bus 0. + _prime_gm_base_rx_checks(safety, f1_bus) + + def test_gm_ascm_int_stock_cam_f1_rx_pinning(): safety = libsafety_py.libsafety safety.set_safety_hooks(CarParams.SafetyModel.gm, GMSafetyFlags.HW_CAM | GMSafetyFlags.HW_ASCM_INT) @@ -275,6 +302,17 @@ class TestGmCameraEVSafety(GmCameraAccEVRegenMixin, TestGmCameraSafety, TestGmEV pass +class TestGmCameraNoCameraSafety(TestGmCameraSafety): + RELAY_MALFUNCTION_ADDRS = {0: (), 2: ()} + + def setUp(self): + self.packer = CANPackerSafety("gm_global_a_powertrain_generated") + self.packer_chassis = CANPackerSafety("gm_global_a_chassis") + self.safety = libsafety_py.libsafety + self.safety.set_safety_hooks(CarParams.SafetyModel.gm, GMSafetyFlags.HW_CAM | GMSafetyFlags.FLAG_GM_NO_CAMERA) + self.safety.init_tests() + + class TestGmCameraLongitudinalSafety(GmLongitudinalBase, TestGmCameraSafetyBase): TX_MSGS = [[0x180, 0], [0x315, 0], [0x2CB, 0], [0x370, 0], [0x200, 0], [0x1E1, 0], [0x3D1, 0], [0xBD, 0], [0x1F5, 0], # pt bus [0x184, 2]] # camera bus @@ -298,6 +336,17 @@ class TestGmCameraLongitudinalEVSafety(GmCameraAccEVRegenMixin, TestGmCameraLong pass +class TestGmCameraLongitudinalNoCameraSafety(TestGmCameraLongitudinalSafety): + RELAY_MALFUNCTION_ADDRS = {0: (), 2: ()} + + def setUp(self): + self.packer = CANPackerSafety("gm_global_a_powertrain_generated") + self.packer_chassis = CANPackerSafety("gm_global_a_chassis") + self.safety = libsafety_py.libsafety + self.safety.set_safety_hooks(CarParams.SafetyModel.gm, GMSafetyFlags.HW_CAM | GMSafetyFlags.HW_CAM_LONG | GMSafetyFlags.FLAG_GM_NO_CAMERA) + self.safety.init_tests() + + def interceptor_msg(gas, addr): to_send = common.make_msg(0, addr, 6) to_send[0].data[0] = (gas & 0xFF00) >> 8 @@ -400,6 +449,18 @@ class TestGmCcLongitudinalSafety(TestGmCameraSafety): self.assertEqual(enabled, self._tx(self._button_msg(btn))) +class TestGmCcLongitudinalNoCameraSafety(TestGmCcLongitudinalSafety): + RELAY_MALFUNCTION_ADDRS = {0: (), 2: ()} + + def setUp(self): + self.packer = CANPackerPanda("gm_global_a_powertrain_generated") + self.packer_chassis = CANPackerPanda("gm_global_a_chassis") + self.safety = libsafety_py.libsafety + self.safety.set_safety_hooks(CarParams.SafetyModel.gm, GMSafetyFlags.HW_CAM | GMSafetyFlags.FLAG_GM_NO_ACC | + GMSafetyFlags.FLAG_GM_CC_LONG | GMSafetyFlags.FLAG_GM_NO_CAMERA) + self.safety.init_tests() + + class TestGmCcLongitudinalPandaSchedSafety(TestGmCcLongitudinalSafety): FWD_BLACKLISTED_ADDRS = {2: [0x180, 0x370], 0: [0x184, 0x3D1]} INTERCEPTOR_GAS_PRESSED = 596 diff --git a/panda/board/obj/body_h7.bin.signed b/panda/board/obj/body_h7.bin.signed index 93518842..a5e2a100 100644 Binary files a/panda/board/obj/body_h7.bin.signed and b/panda/board/obj/body_h7.bin.signed differ diff --git a/panda/board/obj/body_h7/bootstub.elf b/panda/board/obj/body_h7/bootstub.elf index 2163dba4..0d893eec 100755 Binary files a/panda/board/obj/body_h7/bootstub.elf and b/panda/board/obj/body_h7/bootstub.elf differ diff --git a/panda/board/obj/body_h7/main.bin b/panda/board/obj/body_h7/main.bin index 3bebaeca..1d3694ab 100755 Binary files a/panda/board/obj/body_h7/main.bin and b/panda/board/obj/body_h7/main.bin differ diff --git a/panda/board/obj/body_h7/main.elf b/panda/board/obj/body_h7/main.elf index 6d94c0ee..3674f8db 100755 Binary files a/panda/board/obj/body_h7/main.elf and b/panda/board/obj/body_h7/main.elf differ diff --git a/panda/board/obj/bootstub.body_h7.bin b/panda/board/obj/bootstub.body_h7.bin index 2d198d3f..cf53be90 100755 Binary files a/panda/board/obj/bootstub.body_h7.bin and b/panda/board/obj/bootstub.body_h7.bin differ diff --git a/panda/board/obj/bootstub.panda.bin b/panda/board/obj/bootstub.panda.bin index 033c898d..e78de628 100755 Binary files a/panda/board/obj/bootstub.panda.bin and b/panda/board/obj/bootstub.panda.bin differ diff --git a/panda/board/obj/bootstub.panda_h7.bin b/panda/board/obj/bootstub.panda_h7.bin index a4b65cb0..38662b68 100755 Binary files a/panda/board/obj/bootstub.panda_h7.bin and b/panda/board/obj/bootstub.panda_h7.bin differ diff --git a/panda/board/obj/bootstub.panda_h7_remote.bin b/panda/board/obj/bootstub.panda_h7_remote.bin index a4b65cb0..38662b68 100755 Binary files a/panda/board/obj/bootstub.panda_h7_remote.bin and b/panda/board/obj/bootstub.panda_h7_remote.bin differ diff --git a/panda/board/obj/bootstub.panda_jungle_h7.bin b/panda/board/obj/bootstub.panda_jungle_h7.bin index 704fd358..11e8fb86 100755 Binary files a/panda/board/obj/bootstub.panda_jungle_h7.bin and b/panda/board/obj/bootstub.panda_jungle_h7.bin differ diff --git a/panda/board/obj/bootstub.panda_remote.bin b/panda/board/obj/bootstub.panda_remote.bin index 033c898d..e78de628 100755 Binary files a/panda/board/obj/bootstub.panda_remote.bin and b/panda/board/obj/bootstub.panda_remote.bin differ diff --git a/panda/board/obj/gitversion.h b/panda/board/obj/gitversion.h index bc99ea9a..205bc782 100644 --- a/panda/board/obj/gitversion.h +++ b/panda/board/obj/gitversion.h @@ -1,2 +1,2 @@ extern const uint8_t gitversion[19]; -const uint8_t gitversion[19] = "DEV-5ddabfcc-DEBUG"; +const uint8_t gitversion[19] = "DEV-2b280bd5-DEBUG"; diff --git a/panda/board/obj/panda.bin.signed b/panda/board/obj/panda.bin.signed index cdaddbda..f2547720 100644 Binary files a/panda/board/obj/panda.bin.signed and b/panda/board/obj/panda.bin.signed differ diff --git a/panda/board/obj/panda/bootstub.elf b/panda/board/obj/panda/bootstub.elf index 5d0339cd..d2b9e25b 100755 Binary files a/panda/board/obj/panda/bootstub.elf and b/panda/board/obj/panda/bootstub.elf differ diff --git a/panda/board/obj/panda/main.bin b/panda/board/obj/panda/main.bin index f77e8624..7b5bf990 100755 Binary files a/panda/board/obj/panda/main.bin and b/panda/board/obj/panda/main.bin differ diff --git a/panda/board/obj/panda/main.elf b/panda/board/obj/panda/main.elf index 34edba1e..26016bf2 100755 Binary files a/panda/board/obj/panda/main.elf and b/panda/board/obj/panda/main.elf differ diff --git a/panda/board/obj/panda_h7.bin.signed b/panda/board/obj/panda_h7.bin.signed index 9d601a8b..f73f314f 100644 Binary files a/panda/board/obj/panda_h7.bin.signed and b/panda/board/obj/panda_h7.bin.signed differ diff --git a/panda/board/obj/panda_h7/bootstub.elf b/panda/board/obj/panda_h7/bootstub.elf index e04a0a49..91bc5e8e 100755 Binary files a/panda/board/obj/panda_h7/bootstub.elf and b/panda/board/obj/panda_h7/bootstub.elf differ diff --git a/panda/board/obj/panda_h7/main.bin b/panda/board/obj/panda_h7/main.bin index 95b3776a..51f6fc85 100755 Binary files a/panda/board/obj/panda_h7/main.bin and b/panda/board/obj/panda_h7/main.bin differ diff --git a/panda/board/obj/panda_h7/main.elf b/panda/board/obj/panda_h7/main.elf index b3e70a3d..119c0ad1 100755 Binary files a/panda/board/obj/panda_h7/main.elf and b/panda/board/obj/panda_h7/main.elf differ diff --git a/panda/board/obj/panda_h7_remote.bin.signed b/panda/board/obj/panda_h7_remote.bin.signed index ec180c0f..d6fcb5f8 100644 Binary files a/panda/board/obj/panda_h7_remote.bin.signed and b/panda/board/obj/panda_h7_remote.bin.signed differ diff --git a/panda/board/obj/panda_h7_remote/bootstub.elf b/panda/board/obj/panda_h7_remote/bootstub.elf index ac08666d..aee74edb 100755 Binary files a/panda/board/obj/panda_h7_remote/bootstub.elf and b/panda/board/obj/panda_h7_remote/bootstub.elf differ diff --git a/panda/board/obj/panda_h7_remote/main.bin b/panda/board/obj/panda_h7_remote/main.bin index 2e1cfa4c..57a1e07f 100755 Binary files a/panda/board/obj/panda_h7_remote/main.bin and b/panda/board/obj/panda_h7_remote/main.bin differ diff --git a/panda/board/obj/panda_h7_remote/main.elf b/panda/board/obj/panda_h7_remote/main.elf index c90c4c60..180ebe98 100755 Binary files a/panda/board/obj/panda_h7_remote/main.elf and b/panda/board/obj/panda_h7_remote/main.elf differ diff --git a/panda/board/obj/panda_jungle_h7.bin.signed b/panda/board/obj/panda_jungle_h7.bin.signed index 3d7acff3..6cc6db1c 100644 Binary files a/panda/board/obj/panda_jungle_h7.bin.signed and b/panda/board/obj/panda_jungle_h7.bin.signed differ diff --git a/panda/board/obj/panda_jungle_h7/bootstub.elf b/panda/board/obj/panda_jungle_h7/bootstub.elf index 49aa43f0..e71da92a 100755 Binary files a/panda/board/obj/panda_jungle_h7/bootstub.elf and b/panda/board/obj/panda_jungle_h7/bootstub.elf differ diff --git a/panda/board/obj/panda_jungle_h7/main.bin b/panda/board/obj/panda_jungle_h7/main.bin index 1d58dc64..64069e6d 100755 Binary files a/panda/board/obj/panda_jungle_h7/main.bin and b/panda/board/obj/panda_jungle_h7/main.bin differ diff --git a/panda/board/obj/panda_jungle_h7/main.elf b/panda/board/obj/panda_jungle_h7/main.elf index e4cbad61..23a56d96 100755 Binary files a/panda/board/obj/panda_jungle_h7/main.elf and b/panda/board/obj/panda_jungle_h7/main.elf differ diff --git a/panda/board/obj/panda_remote.bin.signed b/panda/board/obj/panda_remote.bin.signed index 26786628..28cf5975 100644 Binary files a/panda/board/obj/panda_remote.bin.signed and b/panda/board/obj/panda_remote.bin.signed differ diff --git a/panda/board/obj/panda_remote/bootstub.elf b/panda/board/obj/panda_remote/bootstub.elf index 454a115f..9d59635c 100755 Binary files a/panda/board/obj/panda_remote/bootstub.elf and b/panda/board/obj/panda_remote/bootstub.elf differ diff --git a/panda/board/obj/panda_remote/main.bin b/panda/board/obj/panda_remote/main.bin index f4c8889e..bcb3605a 100755 Binary files a/panda/board/obj/panda_remote/main.bin and b/panda/board/obj/panda_remote/main.bin differ diff --git a/panda/board/obj/panda_remote/main.elf b/panda/board/obj/panda_remote/main.elf index c31562fd..b7d7e286 100755 Binary files a/panda/board/obj/panda_remote/main.elf and b/panda/board/obj/panda_remote/main.elf differ diff --git a/panda/board/obj/version b/panda/board/obj/version index daefc99a..1b4cbaa7 100644 --- a/panda/board/obj/version +++ b/panda/board/obj/version @@ -1 +1 @@ -DEV-5ddabfcc-DEBUG \ No newline at end of file +DEV-2b280bd5-DEBUG \ No newline at end of file diff --git a/selfdrive/test/process_replay/migration.py b/selfdrive/test/process_replay/migration.py index aaf8d101..c9b4e884 100644 --- a/selfdrive/test/process_replay/migration.py +++ b/selfdrive/test/process_replay/migration.py @@ -276,8 +276,8 @@ def migrate_pandaStates(msgs): "TOYOTA_PRIUS": EPS_SCALE["TOYOTA_PRIUS"] | ToyotaSafetyFlags.STOCK_LONGITUDINAL, "TOYOTA_RAV4": EPS_SCALE["TOYOTA_RAV4"] | ToyotaSafetyFlags.ALT_BRAKE, "KIA_EV6": HyundaiSafetyFlags.EV_GAS | HyundaiSafetyFlags.CANFD_LKA_STEERING, - "CHEVROLET_VOLT": GMSafetyFlags.EV, - "CHEVROLET_BOLT_EUV": GMSafetyFlags.EV | GMSafetyFlags.HW_CAM, + "CHEVROLET_VOLT": 0, + "CHEVROLET_BOLT_EUV": GMSafetyFlags.HW_CAM, } # TODO: get new Ford route safety_param_migration |= dict.fromkeys((set(FORD) - FORD.with_flags(FordFlags.CANFD)), FordSafetyFlags.LONG_CONTROL)