Files
StarPilot/openpilot/starpilot/tests/ford_alpha_test_support.py
T

51 lines
2.4 KiB
Python

from dataclasses import replace
from opendbc.car import gen_empty_fingerprint, structs
from opendbc.car.ford.interface import CarInterface
from opendbc.car.ford.values import CAR
from openpilot.cereal import messaging
from openpilot.common.prefix import OpenpilotPrefix
from openpilot.starpilot.aol.transport_pause import TransportPauseFeedback
from openpilot.starpilot.tests.test_ford_reverse_intent import NOW, PRODUCER, change, native_change, sample
def receipt(cp, source, observed, sequence, *, combined=False, gas=False, reverse=False):
sm, native = sample(cp, source, observed, sequence, allowed=not reverse)
controls = bool(combined or gas)
native = native_change(
sm,
native,
requestedLongitudinal=combined or gas,
longitudinalAllowed=combined,
pandaInventory=(replace(native.pandaInventory[0], controlsAllowed=controls),),
)
change(sm, 'pandaStates', lambda ps: setattr(ps[0], 'controlsAllowed', controls))
change(sm, 'aolAxisState', lambda a: setattr(a, 'mode', 'combined' if combined else 'lateralOnly'))
change(sm, 'aolAxisState', lambda a: setattr(a, 'desiredLongitudinal', combined or gas))
change(sm, 'aolAxisState', lambda a: setattr(a, 'longitudinalActive', combined))
if combined or gas:
events = messaging.new_message('onroadEvents', int(gas), valid=True, logMonoTime=NOW + 10_000_000 if gas else NOW)
if gas:
events.onroadEvents[0].name = 'gasPressedOverride'
events.onroadEvents[0].overrideLongitudinal = True
sm.messages['onroadEvents'] = events.as_reader()
sm.logMonoTime['onroadEvents'] = int(events.logMonoTime)
change(sm, 'aolAxisState', lambda a: setattr(a, 'faultEventMonoTime', int(events.logMonoTime)))
return sm, native
def baseline(*, combined):
fp = gen_empty_fingerprint()
fp[0][0x5A] = 8
fp[2].update({0x3D6: 8, 0x186: 8})
with OpenpilotPrefix():
cp = CarInterface.get_params(CAR.FORD_MONDEO_MK5, fp, [], True, False, False)
cp.alternativeExperience = 32
assert cp.openpilotLongitudinalControl and cp.safetyConfigs[0].safetyParam == 11
cs = structs.CarState(canValid=True, gearShifter=structs.CarState.GearShifter.drive)
cs.cruiseState.available, cs.cruiseState.enabled = True, combined
f = TransportPauseFeedback(cp)
sm, _ = receipt(cp, NOW, NOW, 1, combined=combined)
assert not f.observe(sm, cp, cs, NOW, latched=True, intent_producer_session=PRODUCER)
return cp, cs, f