fix(protocol): adjust waveform download to use full_waveform for accurate event streaming
This commit is contained in:
+7
-7
@@ -885,13 +885,13 @@ 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=False (metadata-only, stop_after_metadata=True) —
|
||||
# Blastware writes waveform files from only the first ~8 A5 frames, NOT
|
||||
# the full bulk download. Using full_waveform=True produces a file
|
||||
# ~8x larger than Blastware's because it includes all post-event
|
||||
# silence chunks. The metadata-only a5_frames (with terminator) are
|
||||
# sufficient for byte-perfect write_blastware_file output.
|
||||
events = client.get_events(full_waveform=False, stop_after_index=index)
|
||||
# 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)
|
||||
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))
|
||||
|
||||
Reference in New Issue
Block a user