IQ.Pilot Release Commit @ 98a2c61

This commit is contained in:
IQ.Lvbs CI [bot]
2026-08-19 14:10:31 -05:00
parent dca8172e55
commit 7e3d70380a
55 changed files with 699 additions and 114 deletions

View File

@@ -610,7 +610,8 @@ class CarController(CarControllerBase):
leadDistance = hud_control.leadDistance if self.CCS is mlbcan else \
(min(8, hud_control.leadDistance) if hud_control.leadDistance != 0 else 0)
self.leadDistanceBars = min(3, hud_control.leadDistanceBars)
acc_hud_status = self.CCS.acc_hud_status_value(CS.out.cruiseState.available, CS.out.accFaulted, CC.longActive, CC.cruiseControl.override)
acc_hud_status = self.CCS.acc_hud_status_value(CS.out.cruiseState.available, CS.out.accFaulted, CC.longActive,
CC.cruiseControl.override or CS.out.gasPressed)
set_speed = hud_control.setSpeed * CV.MS_TO_KPH
decel = dVisual(self.CCS, CS)
hud_kwargs = {"hud_text": self._mlb_acc_hud_text(hud_control, set_speed),

View File

@@ -347,4 +347,6 @@ class CarInterface(CarInterfaceBase):
@staticmethod
def _get_params_iq(stock_cp: structs.CarParams, ret: structs.IQCarParams, candidate, fingerprint: dict[int, dict[int, int]], car_fw: list[structs.CarParams.CarFw], alpha_long: bool, is_release_iq: bool, docs: bool) -> structs.IQCarParams:
ret.longitudinalStoppingSpeedOverride = get_longitudinal_stopping_speed_override(candidate, stock_cp.flags)
override_excluded_platforms = VolkswagenFlags.MLB | VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO
ret.longActiveWithGasOverride = alpha_long and not bool(stock_cp.flags & override_excluded_platforms)
return ret

View File

@@ -112,7 +112,7 @@ def create_acc_accel_control(packer, bus, acc_type, accel, acc_control, stopping
"ACS_Sollbeschl": accel if acc_enabled else 3.01,
"ACS_zul_Regelabw": comfortBand if acc_enabled else 1.27,
"ACS_max_AendGrad": jerkLimit if acc_enabled else 5.08,
"ACS_Schubabsch": 0,
"ACS_Schubabsch": 1 if acc_enabled and accel > 0.05 else 0,
"ACS_MomEingriff": 0,
"ACS_ADR_Schub": 0,
}

View File

@@ -0,0 +1,26 @@
"""
Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos/
"""
import pytest
from iqdbc.can import CANPacker
from iqdbc.car.volkswagen import pqcan
@pytest.mark.parametrize("accel, acc_control, expected", [
(-1.0, 1, False),
(0.0, 1, False),
(0.05, 1, False),
(0.051, 1, True),
(1.0, 1, True),
(1.0, 0, False),
])
def test_positive_acceleration_prevents_fuel_cutoff(accel, acc_control, expected):
packer = CANPacker("vw_pq")
messages = pqcan.create_acc_accel_control(
packer, 0, 1, accel, acc_control, False, False, False, 0.2, 0.3, False,
)
assert len(messages) == 1
_, data, _ = messages[0]
assert bool(data[1] & 0x80) is expected

View File

@@ -100,6 +100,23 @@ class TestVolkswagenPlatformConfigs:
assert bool(params.flags & VolkswagenFlagsIQ.IQ_PQ_ACC_FTS_EPB) is expected
assert bool(params.safetyConfigs[-1].safetyParam & VolkswagenSafetyFlags.PQ_ACC_FTS_EPB) is expected
@pytest.mark.parametrize("candidate, alpha_long, expected", (
(CAR.VOLKSWAGEN_PASSAT_B7, False, False),
(CAR.VOLKSWAGEN_PASSAT_B7, True, True),
(CAR.VOLKSWAGEN_GOLF_MK7, False, False),
(CAR.VOLKSWAGEN_GOLF_MK7, True, True),
(CAR.AUDI_Q5_MK1, True, False),
(CAR.VOLKSWAGEN_ID4_MK1, True, False),
(CAR.VOLKSWAGEN_GOLF_MK8, True, False),
))
def test_supported_vw_longitudinal_stays_active_during_gas_override(self, candidate, alpha_long, expected):
fingerprints = {bus: {} for bus in range(7)}
params = CarInterface.get_params(candidate, fingerprints, [], alpha_long=alpha_long, is_release=False, docs=False)
params_iq = CarInterface.get_params_iq(params, candidate, fingerprints, [], alpha_long=alpha_long, is_release_iq=False, docs=False)
assert params_iq.longActiveWithGasOverride is expected
if expected:
assert bool(params.safetyConfigs[-1].safetyParam & VolkswagenSafetyFlags.ALLOW_LONG_ACCEL_WITH_GAS_PRESSED) is alpha_long
@pytest.mark.parametrize("button_type", (
structs.CarState.ButtonEvent.Type.setCruise,

View File

@@ -250,6 +250,8 @@ class TestVolkswagenPqLongSafety(TestVolkswagenPqSafetyBase, common.Longitudinal
self._rx(self._user_gas_msg(1))
self.safety.set_controls_allowed(True)
self.assertTrue(self._tx(self._accel_msg(0.5)))
self.assertTrue(self._tx(self._accel_msg(0.0)))
self.assertTrue(self._tx(self._accel_msg(-0.5)))
class TestVolkswagenPqLowlineSafety(TestVolkswagenPqSafetyBase):

View File

@@ -0,0 +1 @@
95bfc521351d3acba7338605686155a9ee8b0009