mirror of
https://github.com/azaion/gps-denied-onboard.git
synced 2026-06-22 21:51:12 +00:00
[AZ-596] Batch 76: fc_proxy_runtime driver (FDR-replay mode)
Add `runner/helpers/fc_proxy_runtime.py` wrapping the existing
`BlackoutSpoofProxy` (AZ-406) with a scenario-facing `drive_fc_proxy`
entry point. FDR-replay mode only: loads `schedule.json`, optionally
activates the proxy against a caller clock for alignment verification,
and writes a `proxy_drive_report.json` audit record into
`${E2E_SITL_REPLAY_DIR}` for downstream evaluators.
Replaces the local `_drive_fc_proxy` stub in FT-N-04. Adds 3
@property accessors on `BlackoutSpoofProxy` so the wrapper does not
reach into private attributes. +11 unit tests (608 total, up from
596). Live-mode router wiring remains out of scope (future ticket).
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -154,6 +154,18 @@ class BlackoutSpoofProxy:
|
||||
def activation_report(self) -> ProxyAlignmentReport | None:
|
||||
return self._activation_report
|
||||
|
||||
@property
|
||||
def window_start_ms(self) -> int:
|
||||
return self._window_start_ms
|
||||
|
||||
@property
|
||||
def window_end_ms(self) -> int:
|
||||
return self._window_end_ms
|
||||
|
||||
@property
|
||||
def spoof_frame_count(self) -> int:
|
||||
return len(self._spoof_gps)
|
||||
|
||||
def _proxy_time_ms(self) -> int:
|
||||
if not self._activated or self._now_ms_provider is None or self._t0_ms is None:
|
||||
raise RuntimeError("proxy not activated — call activate(...) first")
|
||||
|
||||
Reference in New Issue
Block a user