forked from IQ.Lvbs/IQ.Pilot
IQ.Pilot Release Commit @ f58fc1d
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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]
|
||||
Reference in New Issue
Block a user