IQ.Pilot Release Commit @ 0b96bd5

This commit is contained in:
IQ.Lvbs CI [bot]
2026-09-02 16:46:45 -05:00
parent 4fb3da761f
commit 7745f48100
162 changed files with 12835 additions and 9476 deletions

View File

@@ -776,6 +776,10 @@ class CarState(CarStateBase):
ret.steerFaultTemporary, ret.steerFaultPermanent = False, True
return
if self.CP.flags & VolkswagenFlags.MLB:
# MLB LWS zero is vehicle-specific (measured 2.5 deg off centre on an 8R); the EPS angle is what the rack closes its own loop on
ret.steeringAngleDeg = pt_cp.vl["LH_EPS_03"]["EPS_Berechneter_LW"] * (1, -1)[int(pt_cp.vl["LH_EPS_03"]["EPS_VZ_BLW"])]
ret.steeringTorque = pt_cp.vl["LH_EPS_03"]["EPS_Lenkmoment"] * (1, -1)[int(pt_cp.vl["LH_EPS_03"]["EPS_VZ_Lenkmoment"])]
ret.steeringPressed = abs(ret.steeringTorque) > self.CCP.STEER_DRIVER_ALLOWANCE

View File

@@ -511,3 +511,42 @@ def test_mlb_carstate_subscriptions_settle_and_stay_alive(build):
assert ret.canValid
assert all(parser.can_valid for parser in car.can_parsers.values())
assert not any(parser.bus_timeout for parser in car.can_parsers.values())
def _steering_state(flags, lwi=(0.0, 0), eps=(0.0, 0)):
state = object.__new__(CarState)
state.CP = SimpleNamespace(flags=flags)
state.CCP = SimpleNamespace(STEER_DRIVER_ALLOWANCE=100, hca_status_values={5: "ACTIVE"})
state.eps_init_complete = True
state.frame = 0
pt_cp = SimpleNamespace(vl={
"LWI_01": {"LWI_Lenkradwinkel": lwi[0], "LWI_VZ_Lenkradwinkel": lwi[1],
"LWI_Lenkradw_Geschw": 4.0, "LWI_VZ_Lenkradw_Geschw": 0},
"LH_EPS_03": {"EPS_Berechneter_LW": eps[0], "EPS_VZ_BLW": eps[1],
"EPS_Lenkmoment": 0.0, "EPS_VZ_Lenkmoment": 0, "EPS_HCA_Status": 5},
})
ret = structs.CarState()
state.parse_mlb_mqb_steering_state(ret, pt_cp)
return ret
def test_mlb_takes_the_steering_angle_from_the_eps():
ret = _steering_state(VolkswagenFlags.MLB, lwi=(12.0, 0), eps=(9.6, 0))
assert ret.steeringAngleDeg == pytest.approx(9.6)
assert ret.steeringRateDeg == pytest.approx(4.0)
def test_mlb_eps_angle_honours_its_own_sign_bit():
ret = _steering_state(VolkswagenFlags.MLB, lwi=(12.0, 0), eps=(9.6, 1))
assert ret.steeringAngleDeg == pytest.approx(-9.6)
def test_mlb_without_hca_eps_keeps_the_steering_wheel_sensor():
flags = VolkswagenFlags.MLB | VolkswagenFlagsIQ.IQ_MLB_NO_HCA_EPS
ret = _steering_state(flags, lwi=(12.0, 1), eps=(9.6, 0))
assert ret.steeringAngleDeg == pytest.approx(-12.0)
def test_mqb_keeps_the_steering_wheel_sensor():
ret = _steering_state(0, lwi=(12.0, 0), eps=(9.6, 0))
assert ret.steeringAngleDeg == pytest.approx(12.0)