IQ.Pilot Release Commit @ f58fc1d

This commit is contained in:
IQ.Lvbs CI [bot]
2026-08-26 09:16:16 -05:00
parent 0d844a5ca2
commit 9206164707
27 changed files with 111 additions and 49 deletions

View File

@@ -188,6 +188,11 @@ class MQBStandstillManager:
self.prev_accel = accel
return long_active, accel, stopping, starting, esp_starting_override, esp_stopping_override
def accel_during_driver_override(accel: float, gas_pressed: bool, keep_long_active: bool) -> float:
return 0.0 if gas_pressed and keep_long_active else accel
class CarController(CarControllerBase):
def __init__(self, dbc_names, CP, CP_IQ):
from iqpilot.system.proprietary_runtime._verified_import import import_verified_module
@@ -458,11 +463,8 @@ class CarController(CarControllerBase):
if self.CP.flags & (VolkswagenFlags.MEB | VolkswagenFlags.MQB_EVO):
if self.frame % 2 == 0:
blinker_active = CS.left_blinker_active or CS.right_blinker_active
left_blinker = CC.leftBlinker if not blinker_active else False
right_blinker = CC.rightBlinker if not blinker_active else False
can_sends.append(self.CCS.create_blinker_control(self.packer_pt, self.CAN.pt, CS.ea_hud_stock_values, CS.ea_control_stock_values,
left_blinker, right_blinker, self.hide_ea_error))
CC.leftBlinker, CC.rightBlinker, self.hide_ea_error))
if self.CP.openpilotLongitudinalControl and self.CCS in (mqbcan, mlbcan) and not self.acc_counter_seeded and CS.acc_stock_counters:
seed_msgs = ("ACC_01", "ACC_02") if self.CCS is mlbcan else ("ACC_02", "ACC_06", "ACC_07", "ACC_10")
@@ -504,7 +506,7 @@ class CarController(CarControllerBase):
stopping = actuators.longControlState == LongCtrlState.stopping
starting = actuators.longControlState == LongCtrlState.pid and (CS.esp_hold_confirmation or CS.out.vEgo < 0.25)
long_active = CC.longActive
accel = actuators.accel
accel = accel_during_driver_override(actuators.accel, CS.out.gasPressed, self.CP_IQ.longActiveWithGasOverride)
esp_starting_override = None
esp_stopping_override = None

View File

@@ -0,0 +1,17 @@
"""
Copyright © IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved, licensed under https://konn3kt.com/tos/
"""
import pytest
from iqdbc.car.volkswagen.carcontroller import accel_during_driver_override
@pytest.mark.parametrize("accel", [-3.5, -0.5, 0.0, 0.5, 2.0])
def test_opted_in_driver_override_sends_neutral_accel(accel):
assert accel_during_driver_override(accel, True, True) == 0.0
@pytest.mark.parametrize("gas_pressed,keep_long_active", [(False, False), (False, True), (True, False)])
def test_other_longitudinal_paths_preserve_accel(gas_pressed, keep_long_active):
assert accel_during_driver_override(-0.7, gas_pressed, keep_long_active) == -0.7

View File

@@ -0,0 +1,43 @@
"""Copyright (c) IQ.Lvbs, apart of Project Teal Lvbs, All Rights Reserved."""
from iqdbc.can import CANPacker, CANParser
from iqdbc.car.volkswagen import mebcan
EA_HUD_VALUES = {
"EA_Texte": 0,
"ACF_Lampe_Hands_Off": 0,
"EA_Infotainment_Anf": 0,
"EA_Tueren_Anf": 0,
"EA_Innenraumlicht_Anf": 0,
"zFAS_Warnblinken": 0,
"STP_Primaeranz": 0,
"EA_Bremslichtblinken": 0,
"EA_Blinken": 0,
"EA_Unknown": 0,
}
EA_CONTROL_VALUES = {"EA_Funktionsstatus": 2}
def blinker_values(dbc, requests):
packer = CANPacker(dbc)
parser = CANParser(dbc, [("EA_02", 50)], 0)
values = []
for left, right in requests:
msg = mebcan.create_blinker_control(
packer, 0, EA_HUD_VALUES, EA_CONTROL_VALUES, left, right, False,
)
parser.update([0, [msg]])
values.append(int(parser.vl["EA_02"]["EA_Blinken"]))
return values
def test_nav_blinker_request_remains_asserted_until_released():
requests = [(True, False)] * 100 + [(False, False)]
assert blinker_values("vw_meb", requests) == [1] * 100 + [0]
def test_nav_blinker_directions_on_meb_variants():
requests = [(True, False), (False, True), (False, False)]
for dbc in ("vw_meb", "vw_meb_2024", "vw_mqbevo"):
assert blinker_values(dbc, requests) == [1, 2, 0]