Expose burst acquisition in the app; refresh scan_format acquisition docs

Wires the burst_mode flag through QtScanController to ScanEngine and adds a
checkbox to the scan panel. The setting persists via ScanDefaults like the
other scan fields, defaulting to off — per-row acquisition stays the default
path until burst mode has run on the rig and the gate-off preflight has
settled which TRIGOUT value idles the pin low.

scan_format.md — the acquisition settings table had drifted from the code it
claimed to describe: it attributed the settings to sc3_aui_app.py (they moved
to core/scope_sras.py in the Phase 2 extraction), listed a 1.24 V trigger
level and 0 % offset where the code sets 0.500 V and HORizontal:POSition 30,
and did not mention the logic-AND scan trigger at all. Corrected, pointed at
the module that actually owns them, and noted that none of it affects byte
layout — only where the acoustic packet lands inside a frame.

Added an acquisition-paths section: the two paths write byte-identical files
and the choice is a runtime flag that is not recorded in the file, so a
reader never needs to care which produced it. Documents where row boundaries
come from in a burst and that either path squares rows up to n_frames.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Thomas Ales
2026-09-02 12:18:23 -05:00
parent 116c9c07c7
commit ef8c0feb91
5 changed files with 59 additions and 13 deletions
+3 -2
View File
@@ -32,7 +32,7 @@ class QtScanController(QObject):
paused_changed = pyqtSignal(bool) # True while paused at a row boundary
def __init__(self, stage, scope, rotator, plan, out_path,
resume=None, on_scan_active=None):
resume=None, on_scan_active=None, burst_mode=False):
super().__init__()
self._prompt_event = threading.Event()
self._on_scan_active = on_scan_active
@@ -47,7 +47,8 @@ class QtScanController(QObject):
prompt=self._blocking_prompt,
)
self._engine = ScanEngine(stage, scope, rotator, plan, out_path,
resume=resume, callbacks=callbacks)
resume=resume, callbacks=callbacks,
burst_mode=burst_mode)
# ── Engine control (called from the GUI thread) ───────────────────────────