mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 05:23:41 +08:00
51 lines
2.4 KiB
Python
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
|