working version
This commit is contained in:
@@ -176,6 +176,7 @@ class MultiRadarSequentialCaptureSession:
|
||||
can_undo=bool(self._captured_batches),
|
||||
is_complete=self.is_complete(),
|
||||
variant_count=len(self._radar_variants),
|
||||
supports_batch_capture=not self._manual_multi_device_capture,
|
||||
)
|
||||
|
||||
def capture_current_combo(self) -> MultiRadarCaptureBatch:
|
||||
@@ -186,9 +187,11 @@ class MultiRadarSequentialCaptureSession:
|
||||
if combo is None:
|
||||
raise RuntimeError("Capture session is already complete")
|
||||
|
||||
pending_traces_by_radar_key: dict[str, list[TraceData]] = {}
|
||||
display_traces: list[TraceData] = []
|
||||
variant_labels: list[str] = []
|
||||
|
||||
if self._is_multi_device:
|
||||
traces: list[TraceData] = []
|
||||
variant_labels: list[str] = []
|
||||
for variant in self._radar_variants:
|
||||
self._radar.configure(variant.config.radar.sweep)
|
||||
if self._base_config.runtime.settling_ms > 0:
|
||||
@@ -198,56 +201,47 @@ class MultiRadarSequentialCaptureSession:
|
||||
raise RuntimeError(f"Multi-device variant {variant.display_name} returned no traces")
|
||||
if self._manual_multi_device_capture:
|
||||
trace = select_trace_for_combo(collection, combo)
|
||||
self._traces_by_radar_key[variant.radar_key].append(trace)
|
||||
traces.append(trace)
|
||||
pending_traces_by_radar_key[variant.radar_key] = [trace]
|
||||
display_traces.append(trace)
|
||||
else:
|
||||
self._traces_by_radar_key[variant.radar_key].extend(collection.traces)
|
||||
traces.append(collection.traces[-1])
|
||||
pending_traces_by_radar_key[variant.radar_key] = list(collection.traces)
|
||||
display_traces.append(collection.traces[-1])
|
||||
variant_labels.append(variant.display_name)
|
||||
|
||||
batch = MultiRadarCaptureBatch(
|
||||
combo=combo,
|
||||
traces=tuple(traces),
|
||||
variant_labels=tuple(variant_labels),
|
||||
)
|
||||
self._captured_batches.append(batch)
|
||||
if self._manual_multi_device_capture:
|
||||
self._next_index += 1
|
||||
else:
|
||||
self._next_index = len(self._combos)
|
||||
return batch
|
||||
|
||||
assert self._input_switch is not None
|
||||
assert self._output_switch is not None
|
||||
self._output_switch.switch_to(combo.output)
|
||||
self._input_switch.switch_to(combo.input)
|
||||
if self._base_config.runtime.settling_ms > 0:
|
||||
time.sleep(self._base_config.runtime.settling_ms / 1000.0)
|
||||
|
||||
traces: list[TraceData] = []
|
||||
variant_labels: list[str] = []
|
||||
for variant in self._radar_variants:
|
||||
self._radar.configure(variant.config.radar.sweep)
|
||||
else:
|
||||
assert self._input_switch is not None
|
||||
assert self._output_switch is not None
|
||||
self._output_switch.switch_to(combo.output)
|
||||
self._input_switch.switch_to(combo.input)
|
||||
if self._base_config.runtime.settling_ms > 0:
|
||||
time.sleep(self._base_config.runtime.settling_ms / 1000.0)
|
||||
sweep = self._radar.acquire()
|
||||
trace = TraceData(
|
||||
combo=ComboKey(input_pos=combo.input, output_pos=combo.output),
|
||||
frequency_hz=np.asarray(sweep.x, dtype=np.float32),
|
||||
s11=np.asarray(sweep.trace("s11"), dtype=np.complex64),
|
||||
s21=np.asarray(sweep.trace("s21"), dtype=np.complex64),
|
||||
)
|
||||
traces.append(trace)
|
||||
variant_labels.append(variant.display_name)
|
||||
self._traces_by_radar_key[variant.radar_key].append(trace)
|
||||
|
||||
for variant in self._radar_variants:
|
||||
self._radar.configure(variant.config.radar.sweep)
|
||||
if self._base_config.runtime.settling_ms > 0:
|
||||
time.sleep(self._base_config.runtime.settling_ms / 1000.0)
|
||||
sweep = self._radar.acquire()
|
||||
trace = TraceData(
|
||||
combo=ComboKey(input_pos=combo.input, output_pos=combo.output),
|
||||
frequency_hz=np.asarray(sweep.x, dtype=np.float32),
|
||||
s11=np.asarray(sweep.trace("s11"), dtype=np.complex64),
|
||||
s21=np.asarray(sweep.trace("s21"), dtype=np.complex64),
|
||||
)
|
||||
pending_traces_by_radar_key[variant.radar_key] = [trace]
|
||||
display_traces.append(trace)
|
||||
variant_labels.append(variant.display_name)
|
||||
|
||||
for radar_key, traces in pending_traces_by_radar_key.items():
|
||||
self._traces_by_radar_key[radar_key].extend(traces)
|
||||
batch = MultiRadarCaptureBatch(
|
||||
combo=combo,
|
||||
traces=tuple(traces),
|
||||
traces=tuple(display_traces),
|
||||
variant_labels=tuple(variant_labels),
|
||||
)
|
||||
self._captured_batches.append(batch)
|
||||
self._next_index += 1
|
||||
if self._is_multi_device and not self._manual_multi_device_capture:
|
||||
self._next_index = len(self._combos)
|
||||
else:
|
||||
self._next_index += 1
|
||||
return batch
|
||||
|
||||
def undo_last_capture(self) -> MultiRadarCaptureBatch:
|
||||
|
||||
@@ -30,6 +30,7 @@ class SequentialCaptureState:
|
||||
can_undo: bool
|
||||
is_complete: bool
|
||||
variant_count: int = 1
|
||||
supports_batch_capture: bool = True
|
||||
|
||||
|
||||
class SequentialCaptureSession:
|
||||
@@ -141,6 +142,7 @@ class SequentialCaptureSession:
|
||||
current_combo=current_combo,
|
||||
can_undo=bool(self._traces),
|
||||
is_complete=self.is_complete(),
|
||||
supports_batch_capture=not self._manual_multi_device_capture,
|
||||
)
|
||||
|
||||
def capture_current_combo(self) -> TraceData:
|
||||
@@ -153,6 +155,8 @@ class SequentialCaptureSession:
|
||||
|
||||
if self._is_multi_device:
|
||||
collection = self._radar.acquire_collection(collection_id=1)
|
||||
if not collection.traces:
|
||||
raise RuntimeError("Multi-device capture returned no traces")
|
||||
if self._manual_multi_device_capture:
|
||||
trace = select_trace_for_combo(collection, combo)
|
||||
self._traces.append(trace)
|
||||
@@ -161,8 +165,6 @@ class SequentialCaptureSession:
|
||||
|
||||
self._traces.extend(collection.traces)
|
||||
self._next_index = len(self._combos)
|
||||
if not collection.traces:
|
||||
raise RuntimeError("Multi-device capture returned no traces")
|
||||
return collection.traces[-1]
|
||||
|
||||
assert self._input_switch is not None
|
||||
|
||||
Reference in New Issue
Block a user