Avoid unnecessary AOL recovery profile validation

This commit is contained in:
firestar5683
2026-10-31 15:46:58 -05:00
parent 8a760a3381
commit 3926f11699
4 changed files with 31 additions and 5 deletions
@@ -168,3 +168,26 @@ def test_stock_location_never_retains_intent_through_independent_fault(family, f
if expected:
assert baseline == (card.aol_transport_feedback.lateral_baseline_ns, card.aol_transport_feedback.lateral_native_ns)
@pytest.mark.parametrize('family', ['canfd_radar', 'canfd_lka', 'canfd_lka_alt', 'canfd_camera', 'canfd_ccnc_camera'])
def test_healthy_stock_aol_skips_fault_recovery_profile_validation(family):
with ExitStack() as cleanup:
sd, drive, card, receive, state = stock_family_callers(cleanup, family)
for tick in range(2, 5):
axis, _, command = drive(tick, observed_state=state, panda_controls_allowed=False, native_request_long=False)
assert axis.lateralActive and command.latActive
assert receive(10_000_000_000 + tick * 10_000_000, state=state,
axis=sd.pm.messages['aolAxisState'], event=sd.pm.messages['onroadEvents'])
feedback = card.aol_transport_feedback
axis = card.sm['aolAxisState']
with mock.patch('openpilot.starpilot.aol.transport_pause.stock_lateral_user_event') as user_profile, \
mock.patch('opendbc.car.hyundai.canfd_stock_aol.qualified') as canfd_profile, \
mock.patch('opendbc.car.hyundai.canfd_angle_aol.qualified') as angle_profile, \
mock.patch('opendbc.car.hyundai.classic_scc_aol.qualified') as classic_profile:
assert not feedback._temporary_host_intent_current(card.sm, card.CP, state, axis,
int(card.sm.logMonoTime['aolAxisState']), 10_040_000_001, latched=True,
producer=card.slc_producer_session)
for profile in (user_profile, canfd_profile, angle_profile, classic_profile):
profile.assert_not_called()
assert card.aol_card_intent.allowed_latch
@@ -119,7 +119,9 @@ def test_temporary_lag_never_masks_real_fault_or_invalid_proof(fault):
elif fault == 'source_age':
proof.aolAxisState.sourceCarStateMonoTime -= 30_000_001
elif fault == 'cancel':
from dataclasses import replace
from opendbc.car.structs import car
card.aol_card_intent.settings = replace(card.aol_card_intent.settings, cancel_actions=(9, 0, 0))
state.buttonEvents = [car.CarState.ButtonEvent(type=car.CarState.ButtonEvent.Type.cancel, pressed=True)]
elif fault == 'settings_disabled':
from dataclasses import replace
+5 -4
View File
@@ -531,11 +531,12 @@ class TransportPauseFeedback:
# PCM-off != AOL toggle: after output withdrawal retain prior intent only for
# location faults/matched EPS recovery; native/session/source checks remain.
stock_angle = cp.brand == 'hyundai' and angle_qualified(cp, marked_only=True)
stock_hkg = cp.brand == 'hyundai' and (stock_angle or stock_canfd_qualified(cp, marked_only=True) or
recovering_user = bool((location_fault or eps_recovery) and users)
stock_angle = recovering_user and cp.brand == 'hyundai' and angle_qualified(cp, marked_only=True)
stock_hkg = recovering_user and cp.brand == 'hyundai' and (stock_angle or stock_canfd_qualified(cp, marked_only=True) or
stock_classic_qualified(cp, marked_only=True))
stock_user = stock_lateral_user_event(cp)
stock_temporary_user = bool((location_fault or eps_recovery) and (stock_hkg or cp.brand == 'chrysler' and chrysler_qualified(cp, marked_only=True) or
stock_user = stock_lateral_user_event(cp) if recovering_user else None
stock_temporary_user = bool(recovering_user and (stock_hkg or cp.brand == 'chrysler' and chrysler_qualified(cp, marked_only=True) or
cp.brand == 'ford' and ford_qualified(cp, marked_only=True) or cp.brand == 'nissan' and nissan_qualified(cp, marked_only=True)
or cp.brand == 'subaru' and subaru_qualified(cp, marked_only=True)
or cp.brand == 'mazda' and mazda_qualified(cp, marked_only=True)
+1 -1
View File
@@ -1 +1 @@
{"protected_inventory_sha256": "d883a2889150d0426b0cd382349553be92033bbb3017d381ffe7fe7efa5661b5", "schema_version": 1}
{"protected_inventory_sha256": "1d1ba61d19622cec24db89557681495ff4c3743205d975e95c8a12607e592957", "schema_version": 1}