Refactor radar system
This commit is contained in:
@@ -21,18 +21,19 @@ class AppWindowPlotMixin(
|
||||
):
|
||||
"""Routes plotting to trace, B-scan, GPR, or 3D SAR-specific mixins."""
|
||||
|
||||
def _draw_preferred_collection(
|
||||
self,
|
||||
*,
|
||||
result_latest: ResultCollection | None,
|
||||
) -> None:
|
||||
"""Draw latest available result collection if present."""
|
||||
if result_latest is None:
|
||||
return
|
||||
self._draw_results(result_latest)
|
||||
|
||||
def _draw_results(self, collection: ResultCollection) -> bool:
|
||||
"""Draw collection based on currently selected processing mode."""
|
||||
expected_revision = getattr(self, "_required_processing_revision", None)
|
||||
if expected_revision is not None and self._is_gpr_like_processing_mode(self._processing_mode.currentText()):
|
||||
revision = next((payload for payload in collection.collection_payloads
|
||||
if payload.processing_name == "processing_revision" and payload.kind == 4), None)
|
||||
if revision is None or revision.table.shape != (1, 4):
|
||||
return False
|
||||
if any(not 0 <= word <= 0xffff or word != int(word) for word in revision.table[0]):
|
||||
return False
|
||||
actual_revision = sum(int(word) << (index * 16) for index, word in enumerate(revision.table[0]))
|
||||
if actual_revision != expected_revision:
|
||||
return False
|
||||
if self._processing_mode.currentText() == "bscan":
|
||||
return self._draw_bscan_heatmap(collection)
|
||||
if self._processing_mode.currentText() in {"gpr", "legacy_gpr"}:
|
||||
@@ -42,11 +43,11 @@ class AppWindowPlotMixin(
|
||||
return self._draw_trace_lines(collection)
|
||||
|
||||
def _result_collection_has_trace(self, collection: ResultCollection) -> bool:
|
||||
"""Return `True` when collection contains at least one trace payload."""
|
||||
if collection.collection_payloads:
|
||||
"""Recognize processed output, including an empty trace after a valid depth/frequency cut."""
|
||||
if any(payload.processing_name != "processing_revision" for payload in collection.collection_payloads):
|
||||
return True
|
||||
for block in collection.blocks:
|
||||
for payload in block.payloads:
|
||||
if payload.kind == 1 and payload.trace.size > 0:
|
||||
if payload.kind == 1:
|
||||
return True
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user