def get_can_parser(CP): signals = [ # sig_name, sig_address, default ("WHL_SPD_FL", "WHL_SPD11", 0), ("WHL_SPD_FR", "WHL_SPD11", 0), ("WHL_SPD_RL", "WHL_SPD11", 0), ("WHL_SPD_RR", "WHL_SPD11", 0), ("YAW_RATE", "ESP12", 0), ("CF_Gway_DrvSeatBeltInd", "CGW4", 1), ("CF_Gway_DrvSeatBeltSw", "CGW1", 0), ("CF_Gway_DrvDrSw", "CGW1", 0), # Driver Door ("CF_Gway_AstDrSw", "CGW1", 0), # Passenger door ("CF_Gway_RLDrSw", "CGW2", 0), # Rear reft door ("CF_Gway_RRDrSw", "CGW2", 0), # Rear right door ("CF_Gway_TSigLHSw", "CGW1", 0), ("CF_Gway_TurnSigLh", "CGW1", 0), ("CF_Gway_TSigRHSw", "CGW1", 0), ("CF_Gway_TurnSigRh", "CGW1", 0), ("CF_Gway_ParkBrakeSw", "CGW1", 0), ("CYL_PRES", "ESP12", 0), ("AVH_STAT", "ESP11", 0), ("CF_Clu_CruiseSwState", "CLU11", 0), ("CF_Clu_CruiseSwMain", "CLU11", 0), ("CF_Clu_SldMainSW", "CLU11", 0), ("CF_Clu_ParityBit1", "CLU11", 0), ("CF_Clu_VanzDecimal" , "CLU11", 0), ("CF_Clu_Vanz", "CLU11", 0), ("CF_Clu_SPEED_UNIT", "CLU11", 0), ("CF_Clu_DetentOut", "CLU11", 0), ("CF_Clu_RheostatLevel", "CLU11", 0), ("CF_Clu_CluInfo", "CLU11", 0), ("CF_Clu_AmpInfo", "CLU11", 0), ("CF_Clu_AliveCnt1", "CLU11", 0), ("ACCEnable", "TCS13", 0), ("BrakeLight", "TCS13", 0), ("DriverBraking", "TCS13", 0), ("DriverOverride", "TCS13",0), ("PBRAKE_ACT", "TCS13", 0), ("CF_VSM_Avail", "TCS13", 0), ("ESC_Off_Step", "TCS15", 0), ("AVH_LAMP", "TCS15", 0), ("CF_Lvr_CruiseSet", "LVR12", 0), ("CRUISE_LAMP_M", "EMS16", 0), ("CR_FCA_Alive", "FCA11", 0), ("Supplemental_Counter", "FCA11", 0), ("MainMode_ACC", "SCC11", 1), ("SCCInfoDisplay", "SCC11", 0), ("AliveCounterACC", "SCC11", 0), ("VSetDis", "SCC11", 30), ("ObjValid", "SCC11", 0), ("DriverAlertDisplay", "SCC11", 0), ("TauGapSet", "SCC11", 4), ("ACC_ObjStatus", "SCC11", 0), ("ACC_ObjLatPos", "SCC11", 0), ("ACC_ObjDist", "SCC11", 150), #TK211X value is 204.6 ("ACC_ObjRelSpd", "SCC11", 0), ("Navi_SCC_Curve_Status", "SCC11", 0), ("Navi_SCC_Curve_Act", "SCC11", 0), ("Navi_SCC_Camera_Act", "SCC11", 0), ("Navi_SCC_Camera_Status", "SCC11", 2), ("ACCMode", "SCC12", 0), ("CF_VSM_Prefill", "SCC12", 0), ("CF_VSM_DecCmdAct", "SCC12", 0), ("CF_VSM_HBACmd", "SCC12", 0), ("CF_VSM_Warn", "SCC12", 0), ("CF_VSM_Stat", "SCC12", 0), ("CF_VSM_BeltCmd", "SCC12", 0), ("ACCFailInfo", "SCC12", 0), ("StopReq", "SCC12", 0), ("CR_VSM_DecCmd", "SCC12", 0), ("aReqRaw", "SCC12", 0), #aReqMax ("TakeOverReq", "SCC12", 0), ("PreFill", "SCC12", 0), ("aReqValue", "SCC12", 0), #aReqMin ("CF_VSM_ConfMode", "SCC12", 1), ("AEB_Failinfo", "SCC12", 0), ("AEB_Status", "SCC12", 2), ("AEB_CmdAct", "SCC12", 0), ("AEB_StopReq", "SCC12", 0), ("CR_VSM_Alive", "SCC12", 0), ("CR_VSM_ChkSum", "SCC12", 0), ("SCCDrvModeRValue", "SCC13", 2), ("SCC_Equip", "SCC13", 1), ("AebDrvSetStatus", "SCC13", 0), ("JerkUpperLimit", "SCC14", 0), ("JerkLowerLimit", "SCC14", 0), ("SCCMode2", "SCC14", 0), ("ComfortBandUpper", "SCC14", 0), ("ComfortBandLower", "SCC14", 0), ("UNIT", "TPMS11", 0), ("PRESSURE_FL", "TPMS11", 0), ("PRESSURE_FR", "TPMS11", 0), ("PRESSURE_RL", "TPMS11", 0), ("PRESSURE_RR", "TPMS11", 0), ] checks = [ # address, frequency ("TCS13", 50), ("TCS15", 10), ("CLU11", 50), ("ESP12", 100), ("CGW1", 10), ("CGW2", 5), ("CGW4", 5), ("WHL_SPD11", 50), ] if CP.sccBus == 0 and CP.enableCruise: checks += [ ("SCC11", 50), ("SCC12", 50), ] if CP.fcaBus == 0: signals += [ ("FCA_CmdAct", "FCA11", 0), ("CF_VSM_Warn", "FCA11", 0), ] checks += [("FCA11", 50)] if CP.mdpsBus == 0: signals += [ ("CR_Mdps_StrColTq", "MDPS12", 0), ("CF_Mdps_Def", "MDPS12", 0), ("CF_Mdps_ToiActive", "MDPS12", 0), ("CF_Mdps_ToiUnavail", "MDPS12", 0), ("CF_Mdps_ToiFlt", "MDPS12", 0), ("CF_Mdps_MsgCount2", "MDPS12", 0), ("CF_Mdps_Chksum2", "MDPS12", 0), ("CF_Mdps_SErr", "MDPS12", 0), ("CR_Mdps_StrTq", "MDPS12", 0), ("CF_Mdps_FailStat", "MDPS12", 0), ("CR_Mdps_OutTq", "MDPS12", 0) ] checks += [ ("MDPS12", 50) ] if CP.sasBus == 0: signals += [ ("SAS_Angle", "SAS11", 0), ("SAS_Speed", "SAS11", 0), ] checks += [ ("SAS11", 100) ] if CP.bsmAvailable or CP.enableBsm: signals += [ ("CF_Lca_Stat", "LCA11", 0), ("CF_Lca_IndLeft", "LCA11", 0), ("CF_Lca_IndRight", "LCA11", 0), ] checks += [("LCA11", 50)] if CP.carFingerprint in ELEC_VEH: signals += [ ("Accel_Pedal_Pos", "E_EMS11", 0), ] checks += [ ("E_EMS11", 50), ] elif CP.carFingerprint in HYBRID_VEH: signals += [ ("CR_Vcu_AccPedDep_Pc", "EV_PC4", 0), ] checks += [ ("EV_PC4", 50), ] elif CP.emsAvailable: signals += [ ("PV_AV_CAN", "EMS12", 0), ("CF_Ems_AclAct", "EMS16", 0), ] checks += [ ("EMS12", 100), ("EMS16", 100), ] if CP.carFingerprint in FEATURES["use_cluster_gears"]: signals += [ ("CF_Clu_InhibitD", "CLU15", 0), ("CF_Clu_InhibitP", "CLU15", 0), ("CF_Clu_InhibitN", "CLU15", 0), ("CF_Clu_InhibitR", "CLU15", 0), ] checks += [("CLU15", 5)] elif CP.carFingerprint in FEATURES["use_tcu_gears"]: signals += [ ("CUR_GR", "TCU12", 0) ] checks += [("TCU12", 100)] elif CP.evgearAvailable: signals += [("Elect_Gear_Shifter", "ELECT_GEAR", 0)] checks += [("ELECT_GEAR", 20)] elif CP.lvrAvailable: signals += [("CF_Lvr_Gear", "LVR12", 0)] checks += [("LVR12", 100)] if CP.carFingerprint in [CAR.SANTA_FE]: checks.remove(("TCS13", 50)) return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0, enforce_checks=False)
def get_can_parser(CP): signals = [ # sig_name, sig_address, default ("WHL_SPD_FL", "WHL_SPD11", 0), ("WHL_SPD_FR", "WHL_SPD11", 0), ("WHL_SPD_RL", "WHL_SPD11", 0), ("WHL_SPD_RR", "WHL_SPD11", 0), ("YAW_RATE", "ESP12", 0), ("CF_Gway_DrvSeatBeltInd", "CGW4", 1), ("CF_Gway_DrvSeatBeltSw", "CGW1", 0), ("CF_Gway_DrvDrSw", "CGW1", 0), # Driver Door ("CF_Gway_AstDrSw", "CGW1", 0), # Passenger door ("CF_Gway_RLDrSw", "CGW2", 0), # Rear reft door ("CF_Gway_RRDrSw", "CGW2", 0), # Rear right door ("CF_Gway_TurnSigLh", "CGW1", 0), ("CF_Gway_TurnSigRh", "CGW1", 0), ("CF_Gway_ParkBrakeSw", "CGW1", 0), # Parking Brake ("CYL_PRES", "ESP12", 0), ("CF_Clu_CruiseSwState", "CLU11", 0), ("CF_Clu_CruiseSwMain", "CLU11", 0), ("CF_Clu_SldMainSW", "CLU11", 0), ("CF_Clu_ParityBit1", "CLU11", 0), ("CF_Clu_VanzDecimal", "CLU11", 0), ("CF_Clu_Vanz", "CLU11", 0), ("CF_Clu_SPEED_UNIT", "CLU11", 0), ("CF_Clu_DetentOut", "CLU11", 0), ("CF_Clu_RheostatLevel", "CLU11", 0), ("CF_Clu_CluInfo", "CLU11", 0), ("CF_Clu_AmpInfo", "CLU11", 0), ("CF_Clu_AliveCnt1", "CLU11", 0), ("ACCEnable", "TCS13", 0), ("ACC_REQ", "TCS13", 0), ("BrakeLight", "TCS13", 0), ("DriverBraking", "TCS13", 0), ("CF_VSM_Avail", "TCS13", 0), ("StandStill", "TCS13", 0), ("PBRAKE_ACT", "TCS13", 0), ("ESC_Off_Step", "TCS15", 0), ("AVH_LAMP", "TCS15", 0), ("CF_Lvr_GearInf", "LVR11", 0), # Transmission Gear (0 = N or P, 1-8 = Fwd, 14 = Rev) ("CF_Lca_Stat", "LCA11", 0), ("CF_Lca_IndLeft", "LCA11", 0), ("CF_Lca_IndRight", "LCA11", 0), ("MainMode_ACC", "SCC11", 1), ("SCCInfoDisplay", "SCC11", 0), ("AliveCounterACC", "SCC11", 0), ("VSetDis", "SCC11", 30), ("ObjValid", "SCC11", 0), ("DriverAlertDisplay", "SCC11", 0), ("TauGapSet", "SCC11", 4), ("ACC_ObjStatus", "SCC11", 0), ("ACC_ObjLatPos", "SCC11", 0), ("ACC_ObjDist", "SCC11", 150), #TK211X value is 204.6 ("ACC_ObjRelSpd", "SCC11", 0), ("Navi_SCC_Curve_Status", "SCC11", 0), ("Navi_SCC_Curve_Act", "SCC11", 0), ("Navi_SCC_Camera_Act", "SCC11", 0), ("Navi_SCC_Camera_Status", "SCC11", 2), ("ACCMode", "SCC12", 0), ("CF_VSM_Prefill", "SCC12", 0), ("CF_VSM_DecCmdAct", "SCC12", 0), ("CF_VSM_HBACmd", "SCC12", 0), ("CF_VSM_Warn", "SCC12", 0), ("CF_VSM_Stat", "SCC12", 0), ("CF_VSM_BeltCmd", "SCC12", 0), ("ACCFailInfo", "SCC12", 0), ("StopReq", "SCC12", 0), ("CR_VSM_DecCmd", "SCC12", 0), ("aReqRaw", "SCC12", 0), #aReqMax ("TakeOverReq", "SCC12", 0), ("PreFill", "SCC12", 0), ("aReqValue", "SCC12", 0), #aReqMin ("CF_VSM_ConfMode", "SCC12", 1), ("AEB_Failinfo", "SCC12", 0), ("AEB_Status", "SCC12", 2), ("AEB_CmdAct", "SCC12", 0), ("AEB_StopReq", "SCC12", 0), ("CR_VSM_Alive", "SCC12", 0), ("CR_VSM_ChkSum", "SCC12", 0), ("SCCDrvModeRValue", "SCC13", 2), ("SCC_Equip", "SCC13", 1), ("AebDrvSetStatus", "SCC13", 0), ("JerkUpperLimit", "SCC14", 0), ("JerkLowerLimit", "SCC14", 0), ("SCCMode2", "SCC14", 0), ("ComfortBandUpper", "SCC14", 0), ("ComfortBandLower", "SCC14", 0), ("UNIT", "TPMS11", 0), ("PRESSURE_FL", "TPMS11", 0), ("PRESSURE_FR", "TPMS11", 0), ("PRESSURE_RL", "TPMS11", 0), ("PRESSURE_RR", "TPMS11", 0), ] checks = [ # address, frequency ("TCS13", 50), ("TCS15", 10), ("CLU11", 50), ("ESP12", 100), ("CGW1", 10), ("CGW4", 5), ("WHL_SPD11", 50), ] if CP.sccBus == 0 and CP.enableCruise: checks += [ ("SCC11", 50), ("SCC12", 50), ] if CP.mdpsBus == 0: signals += [("CR_Mdps_StrColTq", "MDPS12", 0), ("CF_Mdps_Def", "MDPS12", 0), ("CF_Mdps_ToiActive", "MDPS12", 0), ("CF_Mdps_ToiUnavail", "MDPS12", 0), ("CF_Mdps_MsgCount2", "MDPS12", 0), ("CF_Mdps_Chksum2", "MDPS12", 0), ("CF_Mdps_ToiFlt", "MDPS12", 0), ("CF_Mdps_SErr", "MDPS12", 0), ("CR_Mdps_StrTq", "MDPS12", 0), ("CF_Mdps_FailStat", "MDPS12", 0), ("CR_Mdps_OutTq", "MDPS12", 0)] checks += [("MDPS12", 50)] if CP.sasBus == 0: signals += [ ("SAS_Angle", "SAS11", 0), ("SAS_Speed", "SAS11", 0), ] checks += [("SAS11", 100)] if CP.sccBus == -1: signals += [ ("CRUISE_LAMP_M", "EMS16", 0), ("CF_Lvr_CruiseSet", "LVR12", 0), ] if CP.carFingerprint in FEATURES["use_cluster_gears"]: signals += [ ("CF_Clu_InhibitD", "CLU15", 0), ("CF_Clu_InhibitP", "CLU15", 0), ("CF_Clu_InhibitN", "CLU15", 0), ("CF_Clu_InhibitR", "CLU15", 0), ] elif CP.carFingerprint in FEATURES["use_tcu_gears"]: signals += [ ("CUR_GR", "TCU12", 0), ] elif CP.carFingerprint in FEATURES["use_elect_ems_gears"]: signals += [ ("Elect_Gear_Shifter", "ELECT_GEAR", 0), ] else: signals += [ ("CF_Lvr_Gear", "LVR12", 0), ] if CP.carFingerprint not in FEATURES["use_elect_ems_gears"]: signals += [ ("PV_AV_CAN", "EMS12", 0), ("CF_Ems_AclAct", "EMS16", 0), ] checks += [ ("EMS12", 100), ("EMS16", 100), ] else: signals += [ ("Accel_Pedal_Pos", "E_EMS11", 0), ("Brake_Pedal_Pos", "E_EMS11", 0), ] checks += [ ("E_EMS11", 100), ] if CP.carFingerprint in FEATURES["use_fca"]: signals += [ ("FCA_CmdAct", "FCA11", 0), ("CF_VSM_Warn", "FCA11", 0), ] if not CP.openpilotLongitudinalControl: checks += [("FCA11", 50)] if CP.carFingerprint in FEATURES["tcs_remove"]: checks.remove(("TCS13", 50)) if CP.spasEnabled: if CP.mdpsBus == 1: signals += [ ("SWI_IGK", "EMS11", 0), ("F_N_ENG", "EMS11", 0), ("ACK_TCS", "EMS11", 0), ("PUC_STAT", "EMS11", 0), ("TQ_COR_STAT", "EMS11", 0), ("RLY_AC", "EMS11", 0), ("F_SUB_TQI", "EMS11", 0), ("TQI_ACOR", "EMS11", 0), ("N", "EMS11", 0), ("TQI", "EMS11", 0), ("TQFR", "EMS11", 0), ("VS", "EMS11", 0), ("RATIO_TQI_BAS_MAX_STND", "EMS11", 0), ] checks += [("EMS11", 100)] elif CP.mdpsBus == 0: signals += [ ("CR_Mdps_StrAng", "MDPS11", 0), ("CF_Mdps_Stat", "MDPS11", 0), ] checks += [("MDPS11", 100)] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0)
def get_can_parser(CP): signals = [ # sig_name, sig_address, default ("COUNTER", "THROTTLE"), ("STEER_RATE00", "EPS_00"), ("STEER_ANGLE01", "EPS_01"), ("STEER_SPEED01", "EPS_01"), ("STEER_TORQUE_DRIVER02", "EPS_02"), ("STEER_TORQUE_MOTOR02", "EPS_02"), ("STEER_TORQUE_DRIVER03", "EPS_03"), ("STEER_TQ", "EPS_04"), ("GEAR_SHIFT", "GEAR_PRND"), ("CRUISE_ON", "CRUISE_CONTROL"), ("DRIVER_BRAKE", "CRUISE_CONTROL"), ("SPEED_CRUISE_RESUME", "CRUISE_CONTROL"), ("ACCELATOR_DRIVER", "ACCELATOR_DRIVER"), ("SEAT_BELT_DRIVER", "SEAT_BELT"), ("RIGHT_TURN", "TURN_SIGNAL"), ("LEFT_TURN", "TURN_SIGNAL"), ("LEFT_BLINK", "TURN_SIGNAL"), ("RIGHT_BLINK", "TURN_SIGNAL"), ("SPEED01", "SPEED_01"), ("SPEED02", "SPEED_02"), #("LEFT_ALERT_1", "LEFT_ALERT", 0), #("RIGHT_ALERT_1", "RIGHT_ALERT", 0), #( "COUNTER", "LKAS_RUN"), ("WHEEL_SPEED_FR", "SPEED_04"), ("WHEEL_SPEED_FL", "SPEED_04"), ("WHEEL_SPEED_RR", "SPEED_03"), ("WHEEL_SPEED_RL", "SPEED_03"), ("GREEN2WHITE_RIGHT", "LKAS_STATUS"), ("GREEN2WHITE_LEFT", "LKAS_STATUS"), ("FRONT_CAR_DISTANCE", "LKAS_HUD_STAT"), ("LADAR_DISTANCE", "LKAS_HUD_STAT"), ("HIBEAM", "HEAD_LIGHT"), ] # It's considered invalid if it is not received for 10x the expected period (1/f). checks = [ # sig_address, frequency ("EPS_00", 100), ("EPS_01", 100), ("EPS_02", 100), ("EPS_03", 100), ("EPS_04", 100), ("SPEED_01", 100), ("SPEED_02", 100), ("SPEED_03", 100), ("SPEED_04", 100), ("CRUISE_CONTROL", 100), ("SEAT_BELT", 100), ("LKAS_HUD_STAT", 10), ("HEAD_LIGHT", 100), ("LKAS_STATUS", 100), ("GEAR_PRND", 100), ("TURN_SIGNAL", 10), ("SEAT_BELT", 10), ("ACCELATOR_DRIVER", 10), ("THROTTLE", 0), ] return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 0)
def get_can_parser(CP): signals = [ # sig_name, sig_address, default ("WHL_SPD_FL", "WHL_SPD11", 0), ("WHL_SPD_FR", "WHL_SPD11", 0), ("WHL_SPD_RL", "WHL_SPD11", 0), ("WHL_SPD_RR", "WHL_SPD11", 0), ("YAW_RATE", "ESP12", 0), ("CF_Gway_DrvSeatBeltInd", "CGW4", 1), ("CF_Gway_DrvSeatBeltSw", "CGW1", 0), ("CF_Gway_DrvDrSw", "CGW1", 0), # Driver Door ("CF_Gway_AstDrSw", "CGW1", 0), # Passenger door ("CF_Gway_RLDrSw", "CGW2", 0), # Rear reft door ("CF_Gway_RRDrSw", "CGW2", 0), # Rear right door ("CF_Gway_TSigLHSw", "CGW1", 0), ("CF_Gway_TurnSigLh", "CGW1", 0), ("CF_Gway_TSigRHSw", "CGW1", 0), ("CF_Gway_TurnSigRh", "CGW1", 0), ("CF_Gway_ParkBrakeSw", "CGW1", 0), ("CYL_PRES", "ESP12", 0), ("CF_Clu_CruiseSwState", "CLU11", 0), ("CF_Clu_CruiseSwMain", "CLU11", 0), ("CF_Clu_SldMainSW", "CLU11", 0), ("CF_Clu_ParityBit1", "CLU11", 0), ("CF_Clu_VanzDecimal", "CLU11", 0), ("CF_Clu_Vanz", "CLU11", 0), ("CF_Clu_SPEED_UNIT", "CLU11", 0), ("CF_Clu_DetentOut", "CLU11", 0), ("CF_Clu_RheostatLevel", "CLU11", 0), ("CF_Clu_CluInfo", "CLU11", 0), ("CF_Clu_AmpInfo", "CLU11", 0), ("CF_Clu_AliveCnt1", "CLU11", 0), ("ACCEnable", "TCS13", 0), ("BrakeLight", "TCS13", 0), ("DriverBraking", "TCS13", 0), ("DriverOverride", "TCS13", 0), ("ESC_Off_Step", "TCS15", 0), ("CF_Lvr_GearInf", "LVR11", 0), # Transmission Gear (0 = N or P, 1-8 = Fwd, 14 = Rev) ("MainMode_ACC", "SCC11", 0), ("VSetDis", "SCC11", 0), ("SCCInfoDisplay", "SCC11", 0), ("ACC_ObjDist", "SCC11", 0), ("ACC_ObjRelSpd", "SCC11", 0), ("ACCMode", "SCC12", 1), #("LFA_USM", "LFAHDA_MFC", 0), #("LFA_SysWarning", "LFAHDA_MFC", 0), #("ACTIVE2", "LFAHDA_MFC", 0), #("HDA_USM", "LFAHDA_MFC", 0), #("ACTIVE", "LFAHDA_MFC", 0), ] checks = [ # address, frequency ("TCS13", 50), # 916 ("TCS15", 10), ("CLU11", 50), ("ESP12", 100), ("CGW1", 10), ("CGW4", 5), ("WHL_SPD11", 50), # 902 ("SCC11", 50), ("SCC12", 50), ] if not CP.mdpsBus: signals += [("CR_Mdps_StrColTq", "MDPS12", 0), ("CF_Mdps_Def", "MDPS12", 0), ("CF_Mdps_ToiActive", "MDPS12", 0), ("CF_Mdps_ToiUnavail", "MDPS12", 0), ("CF_Mdps_MsgCount2", "MDPS12", 0), ("CF_Mdps_Chksum2", "MDPS12", 0), ("CF_Mdps_ToiFlt", "MDPS12", 0), ("CF_Mdps_SErr", "MDPS12", 0), ("CR_Mdps_StrTq", "MDPS12", 0), ("CF_Mdps_FailStat", "MDPS12", 0), ("CR_Mdps_OutTq", "MDPS12", 0)] checks += [("MDPS12", 50)] if not CP.sasBus: signals += [ ("SAS_Angle", "SAS11", 0), ("SAS_Speed", "SAS11", 0), ] checks += [("SAS11", 100)] if CP.sccBus == -1: signals += [ ("CRUISE_LAMP_M", "EMS16", 0), ("CF_Lvr_CruiseSet", "LVR12", 0), ] signals, checks = CarState.get_parser_ev_hybrid(CP, signals, checks) signals, checks = CarState.get_parser_gears(CP, signals, checks) if CP.carFingerprint in FEATURES["use_bsm"]: signals += [ ("CF_Lca_IndLeft", "LCA11", 0), ("CF_Lca_IndRight", "LCA11", 0), ] checks += [("LCA11", 50)] if CP.carFingerprint in FEATURES["use_fca"]: signals += [ ("FCA_CmdAct", "FCA11", 0), ("CF_VSM_Warn", "FCA11", 0), ] checks += [("FCA11", 50)] else: signals += [ ("AEB_CmdAct", "SCC12", 0), ("CF_VSM_Warn", "SCC12", 0), ] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0)
def get_cam_can_parser(CP): if CP.carFingerprint in PREGLOBAL_CARS: signals = [ ("Cruise_Set_Speed", "ES_DashStatus", 0), ("Not_Ready_Startup", "ES_DashStatus", 0), ("Throttle_Cruise", "ES_CruiseThrottle", 0), ("Signal1", "ES_CruiseThrottle", 0), ("Cruise_Activated", "ES_CruiseThrottle", 0), ("Signal2", "ES_CruiseThrottle", 0), ("Brake_On", "ES_CruiseThrottle", 0), ("Distance_Swap", "ES_CruiseThrottle", 0), ("Standstill", "ES_CruiseThrottle", 0), ("Signal3", "ES_CruiseThrottle", 0), ("Close_Distance", "ES_CruiseThrottle", 0), ("Signal4", "ES_CruiseThrottle", 0), ("Standstill_2", "ES_CruiseThrottle", 0), ("Cruise_Fault", "ES_CruiseThrottle", 0), ("Signal5", "ES_CruiseThrottle", 0), ("Counter", "ES_CruiseThrottle", 0), ("Signal6", "ES_CruiseThrottle", 0), ("Cruise_Button", "ES_CruiseThrottle", 0), ("Signal7", "ES_CruiseThrottle", 0), ] checks = [ ("ES_DashStatus", 20), ("ES_CruiseThrottle", 20), ] else: signals = [ ("Cruise_Set_Speed", "ES_DashStatus", 0), ("Conventional_Cruise", "ES_DashStatus", 0), ("Counter", "ES_Distance", 0), ("Signal1", "ES_Distance", 0), ("Cruise_Fault", "ES_Distance", 0), ("Cruise_Throttle", "ES_Distance", 0), ("Signal2", "ES_Distance", 0), ("Car_Follow", "ES_Distance", 0), ("Signal3", "ES_Distance", 0), ("Cruise_Brake_Active", "ES_Distance", 0), ("Distance_Swap", "ES_Distance", 0), ("Cruise_EPB", "ES_Distance", 0), ("Signal4", "ES_Distance", 0), ("Close_Distance", "ES_Distance", 0), ("Signal5", "ES_Distance", 0), ("Cruise_Cancel", "ES_Distance", 0), ("Cruise_Set", "ES_Distance", 0), ("Cruise_Resume", "ES_Distance", 0), ("Signal6", "ES_Distance", 0), ("Counter", "ES_LKAS_State", 0), ("LKAS_Alert_Msg", "ES_LKAS_State", 0), ("Signal1", "ES_LKAS_State", 0), ("LKAS_ACTIVE", "ES_LKAS_State", 0), ("LKAS_Dash_State", "ES_LKAS_State", 0), ("Signal2", "ES_LKAS_State", 0), ("Backward_Speed_Limit_Menu", "ES_LKAS_State", 0), ("LKAS_Left_Line_Enable", "ES_LKAS_State", 0), ("LKAS_Left_Line_Light_Blink", "ES_LKAS_State", 0), ("LKAS_Right_Line_Enable", "ES_LKAS_State", 0), ("LKAS_Right_Line_Light_Blink", "ES_LKAS_State", 0), ("LKAS_Left_Line_Visible", "ES_LKAS_State", 0), ("LKAS_Right_Line_Visible", "ES_LKAS_State", 0), ("LKAS_Alert", "ES_LKAS_State", 0), ("Signal3", "ES_LKAS_State", 0), ] checks = [ ("ES_DashStatus", 10), ("ES_Distance", 20), ("ES_LKAS_State", 10), ] return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 2)
def get_can_parser(CP): # this function generates lists for signal, messages and initial values signals = [ # sig_name, sig_address, default ("LEFT_BLINK", "BLINK_INFO", 0), ("RIGHT_BLINK", "BLINK_INFO", 0), ("STEER_ANGLE", "STEER", 0), ("STEER_ANGLE_RATE", "STEER_RATE", 0), ("STEER_TORQUE_SENSOR", "STEER_TORQUE", 0), ("STEER_TORQUE_MOTOR", "STEER_TORQUE", 0), ("FL", "WHEEL_SPEEDS", 0), ("FR", "WHEEL_SPEEDS", 0), ("RL", "WHEEL_SPEEDS", 0), ("RR", "WHEEL_SPEEDS", 0), ] checks = [ # sig_address, frequency ("BLINK_INFO", 10), ("STEER", 67), ("STEER_RATE", 83), ("STEER_TORQUE", 83), ("WHEEL_SPEEDS", 100), ] if CP.carFingerprint in GEN1: signals += [ ("LKAS_BLOCK", "STEER_RATE", 0), ("LKAS_TRACK_STATE", "STEER_RATE", 0), ("HANDS_OFF_5_SECONDS", "STEER_RATE", 0), ("CRZ_ACTIVE", "CRZ_CTRL", 0), ("STANDSTILL", "PEDALS", 0), ("BRAKE_ON", "PEDALS", 0), ("BRAKE_PRESSURE", "BRAKE", 0), ("GEAR", "GEAR", 0), ("DRIVER_SEATBELT", "SEATBELT", 0), ("FL", "DOORS", 0), ("FR", "DOORS", 0), ("BL", "DOORS", 0), ("BR", "DOORS", 0), ("PEDAL_GAS", "ENGINE_DATA", 0), ("SPEED", "ENGINE_DATA", 0), ("RES", "CRZ_BTNS", 0), ("SET_P", "CRZ_BTNS", 0), ("SET_M", "CRZ_BTNS", 0), ("CTR", "CRZ_BTNS", 0), ("LEFT_BS1", "BSM", 0), ("RIGHT_BS1", "BSM", 0), ] checks += [ ("ENGINE_DATA", 100), ("CRZ_CTRL", 50), ("CRZ_BTNS", 10), ("PEDALS", 50), ("BRAKE", 50), ("SEATBELT", 10), ("DOORS", 10), ("GEAR", 20), ("BSM", 10), ] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0)
def test_standstill_and_cancel(self): self.longMessage = True car_name = TOYOTA.RAV4 sendcan = messaging.pub_sock('sendcan') params = CarInterface.get_params(car_name) CI = CarInterface(params, CarController) # Get parser parser_signals = [ ('RELEASE_STANDSTILL', 'ACC_CONTROL', 0), ('CANCEL_REQ', 'ACC_CONTROL', 0), ('SET_ME_X3', 'ACC_CONTROL', 0), ('SET_ME_1', 'ACC_CONTROL', 0), ] parser = CANParser(CI.cp.dbc_name, parser_signals, [], 0, sendcan=True, tcp_addr="127.0.0.1") time.sleep(0.2) # Slow joiner syndrome control = car.CarControl.new_message() control.enabled = True CI.update(control) CI.CS.pcm_acc_status = 8 # Active CI.CS.standstill = True can_sends = CI.apply(control) sendcan.send(can_list_to_can_capnp(can_sends, msgtype='sendcan')) for _ in range(5): parser.update(int(sec_since_boot() * 1e9), False) time.sleep(0.01) self.assertEqual(0x3, parser.vl['ACC_CONTROL']['SET_ME_X3']) self.assertEqual(1, parser.vl['ACC_CONTROL']['SET_ME_1']) self.assertFalse(parser.vl['ACC_CONTROL']['RELEASE_STANDSTILL']) self.assertFalse(parser.vl['ACC_CONTROL']['CANCEL_REQ']) CI.CS.pcm_acc_status = 7 # Standstill for _ in range(10): can_sends = CI.apply(control) sendcan.send(can_list_to_can_capnp(can_sends, msgtype='sendcan')) for _ in range(5): parser.update(int(sec_since_boot() * 1e9), False) time.sleep(0.01) self.assertTrue(parser.vl['ACC_CONTROL']['RELEASE_STANDSTILL']) cruise = car.CarControl.CruiseControl.new_message() cruise.cancel = True control.cruiseControl = cruise for _ in range(10): can_sends = CI.apply(control) sendcan.send(can_list_to_can_capnp(can_sends, msgtype='sendcan')) for _ in range(5): parser.update(int(sec_since_boot() * 1e9), False) time.sleep(0.01) self.assertTrue(parser.vl['ACC_CONTROL']['CANCEL_REQ'])
def get_can_parser(CP): signals = [ # sig_name, sig_address, default ("STEER_ANGLE", "STEER_ANGLE_SENSOR", 0), ("GEAR", "GEAR_PACKET", 0), ("BRAKE_PRESSED", "BRAKE_MODULE", 0), ("GAS_PEDAL", "GAS_PEDAL", 0), ("WHEEL_SPEED_FL", "WHEEL_SPEEDS", 0), ("WHEEL_SPEED_FR", "WHEEL_SPEEDS", 0), ("WHEEL_SPEED_RL", "WHEEL_SPEEDS", 0), ("WHEEL_SPEED_RR", "WHEEL_SPEEDS", 0), ("DOOR_OPEN_FL", "SEATS_DOORS", 1), ("DOOR_OPEN_FR", "SEATS_DOORS", 1), ("DOOR_OPEN_RL", "SEATS_DOORS", 1), ("DOOR_OPEN_RR", "SEATS_DOORS", 1), ("SEATBELT_DRIVER_UNLATCHED", "SEATS_DOORS", 1), ("TC_DISABLED", "ESP_CONTROL", 1), ("STEER_FRACTION", "STEER_ANGLE_SENSOR", 0), ("STEER_RATE", "STEER_ANGLE_SENSOR", 0), ("CRUISE_ACTIVE", "PCM_CRUISE", 0), ("CRUISE_STATE", "PCM_CRUISE", 0), ("GAS_RELEASED", "PCM_CRUISE", 1), ("STEER_TORQUE_DRIVER", "STEER_TORQUE_SENSOR", 0), ("STEER_TORQUE_EPS", "STEER_TORQUE_SENSOR", 0), ("STEER_ANGLE", "STEER_TORQUE_SENSOR", 0), ("TURN_SIGNALS", "STEERING_LEVERS", 3), # 3 is no blinkers ("LKA_STATE", "EPS_STATUS", 0), ("BRAKE_LIGHTS_ACC", "ESP_CONTROL", 0), ("AUTO_HIGH_BEAM", "LIGHT_STALK", 0), ] checks = [ ("BRAKE_MODULE", 40), ("GAS_PEDAL", 33), ("WHEEL_SPEEDS", 80), ("STEER_ANGLE_SENSOR", 80), ("PCM_CRUISE", 33), ("STEER_TORQUE_SENSOR", 50), ("EPS_STATUS", 25), ] if CP.carFingerprint == CAR.LEXUS_IS: signals.append(("MAIN_ON", "DSU_CRUISE", 0)) signals.append(("SET_SPEED", "DSU_CRUISE", 0)) checks.append(("DSU_CRUISE", 5)) else: signals.append(("MAIN_ON", "PCM_CRUISE_2", 0)) signals.append(("SET_SPEED", "PCM_CRUISE_2", 0)) signals.append(("LOW_SPEED_LOCKOUT", "PCM_CRUISE_2", 0)) checks.append(("PCM_CRUISE_2", 33)) if CP.carFingerprint == CAR.PRIUS: signals += [("STATE", "AUTOPARK_STATUS", 0)] # add gas interceptor reading if we are using it if CP.enableGasInterceptor: signals.append(("INTERCEPTOR_GAS", "GAS_SENSOR", 0)) signals.append(("INTERCEPTOR_GAS2", "GAS_SENSOR", 0)) checks.append(("GAS_SENSOR", 50)) if CP.carFingerprint in TSS2_CAR: signals += [("L_ADJACENT", "BSM", 0)] signals += [("R_ADJACENT", "BSM", 0)] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0)
def get_can_parser(CP): checks = [] signals = [ # sig_name, sig_address, default ("WHL_SPD_FL", "WHL_SPD11", 0), ("WHL_SPD_FR", "WHL_SPD11", 0), ("WHL_SPD_RL", "WHL_SPD11", 0), ("WHL_SPD_RR", "WHL_SPD11", 0), ("YAW_RATE", "ESP12", 0), ("CF_Gway_DrvSeatBeltInd", "CGW4", 1), ("CF_Gway_DrvSeatBeltSw", "CGW1", 0), ("CF_Gway_DrvDrSw", "CGW1", 0), # Driver Door ("CF_Gway_AstDrSw", "CGW1", 0), # Passenger door ("CF_Gway_RLDrSw", "CGW2", 0), # Rear reft door ("CF_Gway_RRDrSw", "CGW2", 0), # Rear right door ("CF_Gway_TSigLHSw", "CGW1", 0), ("CF_Gway_TurnSigLh", "CGW1", 0), ("CF_Gway_TSigRHSw", "CGW1", 0), ("CF_Gway_TurnSigRh", "CGW1", 0), ("CF_Gway_ParkBrakeSw", "CGW1", 0), ("CYL_PRES", "ESP12", 0), ("AVH_STAT", "ESP11", 0), ("CF_Clu_CruiseSwState", "CLU11", 0), ("CF_Clu_CruiseSwMain", "CLU11", 0), ("CF_Clu_SldMainSW", "CLU11", 0), ("CF_Clu_ParityBit1", "CLU11", 0), ("CF_Clu_VanzDecimal", "CLU11", 0), ("CF_Clu_Vanz", "CLU11", 0), ("CF_Clu_SPEED_UNIT", "CLU11", 0), ("CF_Clu_DetentOut", "CLU11", 0), ("CF_Clu_RheostatLevel", "CLU11", 0), ("CF_Clu_CluInfo", "CLU11", 0), ("CF_Clu_AmpInfo", "CLU11", 0), ("CF_Clu_AliveCnt1", "CLU11", 0), ("ACCEnable", "TCS13", 0), ("BrakeLight", "TCS13", 0), ("DriverBraking", "TCS13", 0), ("DriverOverride", "TCS13", 0), ("ESC_Off_Step", "TCS15", 0), ("CF_Lvr_CruiseSet", "LVR12", 0), ("CRUISE_LAMP_M", "EMS16", 0), ("CR_VSM_Alive", "SCC12", 0), ("AliveCounterACC", "SCC11", 0), ("CR_FCA_Alive", "FCA11", 0), ("Supplemental_Counter", "FCA11", 0), ] checks = [ # address, frequency ("TCS13", 50), ("TCS15", 10), ("CLU11", 50), ("ESP12", 100), ("CGW1", 10), ("CGW4", 5), ("WHL_SPD11", 50), ] if CP.sccBus == 0: signals += [ ("MainMode_ACC", "SCC11", 0), ("VSetDis", "SCC11", 0), ("SCCInfoDisplay", "SCC11", 0), ("ACC_ObjStatus", "SCC11", 0), ("ACC_ObjDist", "SCC11", 0), ("ObjValid", "SCC11", 0), ("ACC_ObjRelSpd", "SCC11", 0), ("AliveCounterACC", "SCC11", 0), ("ACCMode", "SCC12", 1), ("AEB_CmdAct", "SCC12", 0), ("CF_VSM_Warn", "SCC12", 0), ("CR_VSM_Alive", "SCC12", 0), ] checks += [ ("SCC11", 50), ("SCC12", 50), ] if CP.fcaBus == 0: signals += [ ("FCA_CmdAct", "FCA11", 0), ("CF_VSM_Warn", "FCA11", 0), ("CR_FCA_Alive", "FCA11", 0), ("Supplemental_Counter", "FCA11", 0), ] checks += [("FCA11", 50)] if not CP.mdpsHarness: signals += [("CR_Mdps_StrColTq", "MDPS12", 0), ("CF_Mdps_Def", "MDPS12", 0), ("CF_Mdps_ToiActive", "MDPS12", 0), ("CF_Mdps_ToiUnavail", "MDPS12", 0), ("CF_Mdps_MsgCount2", "MDPS12", 0), ("CF_Mdps_Chksum2", "MDPS12", 0), ("CF_Mdps_ToiFlt", "MDPS12", 0), ("CF_Mdps_SErr", "MDPS12", 0), ("CR_Mdps_StrTq", "MDPS12", 0), ("CF_Mdps_FailStat", "MDPS12", 0), ("CR_Mdps_OutTq", "MDPS12", 0)] checks += [("MDPS12", 50)] if CP.sasBus == 0: signals += [ ("SAS_Angle", "SAS11", 0), ("SAS_Speed", "SAS11", 0), ] checks += [("SAS11", 100)] if CP.bsmAvailable: signals += [ ("CF_Lca_IndLeft", "LCA11", 0), ("CF_Lca_IndRight", "LCA11", 0), ] checks += [("LCA11", 50)] if CP.carFingerprint in ELEC_VEH: signals += [ ("Accel_Pedal_Pos", "E_EMS11", 0), ] checks += [ ("E_EMS11", 50), ] elif CP.carFingerprint in HYBRID_VEH: signals += [ ("CR_Vcu_AccPedDep_Pc", "EV_PC4", 0), ] checks += [ ("EV_PC4", 50), ] elif CP.emsAvailable: signals += [ ("PV_AV_CAN", "EMS12", 0), ("CF_Ems_AclAct", "EMS16", 0), ] checks += [ ("EMS12", 100), ("EMS16", 100), ] if CP.carFingerprint in FEATURES["use_cluster_gears"]: signals += [ ("CF_Clu_InhibitD", "CLU15", 0), ("CF_Clu_InhibitP", "CLU15", 0), ("CF_Clu_InhibitN", "CLU15", 0), ("CF_Clu_InhibitR", "CLU15", 0), ] checks += [("CLU15", 5)] elif CP.carFingerprint in FEATURES["use_tcu_gears"]: signals += [("CUR_GR", "TCU12", 0)] checks += [("TCU12", 100)] elif CP.evgearAvailable: signals += [("Elect_Gear_Shifter", "ELECT_GEAR", 0)] checks += [("ELECT_GEAR", 20)] elif CP.lvrAvailable: signals += [("CF_Lvr_Gear", "LVR12", 0)] checks += [("LVR12", 100)] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0)
def get_can_parser(self, CP): signals, checks = get_can_signals(CP, self.gearbox_msg, self.main_on_sig_msg) bus_pt = 1 if CP.carFingerprint in HONDA_BOSCH else 0 return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, bus_pt)
def get_can_parser(CP): signals = [ # sig_name, sig_address ("LEFT_BLINK", "BLINK_INFO"), ("RIGHT_BLINK", "BLINK_INFO"), ("HIGH_BEAMS", "BLINK_INFO"), ("STEER_ANGLE", "STEER"), ("STEER_ANGLE_RATE", "STEER_RATE"), ("STEER_TORQUE_SENSOR", "STEER_TORQUE"), ("STEER_TORQUE_MOTOR", "STEER_TORQUE"), ("FL", "WHEEL_SPEEDS"), ("FR", "WHEEL_SPEEDS"), ("RL", "WHEEL_SPEEDS"), ("RR", "WHEEL_SPEEDS"), ] checks = [ # sig_address, frequency ("BLINK_INFO", 10), ("STEER", 67), ("STEER_RATE", 83), ("STEER_TORQUE", 83), ("WHEEL_SPEEDS", 100), ] if CP.carFingerprint in GEN1: signals += [ ("LKAS_BLOCK", "STEER_RATE"), ("LKAS_TRACK_STATE", "STEER_RATE"), ("HANDS_OFF_5_SECONDS", "STEER_RATE"), ("CRZ_ACTIVE", "CRZ_CTRL"), ("CRZ_AVAILABLE", "CRZ_CTRL"), ("CRZ_SPEED", "CRZ_EVENTS"), ("STANDSTILL", "PEDALS"), ("BRAKE_ON", "PEDALS"), ("BRAKE_PRESSURE", "BRAKE"), ("GEAR", "GEAR"), ("DRIVER_SEATBELT", "SEATBELT"), ("FL", "DOORS"), ("FR", "DOORS"), ("BL", "DOORS"), ("BR", "DOORS"), ("PEDAL_GAS", "ENGINE_DATA"), ("SPEED", "ENGINE_DATA"), ("CTR", "CRZ_BTNS"), ("LEFT_BS1", "BSM"), ("RIGHT_BS1", "BSM"), ] checks += [ ("ENGINE_DATA", 100), ("CRZ_CTRL", 50), ("CRZ_EVENTS", 50), ("CRZ_BTNS", 10), ("PEDALS", 50), ("BRAKE", 50), ("SEATBELT", 10), ("DOORS", 10), ("GEAR", 20), ("BSM", 10), ] return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 0)
def get_can_parser(CP): signals = [ # sig_name, sig_address ("WHL_SPD_FL", "WHL_SPD11"), ("WHL_SPD_FR", "WHL_SPD11"), ("WHL_SPD_RL", "WHL_SPD11"), ("WHL_SPD_RR", "WHL_SPD11"), ("YAW_RATE", "ESP12"), ("CF_Gway_DrvSeatBeltInd", "CGW4"), ("CF_Gway_DrvSeatBeltSw", "CGW1"), ("CF_Gway_DrvDrSw", "CGW1"), # Driver Door ("CF_Gway_AstDrSw", "CGW1"), # Passenger door ("CF_Gway_RLDrSw", "CGW2"), # Rear reft door ("CF_Gway_RRDrSw", "CGW2"), # Rear right door ("CF_Gway_TurnSigLh", "CGW1"), ("CF_Gway_TurnSigRh", "CGW1"), ("CF_Gway_ParkBrakeSw", "CGW1"), ("CYL_PRES", "ESP12"), ("CF_Clu_CruiseSwState", "CLU11"), ("CF_Clu_CruiseSwMain", "CLU11"), ("CF_Clu_SldMainSW", "CLU11"), ("CF_Clu_ParityBit1", "CLU11"), ("CF_Clu_VanzDecimal", "CLU11"), ("CF_Clu_Vanz", "CLU11"), ("CF_Clu_SPEED_UNIT", "CLU11"), ("CF_Clu_DetentOut", "CLU11"), ("CF_Clu_RheostatLevel", "CLU11"), ("CF_Clu_CluInfo", "CLU11"), ("CF_Clu_AmpInfo", "CLU11"), ("CF_Clu_AliveCnt1", "CLU11"), ("ACCEnable", "TCS13"), ("ACC_REQ", "TCS13"), ("DriverBraking", "TCS13"), ("StandStill", "TCS13"), ("PBRAKE_ACT", "TCS13"), ("ESC_Off_Step", "TCS15"), ("AVH_LAMP", "TCS15"), ("CR_Mdps_StrColTq", "MDPS12"), ("CF_Mdps_ToiActive", "MDPS12"), ("CF_Mdps_ToiUnavail", "MDPS12"), ("CF_Mdps_ToiFlt", "MDPS12"), ("CR_Mdps_OutTq", "MDPS12"), ("SAS_Angle", "SAS11"), ("SAS_Speed", "SAS11"), ] checks = [ # address, frequency ("MDPS12", 50), ("TCS13", 50), ("TCS15", 10), ("CLU11", 50), ("ESP12", 100), ("CGW1", 10), ("CGW2", 5), ("CGW4", 5), ("WHL_SPD11", 50), ("SAS11", 100), ] if not CP.openpilotLongitudinalControl: signals += [ ("MainMode_ACC", "SCC11"), ("VSetDis", "SCC11"), ("SCCInfoDisplay", "SCC11"), ("ACC_ObjDist", "SCC11"), ("ACCMode", "SCC12"), ] checks += [ ("SCC11", 50), ("SCC12", 50), ] if CP.carFingerprint in FEATURES["use_fca"]: signals += [ ("FCA_CmdAct", "FCA11"), ("CF_VSM_Warn", "FCA11"), ] checks.append(("FCA11", 50)) else: signals += [ ("AEB_CmdAct", "SCC12"), ("CF_VSM_Warn", "SCC12"), ] if CP.enableBsm: signals += [ ("CF_Lca_IndLeft", "LCA11"), ("CF_Lca_IndRight", "LCA11"), ] checks.append(("LCA11", 50)) if CP.carFingerprint in (HYBRID_CAR | EV_CAR): if CP.carFingerprint in HYBRID_CAR: signals.append(("CR_Vcu_AccPedDep_Pos", "E_EMS11")) else: signals.append(("Accel_Pedal_Pos", "E_EMS11")) checks.append(("E_EMS11", 50)) else: signals += [ ("PV_AV_CAN", "EMS12"), ("CF_Ems_AclAct", "EMS16"), ] checks += [ ("EMS12", 100), ("EMS16", 100), ] if CP.carFingerprint in FEATURES["use_cluster_gears"]: signals.append(("CF_Clu_Gear", "CLU15")) checks.append(("CLU15", 5)) elif CP.carFingerprint in FEATURES["use_tcu_gears"]: signals.append(("CUR_GR", "TCU12")) checks.append(("TCU12", 100)) elif CP.carFingerprint in FEATURES["use_elect_gears"]: signals.append(("Elect_Gear_Shifter", "ELECT_GEAR")) checks.append(("ELECT_GEAR", 20)) else: signals.append(("CF_Lvr_Gear", "LVR12")) checks.append(("LVR12", 100)) return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 0)
def get_can_parser(CP): signals = [ # sig_name, sig_address ("BrakePedalPosition", "EBCMBrakePedalPosition"), ("FrontLeftDoor", "BCMDoorBeltStatus"), ("FrontRightDoor", "BCMDoorBeltStatus"), ("RearLeftDoor", "BCMDoorBeltStatus"), ("RearRightDoor", "BCMDoorBeltStatus"), ("LeftSeatBelt", "BCMDoorBeltStatus"), ("RightSeatBelt", "BCMDoorBeltStatus"), ("TurnSignals", "BCMTurnSignals"), ("AcceleratorPedal2", "AcceleratorPedal2"), ("CruiseState", "AcceleratorPedal2"), ("ACCButtons", "ASCMSteeringButton"), ("SteeringWheelAngle", "PSCMSteeringAngle"), ("SteeringWheelRate", "PSCMSteeringAngle"), ("FLWheelSpd", "EBCMWheelSpdFront"), ("FRWheelSpd", "EBCMWheelSpdFront"), ("RLWheelSpd", "EBCMWheelSpdRear"), ("RRWheelSpd", "EBCMWheelSpdRear"), ("PRNDL2", "ECMPRDNL2"), ("ManualMode", "ECMPRDNL2"), ("LKADriverAppldTrq", "PSCMStatus"), ("LKATorqueDelivered", "PSCMStatus"), ("LKATorqueDeliveredStatus", "PSCMStatus"), ("TractionControlOn", "ESPStatus"), ("CruiseMainOn", "ECMEngineStatus"), ("Brake_Pressed", "ECMEngineStatus"), ] checks = [ ("BCMTurnSignals", 1), ("ECMPRDNL2", 10), ("PSCMStatus", 10), ("ESPStatus", 10), ("BCMDoorBeltStatus", 10), ("EBCMWheelSpdFront", 20), ("EBCMWheelSpdRear", 20), ("AcceleratorPedal2", 33), ("ASCMSteeringButton", 33), ("ECMEngineStatus", 100), ("PSCMSteeringAngle", 100), ("EBCMBrakePedalPosition", 100), ] # TODO: Might be wise to find the non-electronic parking brake signal # TODO: JJS Add hasEPB to cereal if CP.carFingerprint != CAR.SUBURBAN and CP.carFingerprint != CAR.TAHOE_NR: signals.append(("EPBClosed", "EPBStatus", 0)) checks.append(("EPBStatus", 20)) if CP.enableGasInterceptor: signals.append(("INTERCEPTOR_GAS", "GAS_SENSOR")) signals.append(("INTERCEPTOR_GAS2", "GAS_SENSOR")) checks.append(("GAS_SENSOR", 50)) if CP.carFingerprint in EV_CAR: signals.append(("RegenPaddle", "EBCMRegenPaddle")) checks.append(("EBCMRegenPaddle", 50)) return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, CanBus.POWERTRAIN)
def get_can2_parser(CP): signals = [] checks = [] if CP.mdpsBus == 1: signals += [("CR_Mdps_StrColTq", "MDPS12", 0), ("CF_Mdps_Def", "MDPS12", 0), ("CF_Mdps_ToiActive", "MDPS12", 0), ("CF_Mdps_ToiUnavail", "MDPS12", 0), ("CF_Mdps_MsgCount2", "MDPS12", 0), ("CF_Mdps_Chksum2", "MDPS12", 0), ("CF_Mdps_ToiFlt", "MDPS12", 0), ("CF_Mdps_SErr", "MDPS12", 0), ("CR_Mdps_StrTq", "MDPS12", 0), ("CF_Mdps_FailStat", "MDPS12", 0), ("CR_Mdps_OutTq", "MDPS12", 0)] checks += [("MDPS12", 50)] if CP.spasEnabled: signals += [ ("CR_Mdps_StrAng", "MDPS11", 0), ("CF_Mdps_Stat", "MDPS11", 0), ] checks += [ ("MDPS11", 100), ] if CP.sasBus == 1: signals += [ ("SAS_Angle", "SAS11", 0), ("SAS_Speed", "SAS11", 0), ] checks += [("SAS11", 100)] if CP.sccBus == 1: signals += [ ("MainMode_ACC", "SCC11", 1), ("SCCInfoDisplay", "SCC11", 0), ("AliveCounterACC", "SCC11", 0), ("VSetDis", "SCC11", 30), ("ObjValid", "SCC11", 0), ("DriverAlertDisplay", "SCC11", 0), ("TauGapSet", "SCC11", 4), ("ACC_ObjStatus", "SCC11", 0), ("ACC_ObjLatPos", "SCC11", 0), ("ACC_ObjDist", "SCC11", 150.), ("ACC_ObjRelSpd", "SCC11", 0), ("Navi_SCC_Curve_Status", "SCC11", 0), ("Navi_SCC_Curve_Act", "SCC11", 0), ("Navi_SCC_Camera_Act", "SCC11", 0), ("Navi_SCC_Camera_Status", "SCC11", 2), ("ACCMode", "SCC12", 0), ("CF_VSM_Prefill", "SCC12", 0), ("CF_VSM_DecCmdAct", "SCC12", 0), ("CF_VSM_HBACmd", "SCC12", 0), ("CF_VSM_Warn", "SCC12", 0), ("CF_VSM_Stat", "SCC12", 0), ("CF_VSM_BeltCmd", "SCC12", 0), ("ACCFailInfo", "SCC12", 0), ("StopReq", "SCC12", 0), ("CR_VSM_DecCmd", "SCC12", 0), ("aReqRaw", "SCC12", 0), #aReqMax ("TakeOverReq", "SCC12", 0), ("PreFill", "SCC12", 0), ("aReqValue", "SCC12", 0), #aReqMin ("CF_VSM_ConfMode", "SCC12", 1), ("AEB_Failinfo", "SCC12", 0), ("AEB_Status", "SCC12", 2), ("AEB_CmdAct", "SCC12", 0), ("AEB_StopReq", "SCC12", 0), ("CR_VSM_Alive", "SCC12", 0), ("CR_VSM_ChkSum", "SCC12", 0), ("SCCDrvModeRValue", "SCC13", 2), ("SCC_Equip", "SCC13", 1), ("AebDrvSetStatus", "SCC13", 0), ("JerkUpperLimit", "SCC14", 0), ("JerkLowerLimit", "SCC14", 0), ("SCCMode2", "SCC14", 0), ("ComfortBandUpper", "SCC14", 0), ("ComfortBandLower", "SCC14", 0), ] checks += [ ("SCC11", 50), ("SCC12", 50), ] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 1)
def test_ui(self): self.longMessage = True car_name = TOYOTA.RAV4 sendcan = messaging.pub_sock('sendcan') params = CarInterface.get_params(car_name) CI = CarInterface(params, CarController) # Get parser parser_signals = [ ('BARRIERS', 'LKAS_HUD', -1), ('RIGHT_LINE', 'LKAS_HUD', 0), ('LEFT_LINE', 'LKAS_HUD', 0), ('SET_ME_X01', 'LKAS_HUD', 0), ('SET_ME_X01_2', 'LKAS_HUD', 0), ('LDA_ALERT', 'LKAS_HUD', -1), ('SET_ME_X0C', 'LKAS_HUD', 0), ('SET_ME_X2C', 'LKAS_HUD', 0), ('SET_ME_X38', 'LKAS_HUD', 0), ('SET_ME_X02', 'LKAS_HUD', 0), ] parser = CANParser(CI.cp.dbc_name, parser_signals, [], 0, sendcan=True, tcp_addr="127.0.0.1") time.sleep(0.2) # Slow joiner syndrome VA = car.CarControl.HUDControl.VisualAlert for left_lane in [True, False]: for right_lane in [True, False]: for steer in [True, False]: control = car.CarControl.new_message() control.enabled = True hud = car.CarControl.HUDControl.new_message() if steer: hud.visualAlert = VA.steerRequired hud.leftLaneVisible = left_lane hud.rightLaneVisible = right_lane control.hudControl = hud CI.update(control) for _ in range(200): # UI is only sent at 1Hz can_sends = CI.apply(control) sendcan.send(can_list_to_can_capnp(can_sends, msgtype='sendcan')) for _ in range(5): parser.update(int(sec_since_boot() * 1e9), False) time.sleep(0.01) self.assertEqual(0x0c, parser.vl['LKAS_HUD']['SET_ME_X0C']) self.assertEqual(0x2c, parser.vl['LKAS_HUD']['SET_ME_X2C']) self.assertEqual(0x38, parser.vl['LKAS_HUD']['SET_ME_X38']) self.assertEqual(0x02, parser.vl['LKAS_HUD']['SET_ME_X02']) self.assertEqual(0, parser.vl['LKAS_HUD']['BARRIERS']) self.assertEqual(1 if right_lane else 2, parser.vl['LKAS_HUD']['RIGHT_LINE']) self.assertEqual(1 if left_lane else 2, parser.vl['LKAS_HUD']['LEFT_LINE']) self.assertEqual(1, parser.vl['LKAS_HUD']['SET_ME_X01']) self.assertEqual(1, parser.vl['LKAS_HUD']['SET_ME_X01_2']) self.assertEqual(steer, parser.vl['LKAS_HUD']['LDA_ALERT'])
def get_cam_can_parser(CP): signals = [ # sig_name, sig_address, default ("CF_Lkas_LdwsActivemode", "LKAS11", 0), ("CF_Lkas_LdwsSysState", "LKAS11", 0), ("CF_Lkas_SysWarning", "LKAS11", 0), ("CF_Lkas_LdwsLHWarning", "LKAS11", 0), ("CF_Lkas_LdwsRHWarning", "LKAS11", 0), ("CF_Lkas_HbaLamp", "LKAS11", 0), ("CF_Lkas_FcwBasReq", "LKAS11", 0), ("CF_Lkas_ToiFlt", "LKAS11", 0), ("CF_Lkas_HbaSysState", "LKAS11", 0), ("CF_Lkas_FcwOpt", "LKAS11", 0), ("CF_Lkas_HbaOpt", "LKAS11", 0), ("CF_Lkas_FcwSysState", "LKAS11", 0), ("CF_Lkas_FcwCollisionWarning", "LKAS11", 0), ("CF_Lkas_MsgCount", "LKAS11", 0), ("CF_Lkas_FusionState", "LKAS11", 0), ("CF_Lkas_FcwOpt_USM", "LKAS11", 0), ("CF_Lkas_LdwsOpt_USM", "LKAS11", 0), ] checks = [("LKAS11", 100)] if CP.sccBus == 2: signals += [ ("MainMode_ACC", "SCC11", 1), ("SCCInfoDisplay", "SCC11", 0), ("AliveCounterACC", "SCC11", 0), ("VSetDis", "SCC11", 30), ("ObjValid", "SCC11", 0), ("DriverAlertDisplay", "SCC11", 0), ("TauGapSet", "SCC11", 4), ("ACC_ObjStatus", "SCC11", 0), ("ACC_ObjLatPos", "SCC11", 0), ("ACC_ObjDist", "SCC11", 150.), ("ACC_ObjRelSpd", "SCC11", 0), ("Navi_SCC_Curve_Status", "SCC11", 0), ("Navi_SCC_Curve_Act", "SCC11", 0), ("Navi_SCC_Camera_Act", "SCC11", 0), ("Navi_SCC_Camera_Status", "SCC11", 2), ("ACCMode", "SCC12", 0), ("CF_VSM_Prefill", "SCC12", 0), ("CF_VSM_DecCmdAct", "SCC12", 0), ("CF_VSM_HBACmd", "SCC12", 0), ("CF_VSM_Warn", "SCC12", 0), ("CF_VSM_Stat", "SCC12", 0), ("CF_VSM_BeltCmd", "SCC12", 0), ("ACCFailInfo", "SCC12", 0), ("StopReq", "SCC12", 0), ("CR_VSM_DecCmd", "SCC12", 0), ("aReqRaw", "SCC12", 0), #aReqMax ("TakeOverReq", "SCC12", 0), ("PreFill", "SCC12", 0), ("aReqValue", "SCC12", 0), #aReqMin ("CF_VSM_ConfMode", "SCC12", 1), ("AEB_Failinfo", "SCC12", 0), ("AEB_Status", "SCC12", 2), ("AEB_CmdAct", "SCC12", 0), ("AEB_StopReq", "SCC12", 0), ("CR_VSM_Alive", "SCC12", 0), ("CR_VSM_ChkSum", "SCC12", 0), ("SCCDrvModeRValue", "SCC13", 2), ("SCC_Equip", "SCC13", 1), ("AebDrvSetStatus", "SCC13", 0), ("JerkUpperLimit", "SCC14", 0), ("JerkLowerLimit", "SCC14", 0), ("SCCMode2", "SCC14", 0), ("ComfortBandUpper", "SCC14", 0), ("ComfortBandLower", "SCC14", 0), ] checks += [ ("SCC11", 50), ("SCC12", 50), ] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 2)
def get_can_parser(CP): signals = [ # sig_name, sig_address, default ("ESP_vehicleSpeed", "ESP_B", 0), ("DI_pedalPos", "DI_torque1", 0), ("DI_brakePedal", "DI_torque2", 0), ("StW_AnglHP", "STW_ANGLHP_STAT", 0), ("StW_AnglHP_Spd", "STW_ANGLHP_STAT", 0), ("EPAS_handsOnLevel", "EPAS_sysStatus", 0), ("EPAS_torsionBarTorque", "EPAS_sysStatus", 0), ("EPAS_internalSAS", "EPAS_sysStatus", 0), ("EPAS_eacStatus", "EPAS_sysStatus", 1), ("EPAS_eacErrorCode", "EPAS_sysStatus", 0), ("DI_cruiseState", "DI_state", 0), ("DI_digitalSpeed", "DI_state", 0), ("DI_speedUnits", "DI_state", 0), ("DI_gear", "DI_torque2", 0), ("DOOR_STATE_FL", "GTW_carState", 1), ("DOOR_STATE_FR", "GTW_carState", 1), ("DOOR_STATE_RL", "GTW_carState", 1), ("DOOR_STATE_RR", "GTW_carState", 1), ("DOOR_STATE_FrontTrunk", "GTW_carState", 1), ("BOOT_STATE", "GTW_carState", 1), ("BC_indicatorLStatus", "GTW_carState", 1), ("BC_indicatorRStatus", "GTW_carState", 1), ("SDM_bcklDrivStatus", "SDM1", 0), ("driverBrakeStatus", "BrakeMessage", 0), # We copy this whole message when spamming cancel ("SpdCtrlLvr_Stat", "STW_ACTN_RQ", 0), ("VSL_Enbl_Rq", "STW_ACTN_RQ", 0), ("SpdCtrlLvrStat_Inv", "STW_ACTN_RQ", 0), ("DTR_Dist_Rq", "STW_ACTN_RQ", 0), ("TurnIndLvr_Stat", "STW_ACTN_RQ", 0), ("HiBmLvr_Stat", "STW_ACTN_RQ", 0), ("WprWashSw_Psd", "STW_ACTN_RQ", 0), ("WprWash_R_Sw_Posn_V2", "STW_ACTN_RQ", 0), ("StW_Lvr_Stat", "STW_ACTN_RQ", 0), ("StW_Cond_Flt", "STW_ACTN_RQ", 0), ("StW_Cond_Psd", "STW_ACTN_RQ", 0), ("HrnSw_Psd", "STW_ACTN_RQ", 0), ("StW_Sw00_Psd", "STW_ACTN_RQ", 0), ("StW_Sw01_Psd", "STW_ACTN_RQ", 0), ("StW_Sw02_Psd", "STW_ACTN_RQ", 0), ("StW_Sw03_Psd", "STW_ACTN_RQ", 0), ("StW_Sw04_Psd", "STW_ACTN_RQ", 0), ("StW_Sw05_Psd", "STW_ACTN_RQ", 0), ("StW_Sw06_Psd", "STW_ACTN_RQ", 0), ("StW_Sw07_Psd", "STW_ACTN_RQ", 0), ("StW_Sw08_Psd", "STW_ACTN_RQ", 0), ("StW_Sw09_Psd", "STW_ACTN_RQ", 0), ("StW_Sw10_Psd", "STW_ACTN_RQ", 0), ("StW_Sw11_Psd", "STW_ACTN_RQ", 0), ("StW_Sw12_Psd", "STW_ACTN_RQ", 0), ("StW_Sw13_Psd", "STW_ACTN_RQ", 0), ("StW_Sw14_Psd", "STW_ACTN_RQ", 0), ("StW_Sw15_Psd", "STW_ACTN_RQ", 0), ("WprSw6Posn", "STW_ACTN_RQ", 0), ("MC_STW_ACTN_RQ", "STW_ACTN_RQ", 0), ("CRC_STW_ACTN_RQ", "STW_ACTN_RQ", 0), ] checks = [ # sig_address, frequency ("ESP_B", 50), ("DI_torque1", 100), ("DI_torque2", 100), ("STW_ANGLHP_STAT", 100), ("EPAS_sysStatus", 25), ("DI_state", 10), ("STW_ACTN_RQ", 10), ("GTW_carState", 10), ("SDM1", 10), ("BrakeMessage", 50), ] return CANParser(DBC[CP.carFingerprint]['chassis'], signals, checks, CANBUS.chassis)
def get_can_parser(CP): signals, checks = get_can_signals(CP) bus_pt = 1 if CP.isPandaBlack and CP.carFingerprint in HONDA_BOSCH else 0 return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, bus_pt)
def get_mqb_pt_can_parser(CP, canbus): # this function generates lists for signal, messages and initial values signals = [ # sig_name, sig_address, default ("LWI_Lenkradwinkel", "LWI_01", 0), # Absolute steering angle ("LWI_VZ_Lenkradwinkel", "LWI_01", 0), # Steering angle sign ("LWI_Lenkradw_Geschw", "LWI_01", 0), # Absolute steering rate ("LWI_VZ_Lenkradw_Geschw", "LWI_01", 0), # Steering rate sign ("ESP_VL_Radgeschw_02", "ESP_19", 0), # ABS wheel speed, front left ("ESP_VR_Radgeschw_02", "ESP_19", 0), # ABS wheel speed, front right ("ESP_HL_Radgeschw_02", "ESP_19", 0), # ABS wheel speed, rear left ("ESP_HR_Radgeschw_02", "ESP_19", 0), # ABS wheel speed, rear right ("ESP_Gierrate", "ESP_02", 0), # Absolute yaw rate ("ESP_VZ_Gierrate", "ESP_02", 0), # Yaw rate sign ("ZV_FT_offen", "Gateway_72", 0), # Door open, driver ("ZV_BT_offen", "Gateway_72", 0), # Door open, passenger ("ZV_HFS_offen", "Gateway_72", 0), # Door open, rear left ("ZV_HBFS_offen", "Gateway_72", 0), # Door open, rear right ("ZV_HD_offen", "Gateway_72", 0), # Trunk or hatch open ("BH_Blinker_li", "Gateway_72", 0), # Left turn signal on ("BH_Blinker_re", "Gateway_72", 0), # Right turn signal on ("GE_Fahrstufe", "Getriebe_11", 0), # Auto trans gear selector position ("AB_Gurtschloss_FA", "Airbag_02", 0), # Seatbelt status, driver ("AB_Gurtschloss_BF", "Airbag_02", 0), # Seatbelt status, passenger ("ESP_Fahrer_bremst", "ESP_05", 0), # Brake pedal pressed ("ESP_Status_Bremsdruck", "ESP_05", 0), # Brakes applied ("ESP_Bremsdruck", "ESP_05", 0), # Brake pressure applied ("MO_Fahrpedalrohwert_01", "Motor_20", 0), # Accelerator pedal value ("MO_Kuppl_schalter", "Motor_14", 0), # Clutch switch ("Driver_Strain", "EPS_01", 0), # Absolute driver torque input ("Driver_Strain_VZ", "EPS_01", 0), # Driver torque input sign ("HCA_Ready", "EPS_01", 0), # Steering rack HCA support configured ("ESP_Tastung_passiv", "ESP_21", 0), # Stability control disabled ("KBI_MFA_v_Einheit_02", "Einheiten_01", 0), # MPH vs KMH speed display ("KBI_Handbremse", "Kombi_01", 0), # Manual handbrake applied ("TSK_Fahrzeugmasse_02", "Motor_16", 0), # Estimated vehicle mass from drivetrain coordinator ("ACC_Status_ACC", "ACC_06", 0), # ACC engagement status ("ACC_Typ", "ACC_06", 0), # ACC type (follow to stop, stop&go) ("SetSpeed", "ACC_02", 0), # ACC set speed ("GRA_Hauptschalter", "GRA_ACC_01", 0), # ACC button, on/off ("GRA_Abbrechen", "GRA_ACC_01", 0), # ACC button, cancel ("GRA_Tip_Setzen", "GRA_ACC_01", 0), # ACC button, set ("GRA_Tip_Hoch", "GRA_ACC_01", 0), # ACC button, increase or accel ("GRA_Tip_Runter", "GRA_ACC_01", 0), # ACC button, decrease or decel ("GRA_Tip_Wiederaufnahme", "GRA_ACC_01", 0), # ACC button, resume ("GRA_Verstellung_Zeitluecke", "GRA_ACC_01", 0), # ACC button, time gap adj ("GRA_Typ_Hauptschalter", "GRA_ACC_01", 0), # ACC main button type ("GRA_Tip_Stufe_2", "GRA_ACC_01", 0), # unknown related to stalk type ("GRA_ButtonTypeInfo", "GRA_ACC_01", 0), # unknown related to stalk type ("COUNTER", "GRA_ACC_01", 0), # GRA_ACC_01 CAN message counter ] checks = [ # sig_address, frequency ("LWI_01", 100), # From J500 Steering Assist with integrated sensors ("EPS_01", 100), # From J500 Steering Assist with integrated sensors ("ESP_19", 100), # From J104 ABS/ESP controller ("ESP_05", 50), # From J104 ABS/ESP controller ("ESP_21", 50), # From J104 ABS/ESP controller ("ACC_06", 50), # From J428 ACC radar control module ("Motor_20", 50), # From J623 Engine control module ("GRA_ACC_01", 33), # From J??? steering wheel control buttons ("ACC_02", 17), # From J428 ACC radar control module ("Getriebe_11", 20), # From J743 Auto transmission control module ("Gateway_72", 10), # From J533 CAN gateway (aggregated data) ("Motor_14", 10), # From J623 Engine control module ("Airbag_02", 5), # From J234 Airbag control module ("Kombi_01", 2), # From J285 Instrument cluster ("Motor_16", 2), # From J623 Engine control module ("Einheiten_01", 1), # From J??? not known if gateway, cluster, or BCM ] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, canbus.pt)
def get_can_parser(CP): # this function generates lists for signal, messages and initial values signals = [ # sig_name, sig_address, default ("Steer_Torque_Sensor", "Steering_Torque", 0), ("Steering_Angle", "Steering_Torque", 0), ("Steer_Error_1", "Steering_Torque", 0), ("Cruise_On", "CruiseControl", 0), ("Cruise_Activated", "CruiseControl", 0), ("Brake_Pedal", "Brake_Pedal", 0), ("Throttle_Pedal", "Throttle", 0), ("LEFT_BLINKER", "Dashlights", 0), ("RIGHT_BLINKER", "Dashlights", 0), ("SEATBELT_FL", "Dashlights", 0), ("FL", "Wheel_Speeds", 0), ("FR", "Wheel_Speeds", 0), ("RL", "Wheel_Speeds", 0), ("RR", "Wheel_Speeds", 0), ("DOOR_OPEN_FR", "BodyInfo", 1), ("DOOR_OPEN_FL", "BodyInfo", 1), ("DOOR_OPEN_RR", "BodyInfo", 1), ("DOOR_OPEN_RL", "BodyInfo", 1), ("Gear", "Transmission", 0), ] checks = [ # sig_address, frequency ("Throttle", 100), ("Dashlights", 10), ("Brake_Pedal", 50), ("Wheel_Speeds", 50), ("Transmission", 100), ("Steering_Torque", 50), ("BodyInfo", 1), ] if CP.enableBsm: signals += [ ("L_ADJACENT", "BSD_RCTA", 0), ("R_ADJACENT", "BSD_RCTA", 0), ("L_APPROACHING", "BSD_RCTA", 0), ("R_APPROACHING", "BSD_RCTA", 0), ] checks += [ ("BSD_RCTA", 17), ] if CP.carFingerprint not in PREGLOBAL_CARS: signals += [ ("Steer_Warning", "Steering_Torque", 0), ("UNITS", "Dashlights", 0), ] checks += [ ("Dashlights", 10), ("BodyInfo", 10), ("CruiseControl", 20), ] else: signals += [ ("UNITS", "Dash_State2", 0), ] checks += [ ("Dash_State2", 1), ] if CP.carFingerprint == CAR.FORESTER_PREGLOBAL: checks += [ ("Dashlights", 20), ("BodyInfo", 1), ("CruiseControl", 50), ] if CP.carFingerprint in [ CAR.LEGACY_PREGLOBAL, CAR.OUTBACK_PREGLOBAL, CAR.OUTBACK_PREGLOBAL_2018 ]: checks += [ ("Dashlights", 10), ("CruiseControl", 50), ] return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, 0)
def get_can_parser(CP): signals = [ # sig_name, sig_address ("Veh_V_ActlEng", "EngVehicleSpThrottle2" ), # ABS vehicle speed (kph) ("VehYaw_W_Actl", "Yaw_Data_FD1"), # ABS vehicle yaw rate (rad/s) ("VehStop_D_Stat", "DesiredTorqBrk"), # ABS vehicle stopped ("PrkBrkStatus", "DesiredTorqBrk"), # ABS park brake status ("ApedPos_Pc_ActlArb", "EngVehicleSpThrottle"), # PCM throttle (pct) ("BrkTot_Tq_Actl", "BrakeSnData_4"), # ABS brake torque (Nm) ("BpedDrvAppl_D_Actl", "EngBrakeData"), # PCM driver brake pedal pressed ("Veh_V_DsplyCcSet", "EngBrakeData"), # PCM ACC set speed (mph) # The units might change with IPC settings? ("CcStat_D_Actl", "EngBrakeData"), # PCM ACC status ("StePinComp_An_Est", "SteeringPinion_Data"), # PSCM estimated steering angle (deg) # Calculates steering angle (and offset) from pinion # angle and driving measurements. # StePinRelInit_An_Sns is the pinion angle, initialised # to zero at the beginning of the drive. ("SteeringColumnTorque", "EPAS_INFO" ), # PSCM steering column torque (Nm) ("EPAS_Failure", "EPAS_INFO"), # PSCM EPAS status ("LaHandsOff_B_Actl", "Lane_Assist_Data3_FD1"), # PSCM LKAS hands off wheel ("TurnLghtSwtch_D_Stat", "Steering_Data_FD1"), # SCCM Turn signal switch ("TjaButtnOnOffPress", "Steering_Data_FD1" ), # SCCM ACC button, lane-centering/traffic jam assist toggle ("DrStatDrv_B_Actl", "BodyInfo_3_FD1"), # BCM Door open, driver ("DrStatPsngr_B_Actl", "BodyInfo_3_FD1"), # BCM Door open, passenger ("DrStatRl_B_Actl", "BodyInfo_3_FD1"), # BCM Door open, rear left ("DrStatRr_B_Actl", "BodyInfo_3_FD1"), # BCM Door open, rear right ("FirstRowBuckleDriver", "RCMStatusMessage2_FD1"), # RCM Seatbelt status, driver ] checks = [ # sig_address, frequency ("EngVehicleSpThrottle2", 50), ("Yaw_Data_FD1", 100), ("DesiredTorqBrk", 50), ("EngVehicleSpThrottle", 100), ("BrakeSnData_4", 50), ("EngBrakeData", 10), ("SteeringPinion_Data", 100), ("EPAS_INFO", 50), ("Lane_Assist_Data3_FD1", 33), ("Steering_Data_FD1", 10), ("BodyInfo_3_FD1", 2), ("RCMStatusMessage2_FD1", 10), ] if CP.transmissionType == TransmissionType.automatic: signals += [ ("TrnGear_D_RqDrv", "Gear_Shift_by_Wire_FD1"), # GWM transmission gear position ] checks += [ ("Gear_Shift_by_Wire_FD1", 10), ] elif CP.transmissionType == TransmissionType.manual: signals += [ ("CluPdlPos_Pc_Meas", "Engine_Clutch_Data"), # PCM clutch (pct) ("RvrseLghtOn_B_Stat", "BCM_Lamp_Stat_FD1"), # BCM reverse light ] checks += [ ("Engine_Clutch_Data", 33), ("BCM_Lamp_Stat_FD1", 1), ] if CP.enableBsm: signals += [ ("SodDetctLeft_D_Stat", "Side_Detect_L_Stat"), # Blindspot sensor, left ("SodDetctRight_D_Stat", "Side_Detect_R_Stat"), # Blindspot sensor, right ] checks += [ ("Side_Detect_L_Stat", 5), ("Side_Detect_R_Stat", 5), ] return CANParser(DBC[CP.carFingerprint]["pt"], signals, checks, CANBUS.main)
def get_can_parser(CP): signals = [ # sig_name, sig_address, default ("WHL_SPD_FL", "WHL_SPD11", 0), ("WHL_SPD_FR", "WHL_SPD11", 0), ("WHL_SPD_RL", "WHL_SPD11", 0), ("WHL_SPD_RR", "WHL_SPD11", 0), ("YAW_RATE", "ESP12", 0), ("CF_Gway_DrvSeatBeltInd", "CGW4", 1), ("CF_Gway_DrvSeatBeltSw", "CGW1", 0), ("CF_Gway_TSigLHSw", "CGW1", 0), ("CF_Gway_TurnSigLh", "CGW1", 0), ("CF_Gway_TSigRHSw", "CGW1", 0), ("CF_Gway_TurnSigRh", "CGW1", 0), ("CF_Gway_ParkBrakeSw", "CGW1", 0), ("BRAKE_ACT", "EMS12", 0), ("PV_AV_CAN", "EMS12", 0), ("TPS", "EMS12", 0), ("CYL_PRES", "ESP12", 0), ("CF_Clu_CruiseSwState", "CLU11", 0), ("CF_Clu_CruiseSwMain", "CLU11", 0), ("CF_Clu_SldMainSW", "CLU11", 0), ("CF_Clu_ParityBit1", "CLU11", 0), ("CF_Clu_VanzDecimal", "CLU11", 0), ("CF_Clu_Vanz", "CLU11", 0), ("CF_Clu_SPEED_UNIT", "CLU11", 0), ("CF_Clu_DetentOut", "CLU11", 0), ("CF_Clu_RheostatLevel", "CLU11", 0), ("CF_Clu_CluInfo", "CLU11", 0), ("CF_Clu_AmpInfo", "CLU11", 0), ("CF_Clu_AliveCnt1", "CLU11", 0), ("ACCEnable", "TCS13", 0), ("ACC_REQ", "TCS13", 0), ("BrakeLight", "TCS13", 0), ("DriverBraking", "TCS13", 0), ("DriverOverride", "TCS13", 0), ("ESC_Off_Step", "TCS15", 0), ("CF_Lvr_GearInf", "LVR11", 0), #Transmission Gear (0 = N or P, 1-8 = Fwd, 14 = Rev) ] checks = [ # address, frequency ("TCS15", 10), ("TCS13", 50), ("CLU11", 50), ("ESP12", 100), ("CGW1", 10), ("CGW4", 5), ("WHL_SPD11", 50), ] if not CP.mdpsBus: signals += [("CR_Mdps_StrColTq", "MDPS12", 0), ("CF_Mdps_Def", "MDPS12", 0), ("CF_Mdps_ToiActive", "MDPS12", 0), ("CF_Mdps_ToiUnavail", "MDPS12", 0), ("CF_Mdps_MsgCount2", "MDPS12", 0), ("CF_Mdps_Chksum2", "MDPS12", 0), ("CF_Mdps_ToiFlt", "MDPS12", 0), ("CF_Mdps_SErr", "MDPS12", 0), ("CR_Mdps_StrTq", "MDPS12", 0), ("CF_Mdps_FailStat", "MDPS12", 0), ("CR_Mdps_OutTq", "MDPS12", 0)] checks += [("MDPS12", 50)] if not CP.sasBus: signals += [ ("SAS_Angle", "SAS11", 0), ("SAS_Speed", "SAS11", 0), ] checks += [("SAS11", 100)] if CP.sccBus == -1: signals += [ ("CRUISE_LAMP_M", "EMS16", 0), ("CF_Lvr_CruiseSet", "LVR12", 0), ] elif not CP.sccBus: signals += [ ("MainMode_ACC", "SCC11", 0), ("VSetDis", "SCC11", 0), ("SCCInfoDisplay", "SCC11", 0), ("ACC_ObjDist", "SCC11", 0), ("TauGapSet", "SCC11", 0), ("ACCMode", "SCC12", 0), ("CF_VSM_Prefill", "SCC12", 0), ("CF_VSM_DecCmdAct", "SCC12", 0), ("CF_VSM_HBACmd", "SCC12", 0), ("CF_VSM_Warn", "SCC12", 0), ("CF_VSM_Stat", "SCC12", 0), ("CF_VSM_BeltCmd", "SCC12", 0), ("ACCFailInfo", "SCC12", 0), ("ACCMode", "SCC12", 0), ("StopReq", "SCC12", 0), ("CR_VSM_DecCmd", "SCC12", 0), ("aReqMax", "SCC12", 0), ("TakeOverReq", "SCC12", 0), ("PreFill", "SCC12", 0), ("aReqMin", "SCC12", 0), ("CF_VSM_ConfMode", "SCC12", 0), ("AEB_Failinfo", "SCC12", 0), ("AEB_Status", "SCC12", 0), ("AEB_CmdAct", "SCC12", 0), ("AEB_StopReq", "SCC12", 0), ("CR_VSM_Alive", "SCC12", 0), ("CR_VSM_ChkSum", "SCC12", 0), ] checks += [ ("SCC11", 50), ("SCC12", 50), ] if CP.carFingerprint in FEATURES["use_cluster_gears"]: signals += [ ("CF_Clu_InhibitD", "CLU15", 0), ("CF_Clu_InhibitP", "CLU15", 0), ("CF_Clu_InhibitN", "CLU15", 0), ("CF_Clu_InhibitR", "CLU15", 0), ] elif CP.carFingerprint in FEATURES["use_tcu_gears"]: signals += [ ("CUR_GR", "TCU12", 0), ] elif CP.carFingerprint in FEATURES["use_elect_gears"]: signals += [ ("Elect_Gear_Shifter", "ELECT_GEAR", 0), ] else: signals += [ ("CF_Lvr_Gear", "LVR12", 0), ] return CANParser(DBC[CP.carFingerprint]['pt'], signals, checks, 0)
def get_can_parser(CP): signals = [ # sig_name, sig_address ("LWI_Lenkradwinkel", "LWI_01"), # Absolute steering angle ("LWI_VZ_Lenkradwinkel", "LWI_01"), # Steering angle sign ("LWI_Lenkradw_Geschw", "LWI_01"), # Absolute steering rate ("LWI_VZ_Lenkradw_Geschw", "LWI_01"), # Steering rate sign ("ESP_VL_Radgeschw_02", "ESP_19"), # ABS wheel speed, front left ("ESP_VR_Radgeschw_02", "ESP_19"), # ABS wheel speed, front right ("ESP_HL_Radgeschw_02", "ESP_19"), # ABS wheel speed, rear left ("ESP_HR_Radgeschw_02", "ESP_19"), # ABS wheel speed, rear right ("ESP_Gierrate", "ESP_02"), # Absolute yaw rate ("ESP_VZ_Gierrate", "ESP_02"), # Yaw rate sign ("ZV_FT_offen", "Gateway_72"), # Door open, driver ("ZV_BT_offen", "Gateway_72"), # Door open, passenger ("ZV_HFS_offen", "Gateway_72"), # Door open, rear left ("ZV_HBFS_offen", "Gateway_72"), # Door open, rear right ("ZV_HD_offen", "Gateway_72"), # Trunk or hatch open ("Comfort_Signal_Left", "Blinkmodi_02" ), # Left turn signal including comfort blink interval ("Comfort_Signal_Right", "Blinkmodi_02" ), # Right turn signal including comfort blink interval ("AB_Gurtschloss_FA", "Airbag_02"), # Seatbelt status, driver ("AB_Gurtschloss_BF", "Airbag_02"), # Seatbelt status, passenger ("ESP_Fahrer_bremst", "ESP_05"), # Brake pedal pressed ("ESP_Bremsdruck", "ESP_05"), # Brake pressure applied ("MO_Fahrpedalrohwert_01", "Motor_20"), # Accelerator pedal value ("EPS_Lenkmoment", "LH_EPS_03"), # Absolute driver torque input ("EPS_VZ_Lenkmoment", "LH_EPS_03"), # Driver torque input sign ("EPS_HCA_Status", "LH_EPS_03"), # EPS HCA control status ("ESP_Tastung_passiv", "ESP_21"), # Stability control disabled ("ESP_Haltebestaetigung", "ESP_21"), # ESP hold confirmation ("KBI_Handbremse", "Kombi_01"), # Manual handbrake applied ("TSK_Status", "TSK_06"), # ACC engagement status from drivetrain coordinator ("GRA_Hauptschalter", "GRA_ACC_01"), # ACC button, on/off ("GRA_Abbrechen", "GRA_ACC_01"), # ACC button, cancel ("GRA_Tip_Setzen", "GRA_ACC_01"), # ACC button, set ("GRA_Tip_Hoch", "GRA_ACC_01"), # ACC button, increase or accel ("GRA_Tip_Runter", "GRA_ACC_01"), # ACC button, decrease or decel ("GRA_Tip_Wiederaufnahme", "GRA_ACC_01"), # ACC button, resume ("GRA_Verstellung_Zeitluecke", "GRA_ACC_01"), # ACC button, time gap adj ("GRA_Typ_Hauptschalter", "GRA_ACC_01"), # ACC main button type ("GRA_Tip_Stufe_2", "GRA_ACC_01"), # unknown related to stalk type ("GRA_ButtonTypeInfo", "GRA_ACC_01"), # unknown related to stalk type ("COUNTER", "GRA_ACC_01"), # GRA_ACC_01 CAN message counter ] checks = [ # sig_address, frequency ("LWI_01", 100 ), # From J500 Steering Assist with integrated sensors ("LH_EPS_03", 100), # From J500 Steering Assist with integrated sensors ("ESP_19", 100), # From J104 ABS/ESP controller ("ESP_05", 50), # From J104 ABS/ESP controller ("ESP_21", 50), # From J104 ABS/ESP controller ("Motor_20", 50), # From J623 Engine control module ("TSK_06", 50), # From J623 Engine control module ("ESP_02", 50), # From J104 ABS/ESP controller ("GRA_ACC_01", 33 ), # From J533 CAN gateway (via LIN from steering wheel controls) ("Gateway_72", 10), # From J533 CAN gateway (aggregated data) ("Airbag_02", 5), # From J234 Airbag control module ("Kombi_01", 2), # From J285 Instrument cluster ( "Blinkmodi_02", 1 ), # From J519 BCM (sent at 1Hz when no lights active, 50Hz when active) ] if CP.transmissionType == TransmissionType.automatic: signals.append( ("GE_Fahrstufe", "Getriebe_11")) # Auto trans gear selector position checks.append(("Getriebe_11", 20)) # From J743 Auto transmission control module elif CP.transmissionType == TransmissionType.direct: signals.append( ("GearPosition", "EV_Gearshift")) # EV gear selector position checks.append( ("EV_Gearshift", 10)) # From J??? unknown EV control module elif CP.transmissionType == TransmissionType.manual: signals += [ ("MO_Kuppl_schalter", "Motor_14"), # Clutch switch ("BCM1_Rueckfahrlicht_Schalter", "Gateway_72") ] # Reverse light from BCM checks.append(("Motor_14", 10)) # From J623 Engine control module if CP.networkLocation == NetworkLocation.fwdCamera: # Radars are here on CANBUS.pt signals += MqbExtraSignals.fwd_radar_signals checks += MqbExtraSignals.fwd_radar_checks if CP.enableBsm: signals += MqbExtraSignals.bsm_radar_signals checks += MqbExtraSignals.bsm_radar_checks return CANParser(DBC_FILES.mqb, signals, checks, CANBUS.pt)