mirror of
https://gitlvb.teallvbs.xyz/IQ.Lvbs/IQ.Pilot.git
synced 2026-08-22 03:13:43 +08:00
118 lines
3.2 KiB
Python
118 lines
3.2 KiB
Python
from types import SimpleNamespace
|
|
|
|
from cereal import log
|
|
from iqdbc.car import structs
|
|
|
|
from openpilot.selfdrive.car.car_specific import CarSpecificEvents
|
|
|
|
EventName = log.OnroadEvent.EventName
|
|
GearShifter = structs.CarState.GearShifter
|
|
|
|
|
|
def make_car_state(**overrides):
|
|
base = dict(
|
|
doorOpen=False,
|
|
seatbeltUnlatched=False,
|
|
gearShifter=GearShifter.drive,
|
|
cruiseState=SimpleNamespace(available=True, enabled=False, nonAdaptive=False),
|
|
cruiseFaultLateralMode=False,
|
|
espDisabled=False,
|
|
espActive=False,
|
|
stockFcw=False,
|
|
stockAeb=False,
|
|
stockLkas=False,
|
|
vEgo=15.0,
|
|
brakeHoldActive=False,
|
|
parkingBrake=False,
|
|
accFaulted=False,
|
|
steeringPressed=False,
|
|
steeringDisengage=False,
|
|
brakePressed=False,
|
|
standstill=False,
|
|
gasPressed=False,
|
|
vehicleSensorsInvalid=False,
|
|
invalidLkasSetting=False,
|
|
lowSpeedAlert=False,
|
|
buttonEnable=False,
|
|
buttonEvents=[],
|
|
steerFaultTemporary=False,
|
|
steerFaultPermanent=False,
|
|
blockPcmEnable=False,
|
|
)
|
|
base.update(overrides)
|
|
return SimpleNamespace(**base)
|
|
|
|
|
|
def test_pcm_disable_suppressed_during_cruise_fault_lateral_mode():
|
|
cp = SimpleNamespace(
|
|
brand="volkswagen",
|
|
openpilotLongitudinalControl=False,
|
|
minEnableSpeed=0.0,
|
|
pcmCruise=True,
|
|
carFingerprint="MOCK",
|
|
)
|
|
events = CarSpecificEvents(cp)
|
|
|
|
cs = make_car_state(cruiseFaultLateralMode=True)
|
|
cs_prev = make_car_state(cruiseState=SimpleNamespace(available=True, enabled=True, nonAdaptive=False))
|
|
|
|
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
|
|
|
assert not out.has(EventName.pcmDisable)
|
|
|
|
|
|
def test_cruise_fault_lateral_mode_replaces_acc_faulted_alert():
|
|
cp = SimpleNamespace(
|
|
brand="volkswagen",
|
|
openpilotLongitudinalControl=False,
|
|
minEnableSpeed=0.0,
|
|
pcmCruise=True,
|
|
carFingerprint="MOCK",
|
|
)
|
|
events = CarSpecificEvents(cp)
|
|
|
|
cs = make_car_state(accFaulted=True, cruiseFaultLateralMode=True)
|
|
cs_prev = make_car_state()
|
|
|
|
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
|
|
|
assert out.has(EventName.cruiseFaultLateralAllowed)
|
|
assert not out.has(EventName.accFaulted)
|
|
|
|
|
|
def test_acc_faulted_still_emitted_without_cruise_fault_lateral_mode():
|
|
cp = SimpleNamespace(
|
|
brand="volkswagen",
|
|
openpilotLongitudinalControl=False,
|
|
minEnableSpeed=0.0,
|
|
pcmCruise=True,
|
|
carFingerprint="MOCK",
|
|
)
|
|
events = CarSpecificEvents(cp)
|
|
|
|
cs = make_car_state(accFaulted=True)
|
|
cs_prev = make_car_state()
|
|
|
|
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
|
|
|
assert out.has(EventName.accFaulted)
|
|
assert not out.has(EventName.cruiseFaultLateralAllowed)
|
|
|
|
|
|
def test_pcm_disable_still_emitted_without_cruise_fault_lateral_mode():
|
|
cp = SimpleNamespace(
|
|
brand="volkswagen",
|
|
openpilotLongitudinalControl=False,
|
|
minEnableSpeed=0.0,
|
|
pcmCruise=True,
|
|
carFingerprint="MOCK",
|
|
)
|
|
events = CarSpecificEvents(cp)
|
|
|
|
cs = make_car_state()
|
|
cs_prev = make_car_state(cruiseState=SimpleNamespace(available=True, enabled=True, nonAdaptive=False))
|
|
|
|
out = events.update(cs, cs_prev, SimpleNamespace(actuators=SimpleNamespace(accel=0.0)))
|
|
|
|
assert out.has(EventName.pcmDisable)
|