diff --git a/opendbc/car/rivian/carstate.py b/opendbc/car/rivian/carstate.py index c64dfb1dd5..c7da0689b5 100644 --- a/opendbc/car/rivian/carstate.py +++ b/opendbc/car/rivian/carstate.py @@ -5,6 +5,8 @@ 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 +64,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: 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); } } }