mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-06 20:43:46 +08:00
Keep Mach-E native LONG withdrawal separate from manual steering
This commit is contained in:
@@ -1777,9 +1777,10 @@ class SelfdriveD:
|
||||
proof[5] != companion.integrity_epoch or not ((intent.allowedLatch and intent.lateralArmed) or ordinary_ford) or
|
||||
not native.requestedLateral or not native.lateralAllowed or
|
||||
not native.requestedLongitudinal or native.longitudinalAllowed or not native.pandaInventory or
|
||||
CS.brakePressed or CS.regenBraking or CS.gasPressed or CS.steeringPressed or
|
||||
CS.brakePressed or CS.regenBraking or CS.gasPressed or CS.steeringPressed and not ordinary_ford or
|
||||
any(self.events.contains(kind) for kind in (ET.IMMEDIATE_DISABLE, ET.SOFT_DISABLE, ET.USER_DISABLE,
|
||||
ET.OVERRIDE_LATERAL, ET.OVERRIDE_LONGITUDINAL))):
|
||||
ET.OVERRIDE_LONGITUDINAL)) or
|
||||
not ordinary_ford and self.events.contains(ET.OVERRIDE_LATERAL)):
|
||||
return False
|
||||
def identity(state):
|
||||
return (state.axisSessionId, state.pandaSerial, state.safetyModel, state.safetyParam,
|
||||
|
||||
@@ -33,9 +33,11 @@ def caller():
|
||||
|
||||
|
||||
@pytest.mark.parametrize('pedal', ['gas', 'brake'])
|
||||
def test_ordinary_pedal_edge_withdraws_long_without_inventing_aol_latch(caller, pedal):
|
||||
@pytest.mark.parametrize('steering', [False, True])
|
||||
def test_ordinary_pedal_edge_withdraws_long_without_inventing_aol_latch(caller, pedal, steering):
|
||||
sd, cs, drive = caller
|
||||
kwargs = {'native_request_lat': True, 'allowed': True, 'native_request_long': True, 'long_allowed': False, 'panda_controls_allowed': pedal == 'gas'}
|
||||
kwargs = {'native_request_lat': True, 'allowed': True, 'native_request_long': True, 'long_allowed': False,
|
||||
'steering': steering, 'panda_controls_allowed': pedal == 'gas'}
|
||||
a, s, c = drive(10, **kwargs)
|
||||
assert not a.longitudinalActive and not c.longActive
|
||||
assert a.lateralActive and c.latActive and s.enabled
|
||||
@@ -51,16 +53,17 @@ def test_ordinary_pedal_edge_withdraws_long_without_inventing_aol_latch(caller,
|
||||
assert not s.enabled and not s.active and not a.lateralActive and not c.latActive
|
||||
# Releasing brake alone must not rearm ordinary ACC or independent LAT.
|
||||
cs.brakePressed = False
|
||||
a, s, c = drive(12)
|
||||
a, s, c = drive(12, steering=steering)
|
||||
assert not s.enabled and not a.lateralActive and not a.longitudinalActive and not c.latActive and not c.longActive
|
||||
else:
|
||||
assert s.enabled and a.lateralActive and c.latActive
|
||||
|
||||
|
||||
@pytest.mark.parametrize('fault', ['lat_denied', 'native_invalid', 'rx_fault', 'relay_fault', 'prior_expired', 'prior_absent', 'proof_absent'])
|
||||
def test_faults_and_missing_original_proof_remain_immediate(caller, fault):
|
||||
@pytest.mark.parametrize('steering', [False, True])
|
||||
def test_faults_and_missing_original_proof_remain_immediate(caller, fault, steering):
|
||||
sd, cs, drive = caller
|
||||
kw = {'native_request_lat': True, 'allowed': True, 'native_request_long': True, 'long_allowed': False, 'panda_controls_allowed': False}
|
||||
kw = {'native_request_lat': True, 'allowed': True, 'native_request_long': True, 'long_allowed': False, 'steering': steering, 'panda_controls_allowed': False}
|
||||
if fault == 'lat_denied':
|
||||
kw['allowed'] = False
|
||||
elif fault == 'native_invalid':
|
||||
@@ -83,10 +86,11 @@ def test_faults_and_missing_original_proof_remain_immediate(caller, fault):
|
||||
assert log.OnroadEvent.EventName.controlsMismatch in sd.events.names
|
||||
|
||||
|
||||
def test_persistent_native_long_denial_keeps_original_mismatch_owner(caller):
|
||||
@pytest.mark.parametrize('steering', [False, True])
|
||||
def test_persistent_native_long_denial_keeps_original_mismatch_owner(caller, steering):
|
||||
sd, cs, drive = caller
|
||||
for tick in range(10, 230):
|
||||
a, s, c = drive(tick, native_request_lat=True, allowed=True, native_request_long=True, long_allowed=False, panda_controls_allowed=False)
|
||||
a, s, c = drive(tick, native_request_lat=True, allowed=True, native_request_long=True, long_allowed=False, panda_controls_allowed=False, steering=steering)
|
||||
assert not a.longitudinalActive and not c.longActive
|
||||
if log.OnroadEvent.EventName.controlsMismatch in sd.events.names:
|
||||
break
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
{"protected_inventory_sha256": "2c7ad6865477b3c48cd53996b2a5e48fd9cd574ab56986fa1085a9247e158524", "schema_version": 1}
|
||||
{"protected_inventory_sha256": "c2cb35e4cc4b850825f002c3d16def1f3c20dfdf818e154e448fb85558c08a2b", "schema_version": 1}
|
||||
|
||||
Reference in New Issue
Block a user