diff --git a/openpilot/starpilot/aol/tests/test_temporary_steering_sequence.py b/openpilot/starpilot/aol/tests/test_temporary_steering_sequence.py index c6dd77036a..8421f28979 100644 --- a/openpilot/starpilot/aol/tests/test_temporary_steering_sequence.py +++ b/openpilot/starpilot/aol/tests/test_temporary_steering_sequence.py @@ -314,3 +314,32 @@ def test_initial_eps_off_cannot_reorder_the_preceding_accepted_active_source(): assert 11_530_000_000 - proof.aolAxisState.sourceCarStateMonoTime < 30_000_000 assert not receive(11_530_000_000, axis=proof.as_reader(), state=temporary) assert not card.aol_card_intent.allowed_latch + + +def test_axis_first_eps_join_uses_last_accepted_active_proof_without_renewing_leases(): + case = fixture.IoniqAvailabilityTests(methodName='runTest') + with OpenpilotPrefix(), ExitStack() as cleanup: + cleanup.callback(case.doCleanups) + sd, _, drive, card, receive = baseline(case) + feedback = card.aol_transport_feedback + original = leases(feedback) + drive(152, gas=True, native_request_long=False) + temporary = fixture.car_state() + temporary.gasPressed = temporary.steerFaultTemporary = True + assert receive(11_529_500_000, axis=sd.pm.messages['aolAxisState'], + event=sd.pm.messages['onroadEvents'], state=temporary) + active = feedback.signature + assert leases(feedback) == original + withdrawn, _, command = drive(153, gas=True, observed_state=temporary, + native_request_lat=True, native_request_long=False) + assert not withdrawn.lateralActive and not withdrawn.longitudinalActive + assert not command.latActive and not command.longActive + proof, event = sd.pm.messages['aolAxisState'], sd.pm.messages['onroadEvents'] + now = 11_541_000_000 + assert now - original[1] > 30_000_000 + assert now - active[8] <= 30_000_000 and now <= active[4] + assert receive(now, axis=proof, state=temporary) + assert card.aol_card_intent.allowed_latch and not feedback.failed + assert leases(feedback) == original + assert receive(now + 100_000, event=event, state=temporary) + assert card.aol_card_intent.allowed_latch and leases(feedback) == original diff --git a/openpilot/starpilot/aol/transport_pause.py b/openpilot/starpilot/aol/transport_pause.py index 654da5a254..78e1b7bdac 100644 --- a/openpilot/starpilot/aol/transport_pause.py +++ b/openpilot/starpilot/aol/transport_pause.py @@ -780,7 +780,8 @@ class TransportPauseFeedback: previous[9] and previous[11] and previous[13] and previous[6] == event_ns and axis.sourceCarStateMonoTime >= previous[8] and stamp >= previous[2] and previous[14] == producer and previous[15] == self.availability_epoch and - 0 < self.lateral_source_ns <= now_ns and now_ns - self.lateral_source_ns <= AXIS_MAX_AGE_NS) + 0 < self.lateral_source_ns <= previous[8] <= previous[2] <= now_ns <= previous[4] and + now_ns - previous[8] <= AXIS_MAX_AGE_NS) pending_withdrawal = bool(all_off and not any(event.softDisable or event.userDisable for event in events) and not temporary_event and 0 < event_ns < axis.faultEventMonoTime <= stamp and now_ns - axis.faultEventMonoTime <= AXIS_MAX_AGE_NS and diff --git a/prebuilt.json b/prebuilt.json index d30cc74c38..a7534c8cb6 100644 --- a/prebuilt.json +++ b/prebuilt.json @@ -1 +1 @@ -{"protected_inventory_sha256": "e85babf7279be72dc647b70a9128be20822dff6482032814608abff6c091ad2f", "schema_version": 1} +{"protected_inventory_sha256": "783693de8a5c20de962697ff67e21993d68783b1456e4fc51a3e650d10ea4790", "schema_version": 1}