From 39ebd4bdaaded698407ef8f1e119e16d07d44dbf Mon Sep 17 00:00:00 2001 From: Brian Harrison Date: Thu, 23 Apr 2026 15:11:56 -0400 Subject: [PATCH] fix(protocol): revert endpoint back to stop_after_metadata=True --- sfm/server.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/sfm/server.py b/sfm/server.py index 58c69da..22248c5 100644 --- a/sfm/server.py +++ b/sfm/server.py @@ -885,13 +885,12 @@ def device_event_blastware_file( def _do(): with _build_client(port, baud, host, tcp_port, timeout=120.0) as client: info = client.connect() - # Use full_waveform=True (stop_after_metadata=False) so the device - # signals its own end-of-stream rather than us stopping at "Project:". - # BW downloads until natural end-of-stream for each event — for this - # 5-chunk event that gives the correct body + footer. For events with - # many silence chunks (35+) the file will be larger than BW's, but - # correctness takes priority over size matching for now. - events = client.get_events(full_waveform=True, stop_after_index=index) + # Use full_waveform=False (stop_after_metadata=True) — downloads until + # "Project:" is found in the 5A stream, which covers the compliance + # metadata section. For simple Continuous/Single-Shot mode events this + # produces the correct body content. Histogram+Continuous mode requires + # different handling (TODO: handle multi-mode events). + events = client.get_events(full_waveform=False, stop_after_index=index) matching = [ev for ev in events if ev.index == index] return matching[0] if matching else None, info ev, info = _run_with_retry(_do, is_tcp=_is_tcp(host))