From fb81f6d75d0b787cb4f9aeeb11e90b8585964db4 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 5 Mar 2025 21:17:46 -0800 Subject: [PATCH 1/3] fix possible gear exception --- opendbc/car/rivian/carstate.py | 5 ++++- opendbc/car/rivian/values.py | 14 +++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/opendbc/car/rivian/carstate.py b/opendbc/car/rivian/carstate.py index c64dfb1dd5..45f91b8c9f 100644 --- a/opendbc/car/rivian/carstate.py +++ b/opendbc/car/rivian/carstate.py @@ -1,10 +1,13 @@ import copy +from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser from opendbc.car import Bus, structs from opendbc.car.interfaces import CarStateBase from opendbc.car.rivian.values import DBC, GEAR_MAP from opendbc.car.common.conversions import Conversions as CV +GearShifter = structs.CarState.GearShifter + class CarState(CarStateBase): def __init__(self, CP): @@ -62,7 +65,7 @@ def update(self, can_parsers) -> structs.CarState: cp.vl["VDM_AdasSts"]["VDM_AdasFaultStatus"] in (2, 3)) # 2=Cntr_Fault, 3=Imps_Cmd # Gear - ret.gearShifter = GEAR_MAP[int(cp.vl["VDM_PropStatus"]["VDM_Prndl_Status"])] + ret.gearShifter = GEAR_MAP.get(int(cp.vl["VDM_PropStatus"]["VDM_Prndl_Status"]), GearShifter.unknown) # Doors ret.doorOpen = (cp_adas.vl["IndicatorLights"]["RearDriverDoor"] != 2 or diff --git a/opendbc/car/rivian/values.py b/opendbc/car/rivian/values.py index 1769489b36..17dce6560f 100644 --- a/opendbc/car/rivian/values.py +++ b/opendbc/car/rivian/values.py @@ -44,13 +44,13 @@ class CAR(Platforms): ] ) -GEAR_MAP = [ - structs.CarState.GearShifter.unknown, - structs.CarState.GearShifter.park, - structs.CarState.GearShifter.reverse, - structs.CarState.GearShifter.neutral, - structs.CarState.GearShifter.drive, -] +GEAR_MAP = { + 0: structs.CarState.GearShifter.unknown, + 1: structs.CarState.GearShifter.park, + 2: structs.CarState.GearShifter.reverse, + 3: structs.CarState.GearShifter.neutral, + 4: structs.CarState.GearShifter.drive, +} class CarControllerParams: From b9a4727704fc0d0b32a88a78ef401b04e4d13d2d Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 5 Mar 2025 22:12:33 -0800 Subject: [PATCH 2/3] fix cruise state mismatch --- opendbc/safety/safety/safety_rivian.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/opendbc/safety/safety/safety_rivian.h b/opendbc/safety/safety/safety_rivian.h index 1d0fc9301f..4e1304eeb0 100644 --- a/opendbc/safety/safety/safety_rivian.h +++ b/opendbc/safety/safety/safety_rivian.h @@ -39,7 +39,8 @@ static void rivian_rx_hook(const CANPacket_t *to_push) { if (bus == 2) { // Cruise state if (addr == 0x100) { - pcm_cruise_check(GET_BIT(to_push, 21U)); + const int feature_status = GET_BYTE(to_push, 2) >> 5U; + pcm_cruise_check(feature_status == 1); } } } From 2a22fbda3fa00a8378d63f40ab2648f7709e6017 Mon Sep 17 00:00:00 2001 From: Shane Smiskol Date: Wed, 5 Mar 2025 22:15:08 -0800 Subject: [PATCH 3/3] clean up --- opendbc/car/rivian/carstate.py | 1 - 1 file changed, 1 deletion(-) diff --git a/opendbc/car/rivian/carstate.py b/opendbc/car/rivian/carstate.py index 45f91b8c9f..c7da0689b5 100644 --- a/opendbc/car/rivian/carstate.py +++ b/opendbc/car/rivian/carstate.py @@ -1,5 +1,4 @@ import copy -from opendbc.can.can_define import CANDefine from opendbc.can.parser import CANParser from opendbc.car import Bus, structs from opendbc.car.interfaces import CarStateBase