IQ.Pilot Release Commit @ cb8d79a
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
from iqdbc.car import Bus, get_safety_config, structs
|
||||
from iqdbc.car.hyundai.hyundaicanfd import CanBus
|
||||
from iqdbc.car.hyundai.values import HyundaiFlags, CAR, DBC, CANFD_RADAR_SCC_CAR, \
|
||||
from iqdbc.car.hyundai.values import HyundaiFlags, HyundaiFlagsIQ, CAR, DBC, CANFD_RADAR_SCC_CAR, \
|
||||
CANFD_UNSUPPORTED_LONGITUDINAL_CAR, \
|
||||
UNSUPPORTED_LONGITUDINAL_CAR, HyundaiSafetyFlags, HyundaiExtFlags, \
|
||||
UNSUPPORTED_LONGITUDINAL_CAR, HyundaiSafetyFlags, HyundaiSafetyFlagsIQ, HyundaiExtFlags, \
|
||||
CANFD_HYBRID_STATUS_ADDR, CANFD_HYBRID_STATUS_DLC, \
|
||||
EV_MODE_STATUS_ADDR, EV_MODE_STATUS_DLC
|
||||
from iqdbc.car.hyundai.radar_interface import RADAR_START_ADDR
|
||||
@@ -254,6 +254,14 @@ class CarInterface(CarInterfaceBase):
|
||||
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def _get_params_iq(stock_cp, ret, candidate, fingerprint, car_fw, alpha_long, is_release_iq, docs):
|
||||
del candidate, car_fw, alpha_long, is_release_iq, docs
|
||||
if not stock_cp.flags & HyundaiFlags.CANFD and 0x391 in fingerprint[0]:
|
||||
ret.flags |= HyundaiFlagsIQ.HAS_LFA_BUTTON
|
||||
ret.iqSafetyFlags |= HyundaiSafetyFlagsIQ.HAS_LDA_BUTTON
|
||||
return ret
|
||||
|
||||
@staticmethod
|
||||
def init(CP, can_recv, can_send):
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import pytest
|
||||
|
||||
from iqdbc.car import gen_empty_fingerprint, structs
|
||||
from iqdbc.car.hyundai.interface import CarInterface
|
||||
from iqdbc.car.hyundai.values import CAR
|
||||
from iqdbc.car.hyundai.values import CAR, HyundaiFlagsIQ, HyundaiSafetyFlagsIQ
|
||||
|
||||
|
||||
@pytest.mark.parametrize("candidate", list(CAR), ids=lambda candidate: candidate.value)
|
||||
@@ -39,3 +39,15 @@ def test_parameter_defaults_do_not_require_persisted_fingerprint(monkeypatch, tm
|
||||
|
||||
state, _ = interface.update([])
|
||||
assert state.vEgo == 0.0
|
||||
|
||||
|
||||
def test_classic_lfa_button_capability_survives_iq_module_removal(monkeypatch, tmp_path):
|
||||
monkeypatch.setenv("PARAMS_ROOT", str(tmp_path))
|
||||
fingerprint = gen_empty_fingerprint()
|
||||
fingerprint[0][0x391] = 8
|
||||
|
||||
cp = CarInterface.get_params(CAR.HYUNDAI_SONATA, fingerprint, [], False, False, False)
|
||||
cp_iq = CarInterface.get_params_iq(cp, CAR.HYUNDAI_SONATA, fingerprint, [], False, False, False)
|
||||
|
||||
assert cp_iq.flags & HyundaiFlagsIQ.HAS_LFA_BUTTON
|
||||
assert cp_iq.iqSafetyFlags & HyundaiSafetyFlagsIQ.HAS_LDA_BUTTON
|
||||
|
||||
@@ -26,7 +26,7 @@ class CarControllerParams:
|
||||
#([0, 9, 16, 25], [1.6, 1.0, 0.6, 0.15]),
|
||||
#([0, 9, 16, 25], [2.0, 1.2, 0.8, 0.28]),
|
||||
)
|
||||
# Stock LFA system is seen sending 250 max, but for LKAS events it's 175 max.
|
||||
# Stock LFA system is seen sending 250 max, but for LKAS events it's 175 max.
|
||||
# 250 can at least achieve 4 m/s^2, 80 corresponds to ~2.5 m/s^2
|
||||
ANGLE_MAX_TORQUE = 200 # The maximum amount of torque that will be allowed
|
||||
ANGLE_MIN_TORQUE = 25 # equivalent to ~0.8 m/s^2 of torque (based on ANGLE_MAX_TORQUE) when overriding
|
||||
@@ -83,6 +83,28 @@ class HyundaiSafetyFlags(IntFlag):
|
||||
ALT_LIMITS_2 = 512
|
||||
|
||||
|
||||
class HyundaiSafetyFlagsIQ:
|
||||
DEFAULT = 0
|
||||
ESCC = 16
|
||||
MAIN_BTN_LONG_TOGGLE = 32
|
||||
HAS_LDA_BUTTON = 64
|
||||
NON_SCC = 128
|
||||
|
||||
|
||||
class HyundaiFlagsIQ(IntFlag):
|
||||
ENHANCED_SCC = 1
|
||||
HAS_LFA_BUTTON = 2
|
||||
MAIN_BTN_LONG_TOGGLE = 2 ** 2
|
||||
ENABLE_RADAR_TRACKS_DEPRECATED = 2 ** 3
|
||||
LONG_TUNING_DYNAMIC = 2 ** 4
|
||||
LONG_TUNING_PREDICTIVE = 2 ** 5
|
||||
NON_SCC = 2 ** 6
|
||||
NON_SCC_RADAR_FCA = 2 ** 7
|
||||
NON_SCC_NO_FCA = 2 ** 8
|
||||
SPEED_LIMIT_AVAILABLE = 2 ** 9
|
||||
HAS_LKAS12 = 2 ** 10
|
||||
|
||||
|
||||
class HyundaiFlags(IntFlag):
|
||||
# Dynamic Flags
|
||||
CANFD_HDA2 = 1
|
||||
@@ -468,7 +490,6 @@ class CAR(Platforms):
|
||||
flags=HyundaiFlags.ANGLE_CONTROL,
|
||||
)
|
||||
|
||||
|
||||
# Kia
|
||||
KIA_FORTE = HyundaiPlatformConfig(
|
||||
[
|
||||
|
||||
Reference in New Issue
Block a user