mirror of
https://github.com/infiniteCable2/opendbc.git
synced 2026-02-18 13:03:52 +08:00
Merge branch 'master' of https://github.com/sunnypilot/opendbc
This commit is contained in:
@@ -8,7 +8,7 @@ from opendbc.car.interfaces import CarControllerBase
|
||||
from opendbc.sunnypilot.car.chrysler.carcontroller_ext import CarControllerExt
|
||||
from opendbc.sunnypilot.car.chrysler.icbm import IntelligentCruiseButtonManagementInterface
|
||||
from opendbc.sunnypilot.car.chrysler.mads import MadsCarController
|
||||
from opendbc.sunnypilot.car.chrysler.values import ChryslerFlagsSP
|
||||
from opendbc.sunnypilot.car.chrysler.values_ext import ChryslerFlagsSP
|
||||
|
||||
|
||||
class CarController(CarControllerBase, MadsCarController, CarControllerExt, IntelligentCruiseButtonManagementInterface):
|
||||
|
||||
@@ -5,7 +5,7 @@ from opendbc.car.chrysler.carstate import CarState
|
||||
from opendbc.car.chrysler.radar_interface import RadarInterface
|
||||
from opendbc.car.chrysler.values import CAR, RAM_HD, RAM_DT, RAM_CARS, ChryslerFlags, ChryslerSafetyFlags
|
||||
from opendbc.car.interfaces import CarInterfaceBase
|
||||
from opendbc.sunnypilot.car.chrysler.values import ChryslerFlagsSP
|
||||
from opendbc.sunnypilot.car.chrysler.values_ext import ChryslerFlagsSP
|
||||
|
||||
|
||||
class CarInterface(CarInterfaceBase):
|
||||
@@ -91,6 +91,12 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
if candidate == CAR.RAM_HD_5TH_GEN:
|
||||
stock_cp.dashcamOnly = False
|
||||
# https://github.com/commaai/openpilot/issues/25389
|
||||
stock_cp.tireStiffnessFactor = 1.0
|
||||
stock_cp.tireStiffnessFront = 65155.
|
||||
stock_cp.tireStiffnessRear = 80926.
|
||||
stock_cp.wheelbase = 3.79
|
||||
stock_cp.steerRatio = 19.
|
||||
|
||||
if 0x4FF in fingerprint[0]:
|
||||
ret.flags |= ChryslerFlagsSP.NO_MIN_STEERING_SPEED.value
|
||||
|
||||
@@ -220,7 +220,7 @@ class CarController(CarControllerBase, MadsCarController, GasInterceptorCarContr
|
||||
pcm_override = True
|
||||
can_sends.append(hondacan.create_brake_command(self.packer, self.CAN, apply_brake, pump_on,
|
||||
pcm_override, pcm_cancel_cmd, alert_fcw,
|
||||
self.CP.carFingerprint, CS.stock_brake))
|
||||
self.CP.carFingerprint, CS.stock_brake, self.CP_SP))
|
||||
self.apply_brake_last = apply_brake
|
||||
self.brake = apply_brake / self.params.NIDEC_BRAKE_MAX
|
||||
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from opendbc.car import CanBusBase
|
||||
from opendbc.car.common.conversions import Conversions as CV
|
||||
from opendbc.car.honda.values import (CAR, HondaFlags, HONDA_BOSCH, HONDA_BOSCH_ALT_RADAR, HONDA_BOSCH_RADARLESS,
|
||||
from opendbc.car.honda.values import (HondaFlags, HONDA_BOSCH, HONDA_BOSCH_ALT_RADAR, HONDA_BOSCH_RADARLESS,
|
||||
HONDA_BOSCH_CANFD, CarControllerParams)
|
||||
from opendbc.sunnypilot.car.honda.values_ext import HondaFlagsSP
|
||||
|
||||
# CAN bus layout with relay
|
||||
# 0 = ACC-CAN - radar side
|
||||
@@ -46,7 +47,7 @@ class CanBus(CanBusBase):
|
||||
return self.offset
|
||||
|
||||
|
||||
def create_brake_command(packer, CAN, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, car_fingerprint, stock_brake):
|
||||
def create_brake_command(packer, CAN, apply_brake, pump_on, pcm_override, pcm_cancel_cmd, fcw, car_fingerprint, stock_brake, CP_SP):
|
||||
# TODO: do we loose pressure if we keep pump off for long?
|
||||
brakelights = apply_brake > 0
|
||||
brake_rq = apply_brake > 0
|
||||
@@ -66,7 +67,7 @@ def create_brake_command(packer, CAN, apply_brake, pump_on, pcm_override, pcm_ca
|
||||
"AEB_STATUS": 0,
|
||||
}
|
||||
|
||||
if car_fingerprint == CAR.HONDA_CLARITY:
|
||||
if CP_SP.flags & HondaFlagsSP.NIDEC_HYBRID:
|
||||
values["COMPUTER_BRAKE_HYBRID"] = apply_brake
|
||||
values["BRAKE_PUMP_REQUEST_HYBRID"] = apply_brake > 0
|
||||
else:
|
||||
|
||||
@@ -238,6 +238,13 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.flags |= HondaFlagsSP.EPS_MODIFIED.value
|
||||
stock_cp.dashcamOnly = False
|
||||
|
||||
if bool(stock_cp.flags & HondaFlags.NIDEC) and bool(stock_cp.flags & HondaFlags.HYBRID):
|
||||
ret.flags |= HondaFlagsSP.NIDEC_HYBRID.value
|
||||
ret.safetyParam |= HondaSafetyFlagsSP.NIDEC_HYBRID
|
||||
# some hybrids use a different brake hold
|
||||
if 0x223 in fingerprint[CAN.pt]:
|
||||
ret.flags |= HondaFlagsSP.HYBRID_ALT_BRAKEHOLD.value
|
||||
|
||||
if candidate == CAR.HONDA_CIVIC:
|
||||
if ret.flags & HondaFlagsSP.EPS_MODIFIED:
|
||||
# stock request input values: 0x0000, 0x00DE, 0x014D, 0x01EF, 0x0290, 0x0377, 0x0454, 0x0610, 0x06EE
|
||||
@@ -272,7 +279,6 @@ class CarInterface(CarInterfaceBase):
|
||||
stock_cp.lateralTuning.pid.kpV, stock_cp.lateralTuning.pid.kiV = [[0.21], [0.07]]
|
||||
|
||||
elif candidate == CAR.HONDA_CLARITY:
|
||||
ret.safetyParam |= HondaSafetyFlagsSP.CLARITY
|
||||
stock_cp.autoResumeSng = True
|
||||
stock_cp.minEnableSpeed = -1
|
||||
if ret.flags & HondaFlagsSP.EPS_MODIFIED:
|
||||
|
||||
@@ -6,8 +6,6 @@ from opendbc.car.common.conversions import Conversions as CV
|
||||
from opendbc.car.docs_definitions import CarFootnote, CarHarness, CarDocs, CarParts, Column, Device
|
||||
from opendbc.car.fw_query_definitions import FwQueryConfig, Request, StdQueries, p16
|
||||
|
||||
from opendbc.sunnypilot.car.honda.values_ext import HondaFlagsSP
|
||||
|
||||
Ecu = structs.CarParams.Ecu
|
||||
VisualAlert = structs.CarControl.HUDControl.VisualAlert
|
||||
GearShifter = structs.CarState.GearShifter
|
||||
@@ -355,7 +353,6 @@ class CAR(Platforms):
|
||||
CarSpecs(mass=1834, wheelbase=2.75, centerToFrontRatio=0.4, steerRatio=16.5),
|
||||
radar_dbc_dict('honda_clarity_hybrid_2018_can_generated'),
|
||||
flags=HondaFlags.HAS_ALL_DOOR_STATES,
|
||||
sp_flags=HondaFlagsSP.CLARITY,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ class CarInterface(CarInterfaceBase):
|
||||
ret.steerControlType = structs.CarParams.SteerControlType.torque
|
||||
ret.radarUnavailable = True
|
||||
|
||||
# TODO: pending finding/handling missing set speed and fixing up radar parser
|
||||
# TODO: pending finding/handling missing set speed
|
||||
ret.alphaLongitudinalAvailable = False
|
||||
if alpha_long:
|
||||
ret.openpilotLongitudinalControl = True
|
||||
|
||||
@@ -50,22 +50,27 @@ class RadarInterface(RadarInterfaceBase):
|
||||
for addr in range(RADAR_START_ADDR, RADAR_START_ADDR + RADAR_MSG_COUNT):
|
||||
msg = self.rcp.vl[f"RADAR_TRACK_{addr:x}"]
|
||||
|
||||
if addr not in self.pts:
|
||||
self.pts[addr] = structs.RadarData.RadarPoint()
|
||||
self.pts[addr].trackId = self.track_id
|
||||
self.track_id += 1
|
||||
# STATE: 1=New, 2=New_updated, 3=Updated, 4=Coasting, 7=New_coasting
|
||||
valid = msg['STATE'] in (1, 2, 3, 4, 7)
|
||||
|
||||
# Rivian's Short Range Radar (SSR) detects close stationary objects like guardrails, which cause phantom braking.
|
||||
# MODE: 1=SRR, 2=LRR, 3=SRR_and_LRR
|
||||
valid = valid and msg['MODE'] in (2, 3)
|
||||
|
||||
valid = msg['STATE'] in (3, 4) and msg['STATE_2'] == 1
|
||||
if valid:
|
||||
if addr not in self.pts or msg['STATE'] in (1, 2, 7):
|
||||
self.pts[addr] = structs.RadarData.RadarPoint()
|
||||
self.pts[addr].trackId = self.track_id
|
||||
self.track_id += 1
|
||||
|
||||
self.pts[addr].measured = msg['STATE'] in (2, 3)
|
||||
azimuth = math.radians(msg['AZIMUTH'])
|
||||
self.pts[addr].measured = True
|
||||
self.pts[addr].dRel = math.cos(azimuth) * msg['LONG_DIST']
|
||||
self.pts[addr].yRel = 0.5 * -math.sin(azimuth) * msg['LONG_DIST']
|
||||
self.pts[addr].vRel = msg['REL_SPEED']
|
||||
self.pts[addr].aRel = float('nan')
|
||||
self.pts[addr].yvRel = float('nan')
|
||||
|
||||
else:
|
||||
elif addr in self.pts:
|
||||
del self.pts[addr]
|
||||
|
||||
ret.points = list(self.pts.values())
|
||||
|
||||
@@ -19,10 +19,9 @@ class CarControllerParams:
|
||||
self.STEER_DRIVER_FACTOR = 1 # from dbc
|
||||
|
||||
if CP.flags & SubaruFlags.GLOBAL_GEN2:
|
||||
# TODO: lower rate limits, this reaches min/max in 0.5s which negatively affects tuning
|
||||
self.STEER_MAX = 1000
|
||||
self.STEER_DELTA_UP = 40
|
||||
self.STEER_DELTA_DOWN = 40
|
||||
self.STEER_MAX = 1500
|
||||
self.STEER_DELTA_UP = 35
|
||||
self.STEER_DELTA_DOWN = 50
|
||||
elif CP.carFingerprint == CAR.SUBARU_IMPREZA_2020:
|
||||
self.STEER_DELTA_UP = 35
|
||||
self.STEER_MAX = 1439
|
||||
|
||||
19
opendbc/dbc/generator/honda/_steering_control_d_ext.dbc
Normal file
19
opendbc/dbc/generator/honda/_steering_control_d_ext.dbc
Normal file
@@ -0,0 +1,19 @@
|
||||
BO_ 228 STEERING_CONTROL: 5 ADAS
|
||||
SG_ STEER_TORQUE : 7|16@0- (1,0) [-3840|3840] "" EPS
|
||||
SG_ STEER_TORQUE_REQUEST : 23|1@0+ (1,0) [0|1] "" EPS
|
||||
SG_ SET_ME_X00 : 22|7@0+ (1,0) [0|127] "" EPS
|
||||
SG_ SET_ME_X00_2 : 31|8@0+ (1,0) [0|0] "" EPS
|
||||
SG_ COUNTER : 37|2@0+ (1,0) [0|3] "" EPS
|
||||
SG_ CHECKSUM : 35|4@0+ (1,0) [0|15] "" EPS
|
||||
|
||||
BO_ 400 STEER_STATUS: 5 EPS
|
||||
SG_ STEER_TORQUE_SENSOR : 0|9@1- (1,0) [-256|256] "" XXX
|
||||
SG_ LIN_INTERFACE_FATAL_ERROR : 10|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ LATE_MESSAGE : 11|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ STEER_STATUS : 12|4@1+ (1,0) [0|15] "" XXX
|
||||
SG_ CHECKSUM : 35|4@0+ (1,0) [0|3] "" EON
|
||||
SG_ COUNTER : 37|2@0+ (1,0) [0|3] "" XXX
|
||||
SG_ LKAS_ALLOWED : 9|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ STEER_APPLIED : 23|16@0- (1,0) [0|511] "" XXX
|
||||
|
||||
VAL_ 400 STEER_STATUS 7 "permanent_fault" 6 "tmp_fault" 5 "fault_1" 4 "no_torque_alert_2" 3 "low_speed_lockout" 2 "no_torque_alert_1" 1 "driver_steering" 0 "normal" ;
|
||||
34
opendbc/dbc/generator/honda/honda_accord_2017_can_ext.dbc
Normal file
34
opendbc/dbc/generator/honda/honda_accord_2017_can_ext.dbc
Normal file
@@ -0,0 +1,34 @@
|
||||
CM_ "IMPORT _honda_common.dbc";
|
||||
CM_ "IMPORT _nidec_common.dbc";
|
||||
CM_ "IMPORT _lkas_hud_5byte.dbc";
|
||||
CM_ "IMPORT _nidec_scm_group_a.dbc";
|
||||
CM_ "IMPORT _steering_sensors_b.dbc";
|
||||
CM_ "IMPORT _steering_control_d_ext.dbc";
|
||||
|
||||
BO_ 392 GEARBOX_AUTO: 6 XXX
|
||||
SG_ CHECKSUM : 43|4@0+ (1,0) [0|15] "" XXX
|
||||
SG_ COUNTER : 45|2@0+ (1,0) [0|3] "" XXX
|
||||
SG_ GEAR_SHIFTER : 27|4@0+ (1,0) [0|15] "" EON
|
||||
SG_ GEAR : 36|5@0+ (1,0) [0|31] "" EON
|
||||
|
||||
BO_ 401 GEARBOX_CVT: 8 PCM
|
||||
SG_ SELECTED_P : 0|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ SELECTED_R : 1|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ SELECTED_N : 2|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ SELECTED_D : 3|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ FORWARD_DRIVING_MODE : 23|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ CVT_UNKNOWN_1 : 31|8@0+ (1,0) [0|255] "" XXX
|
||||
SG_ CVT_UNKNOWN_2 : 39|8@0+ (1,0) [0|255] "" XXX
|
||||
SG_ GEAR_SHIFTER : 44|5@0+ (1,0) [0|31] "" XXX
|
||||
SG_ SHIFTER_POSITION_VALID : 45|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ NOT_FORWARD_GEAR : 48|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ CVT_UNKNOWN_3 : 53|2@0+ (1,0) [0|3] "" XXX
|
||||
SG_ CHECKSUM : 59|4@0+ (1,0) [0|15] "" EON
|
||||
SG_ COUNTER : 61|2@0+ (1,0) [0|3] "" EON
|
||||
|
||||
VAL_ 392 GEAR_SHIFTER 0 "S" 1 "P" 2 "R" 4 "N" 8 "D" ;
|
||||
VAL_ 392 GEAR 26 "S" 4 "D" 3 "N" 2 "R" 1 "P" ;
|
||||
VAL_ 401 GEAR_SHIFTER 1 "P" 2 "R" 3 "N" 4 "D" 7 "L" 10 "S";
|
||||
|
||||
CM_ SG_ 401 CVT_UNKNOWN_1 "Probably measured/actual CVT ratio";
|
||||
CM_ SG_ 401 CVT_UNKNOWN_2 "Probably target/commanded CVT ratio";
|
||||
@@ -44,16 +44,21 @@ BS_:
|
||||
BU_: XXX
|
||||
""")
|
||||
|
||||
# note: 0x501/0x502 seem to be special in 0x5XX range
|
||||
for a in range(0x500, 0x500 + 32):
|
||||
f.write(f"""
|
||||
BO_ {a} RADAR_TRACK_{a:x}: 8 RADAR
|
||||
SG_ CHECKSUM : 0|8@1+ (1,0) [0|255] "" XXX
|
||||
SG_ COUNTER : 11|4@0+ (1,0) [0|15] "" XXX
|
||||
SG_ UNKNOWN_1 : 23|8@0- (1,0) [-128|127] "" XXX
|
||||
SG_ AZIMUTH : 28|10@0- (0.1,0) [-61.2|62.1] "" XXX
|
||||
SG_ AZIMUTH : 28|10@0- (0.1,0) [-51.2|51.1] "" XXX
|
||||
SG_ STATE : 31|3@0+ (1,0) [0|7] "" XXX
|
||||
SG_ LONG_DIST : 34|11@0+ (0.1,0) [0|204.7] "" XXX
|
||||
SG_ STATE_2 : 55|1@0+ (1,0) [0|1] "" XXX
|
||||
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "" XXX
|
||||
SG_ MODE : 55|2@0+ (1,0) [0|3] "" XXX
|
||||
SG_ REL_SPEED : 53|14@0- (0.01,0) [-81.92|81.92] "m/s" XXX
|
||||
""")
|
||||
|
||||
for a in range(0x500, 0x500 + 32):
|
||||
f.write(f"""
|
||||
VAL_ {a} STATE 0 "Empty" 1 "New" 2 "New_updated" 3 "Updated" 4 "Coasting" 7 "New_coasting" ;
|
||||
VAL_ {a} MODE 0 "None" 1 "SRR" 2 "LRR" 3 "SRR_and_LRR" ;
|
||||
""")
|
||||
|
||||
@@ -42,7 +42,7 @@ static bool honda_fwd_brake = false;
|
||||
static bool honda_bosch_long = false;
|
||||
static bool honda_bosch_radarless = false;
|
||||
static bool honda_bosch_canfd = false;
|
||||
static bool honda_clarity = false;
|
||||
static bool honda_nidec_hybrid = false;
|
||||
typedef enum {HONDA_NIDEC, HONDA_BOSCH} HondaHw;
|
||||
static HondaHw honda_hw = HONDA_NIDEC;
|
||||
|
||||
@@ -198,7 +198,7 @@ static void honda_rx_hook(const CANPacket_t *msg) {
|
||||
bool honda_stock_aeb = GET_BIT(msg, 29U);
|
||||
int honda_stock_brake = (msg->data[0] << 2) | (msg->data[1] >> 6);
|
||||
|
||||
if (honda_clarity) {
|
||||
if (honda_nidec_hybrid) {
|
||||
honda_stock_brake = (msg->data[6] << 2) | (msg->data[7] >> 6);
|
||||
}
|
||||
|
||||
@@ -254,7 +254,7 @@ static bool honda_tx_hook(const CANPacket_t *msg) {
|
||||
if ((msg->addr == 0x1FAU) && (msg->bus == bus_pt)) {
|
||||
honda_brake = (msg->data[0] << 2) + ((msg->data[1] >> 6) & 0x3U);
|
||||
|
||||
if (honda_clarity) {
|
||||
if (honda_nidec_hybrid) {
|
||||
honda_brake = (msg->data[6] << 2) + ((msg->data[7] >> 6) & 0x3U);
|
||||
}
|
||||
|
||||
@@ -350,7 +350,7 @@ static safety_config honda_nidec_init(uint16_t param) {
|
||||
|
||||
const uint16_t HONDA_PARAM_NIDEC_ALT = 4;
|
||||
|
||||
const uint16_t HONDA_PARAM_SP_CLARITY = 1;
|
||||
const uint16_t HONDA_PARAM_SP_NIDEC_HYBRID = 1;
|
||||
const uint16_t HONDA_PARAM_GAS_INTERCEPTOR = 2;
|
||||
|
||||
honda_hw = HONDA_NIDEC;
|
||||
@@ -366,7 +366,7 @@ static safety_config honda_nidec_init(uint16_t param) {
|
||||
|
||||
bool enable_nidec_alt = GET_FLAG(param, HONDA_PARAM_NIDEC_ALT);
|
||||
|
||||
honda_clarity = GET_FLAG(current_safety_param_sp, HONDA_PARAM_SP_CLARITY);
|
||||
honda_nidec_hybrid = GET_FLAG(current_safety_param_sp, HONDA_PARAM_SP_NIDEC_HYBRID);
|
||||
enable_gas_interceptor = GET_FLAG(current_safety_param_sp, HONDA_PARAM_GAS_INTERCEPTOR);
|
||||
|
||||
if (enable_nidec_alt) {
|
||||
|
||||
@@ -149,7 +149,7 @@ static void subaru_rx_hook(const CANPacket_t *msg) {
|
||||
|
||||
static bool subaru_tx_hook(const CANPacket_t *msg) {
|
||||
const TorqueSteeringLimits SUBARU_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(2047, 50, 70);
|
||||
const TorqueSteeringLimits SUBARU_GEN2_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(1000, 40, 40);
|
||||
const TorqueSteeringLimits SUBARU_GEN2_STEERING_LIMITS = SUBARU_STEERING_LIMITS_GENERATOR(1500, 35, 50);
|
||||
|
||||
const LongitudinalLimits SUBARU_LONG_LIMITS = {
|
||||
.min_gas = 808, // appears to be engine braking
|
||||
|
||||
@@ -686,14 +686,17 @@ class TestHondaBoschCANFDAltBrakeSafety(HondaPcmEnableBase, TestHondaBoschCANFDS
|
||||
self.safety.init_tests()
|
||||
|
||||
|
||||
class TestHondaNidecClaritySafety(TestHondaNidecPcmSafety):
|
||||
class TestHondaNidecHybridSafety(TestHondaNidecPcmSafety):
|
||||
"""
|
||||
Covers the Honda Nidec safety mode with hybrid brake
|
||||
"""
|
||||
|
||||
BRAKE_SIG = "COMPUTER_BRAKE_HYBRID"
|
||||
|
||||
def setUp(self):
|
||||
self.packer = CANPackerPanda("honda_clarity_hybrid_2018_can_generated")
|
||||
self.safety = libsafety_py.libsafety
|
||||
self.safety.set_current_safety_param_sp(HondaSafetyFlagsSP.CLARITY)
|
||||
self.safety.set_current_safety_param_sp(HondaSafetyFlagsSP.NIDEC_HYBRID)
|
||||
self.safety.set_safety_hooks(CarParams.SafetyModel.hondaNidec, 0)
|
||||
self.safety.init_tests()
|
||||
|
||||
|
||||
@@ -196,9 +196,9 @@ class TestSubaruGen2TorqueSafetyBase(TestSubaruTorqueSafetyBase):
|
||||
ALT_MAIN_BUS = SUBARU_ALT_BUS
|
||||
ALT_CAM_BUS = SUBARU_ALT_BUS
|
||||
|
||||
MAX_RATE_UP = 40
|
||||
MAX_RATE_DOWN = 40
|
||||
MAX_TORQUE_LOOKUP = [0], [1000]
|
||||
MAX_RATE_UP = 35
|
||||
MAX_RATE_DOWN = 50
|
||||
MAX_TORQUE_LOOKUP = [0], [1500]
|
||||
|
||||
|
||||
class TestSubaruGen2TorqueStockLongitudinalSafety(TestSubaruStockLongitudinalSafetyBase, TestSubaruGen2TorqueSafetyBase):
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
from opendbc.car import structs
|
||||
from opendbc.car.interfaces import CarStateBase
|
||||
from opendbc.car.chrysler.values import RAM_DT
|
||||
from opendbc.sunnypilot.car.chrysler.values import ChryslerFlagsSP
|
||||
from opendbc.sunnypilot.car.chrysler.values_ext import ChryslerFlagsSP
|
||||
|
||||
GearShifter = structs.CarState.GearShifter
|
||||
|
||||
|
||||
@@ -10,7 +10,8 @@ from enum import StrEnum
|
||||
|
||||
from opendbc.car import Bus, structs
|
||||
from opendbc.can.parser import CANParser
|
||||
from opendbc.sunnypilot.car.chrysler.values import BUTTONS
|
||||
from opendbc.car.chrysler.values import RAM_HD
|
||||
from opendbc.sunnypilot.car.chrysler.values_ext import BUTTONS
|
||||
|
||||
|
||||
class CarStateExt:
|
||||
@@ -34,3 +35,6 @@ class CarStateExt:
|
||||
button_events.append(event)
|
||||
self.button_states[button.event_type] = state
|
||||
self.button_events = button_events
|
||||
|
||||
if self.CP.carFingerprint in RAM_HD:
|
||||
ret.steeringAngleDeg = cp.vl["STEERING"]["STEERING_ANGLE"]
|
||||
|
||||
@@ -20,9 +20,11 @@ class CarStateExt:
|
||||
cp = can_parsers[Bus.pt]
|
||||
cp_cam = can_parsers[Bus.cam]
|
||||
|
||||
if self.CP_SP.flags & HondaFlagsSP.CLARITY:
|
||||
if self.CP_SP.flags & HondaFlagsSP.NIDEC_HYBRID:
|
||||
ret.accFaulted = bool(cp.vl["HYBRID_BRAKE_ERROR"]["BRAKE_ERROR_1"] or cp.vl["HYBRID_BRAKE_ERROR"]["BRAKE_ERROR_2"])
|
||||
ret.stockAeb = bool(cp_cam.vl["BRAKE_COMMAND"]["AEB_REQ_1"] and cp_cam.vl["BRAKE_COMMAND"]["COMPUTER_BRAKE_HYBRID"] > 1e-5)
|
||||
|
||||
if self.CP_SP.flags & HondaFlagsSP.HYBRID_ALT_BRAKEHOLD:
|
||||
ret.brakeHoldActive = cp.vl["BRAKE_HOLD_HYBRID_ALT"]["BRAKE_HOLD_ACTIVE"] == 1
|
||||
|
||||
if self.CP_SP.enableGasInterceptor:
|
||||
|
||||
@@ -9,10 +9,11 @@ from enum import IntFlag
|
||||
|
||||
|
||||
class HondaFlagsSP(IntFlag):
|
||||
CLARITY = 1
|
||||
NIDEC_HYBRID = 1
|
||||
EPS_MODIFIED = 2
|
||||
HYBRID_ALT_BRAKEHOLD = 4
|
||||
|
||||
|
||||
class HondaSafetyFlagsSP:
|
||||
CLARITY = 1
|
||||
NIDEC_HYBRID = 1
|
||||
GAS_INTERCEPTOR = 2
|
||||
|
||||
Reference in New Issue
Block a user