|
|
@ -4,7 +4,7 @@ from opendbc.can.can_define import CANDefine |
|
|
|
from opendbc.can.parser import CANParser |
|
|
|
from opendbc.can.parser import CANParser |
|
|
|
from selfdrive.car.interfaces import CarStateBase |
|
|
|
from selfdrive.car.interfaces import CarStateBase |
|
|
|
from selfdrive.car.ford.fordcan import CanBus |
|
|
|
from selfdrive.car.ford.fordcan import CanBus |
|
|
|
from selfdrive.car.ford.values import CANFD_CARS, CarControllerParams, DBC |
|
|
|
from selfdrive.car.ford.values import CANFD_CAR, CarControllerParams, DBC |
|
|
|
|
|
|
|
|
|
|
|
GearShifter = car.CarState.GearShifter |
|
|
|
GearShifter = car.CarState.GearShifter |
|
|
|
TransmissionType = car.CarParams.TransmissionType |
|
|
|
TransmissionType = car.CarParams.TransmissionType |
|
|
@ -55,7 +55,7 @@ class CarState(CarStateBase): |
|
|
|
ret.steerFaultPermanent = cp.vl["EPAS_INFO"]["EPAS_Failure"] in (2, 3) |
|
|
|
ret.steerFaultPermanent = cp.vl["EPAS_INFO"]["EPAS_Failure"] in (2, 3) |
|
|
|
# ret.espDisabled = False # TODO: find traction control signal |
|
|
|
# ret.espDisabled = False # TODO: find traction control signal |
|
|
|
|
|
|
|
|
|
|
|
if self.CP.carFingerprint in CANFD_CARS: |
|
|
|
if self.CP.carFingerprint in CANFD_CAR: |
|
|
|
# this signal is always 0 on non-CAN FD cars |
|
|
|
# this signal is always 0 on non-CAN FD cars |
|
|
|
ret.steerFaultTemporary |= cp.vl["Lane_Assist_Data3_FD1"]["LatCtlSte_D_Stat"] not in (1, 2, 3) |
|
|
|
ret.steerFaultTemporary |= cp.vl["Lane_Assist_Data3_FD1"]["LatCtlSte_D_Stat"] not in (1, 2, 3) |
|
|
|
|
|
|
|
|
|
|
@ -97,7 +97,7 @@ class CarState(CarStateBase): |
|
|
|
|
|
|
|
|
|
|
|
# blindspot sensors |
|
|
|
# blindspot sensors |
|
|
|
if self.CP.enableBsm: |
|
|
|
if self.CP.enableBsm: |
|
|
|
cp_bsm = cp_cam if self.CP.carFingerprint in CANFD_CARS else cp |
|
|
|
cp_bsm = cp_cam if self.CP.carFingerprint in CANFD_CAR else cp |
|
|
|
ret.leftBlindspot = cp_bsm.vl["Side_Detect_L_Stat"]["SodDetctLeft_D_Stat"] != 0 |
|
|
|
ret.leftBlindspot = cp_bsm.vl["Side_Detect_L_Stat"]["SodDetctLeft_D_Stat"] != 0 |
|
|
|
ret.rightBlindspot = cp_bsm.vl["Side_Detect_R_Stat"]["SodDetctRight_D_Stat"] != 0 |
|
|
|
ret.rightBlindspot = cp_bsm.vl["Side_Detect_R_Stat"]["SodDetctRight_D_Stat"] != 0 |
|
|
|
|
|
|
|
|
|
|
@ -191,7 +191,7 @@ class CarState(CarStateBase): |
|
|
|
("RCMStatusMessage2_FD1", 10), |
|
|
|
("RCMStatusMessage2_FD1", 10), |
|
|
|
] |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
if CP.carFingerprint in CANFD_CARS: |
|
|
|
if CP.carFingerprint in CANFD_CAR: |
|
|
|
signals += [ |
|
|
|
signals += [ |
|
|
|
("LatCtlSte_D_Stat", "Lane_Assist_Data3_FD1"), # PSCM lateral control status |
|
|
|
("LatCtlSte_D_Stat", "Lane_Assist_Data3_FD1"), # PSCM lateral control status |
|
|
|
] |
|
|
|
] |
|
|
@ -216,7 +216,7 @@ class CarState(CarStateBase): |
|
|
|
("BCM_Lamp_Stat_FD1", 1), |
|
|
|
("BCM_Lamp_Stat_FD1", 1), |
|
|
|
] |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
if CP.enableBsm and CP.carFingerprint not in CANFD_CARS: |
|
|
|
if CP.enableBsm and CP.carFingerprint not in CANFD_CAR: |
|
|
|
signals += [ |
|
|
|
signals += [ |
|
|
|
("SodDetctLeft_D_Stat", "Side_Detect_L_Stat"), # Blindspot sensor, left |
|
|
|
("SodDetctLeft_D_Stat", "Side_Detect_L_Stat"), # Blindspot sensor, left |
|
|
|
("SodDetctRight_D_Stat", "Side_Detect_R_Stat"), # Blindspot sensor, right |
|
|
|
("SodDetctRight_D_Stat", "Side_Detect_R_Stat"), # Blindspot sensor, right |
|
|
@ -286,7 +286,7 @@ class CarState(CarStateBase): |
|
|
|
("IPMA_Data", 1), |
|
|
|
("IPMA_Data", 1), |
|
|
|
] |
|
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
if CP.enableBsm and CP.carFingerprint in CANFD_CARS: |
|
|
|
if CP.enableBsm and CP.carFingerprint in CANFD_CAR: |
|
|
|
signals += [ |
|
|
|
signals += [ |
|
|
|
("SodDetctLeft_D_Stat", "Side_Detect_L_Stat"), # Blindspot sensor, left |
|
|
|
("SodDetctLeft_D_Stat", "Side_Detect_L_Stat"), # Blindspot sensor, left |
|
|
|
("SodDetctRight_D_Stat", "Side_Detect_R_Stat"), # Blindspot sensor, right |
|
|
|
("SodDetctRight_D_Stat", "Side_Detect_R_Stat"), # Blindspot sensor, right |
|
|
|