report sensor freshness in captures

This commit is contained in:
Jay
2026-08-17 10:25:29 -04:00
parent b8fe233ba6
commit 07d47f99a4
2 changed files with 38 additions and 2 deletions
+34
View File
@@ -30,6 +30,15 @@ EXPECTED_COLUMNS = [
"loop_overrun_count",
]
ACCEL_STATUS_INDEX = EXPECTED_COLUMNS.index("accel_int_source")
GYRO_STATUS_INDEX = EXPECTED_COLUMNS.index("gyro_status")
LOOP_OVERRUN_INDEX = EXPECTED_COLUMNS.index("loop_overrun_count")
ACCEL_DATA_READY_MASK = 0x80
ACCEL_OVERRUN_MASK = 0x01
GYRO_DATA_READY_MASK = 0x08
GYRO_OVERRUN_MASK = 0x80
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser()
@@ -85,6 +94,11 @@ def main() -> int:
timing_anomaly_count = 0
ignored_line_count = 0
rejected_record_count = 0
accel_stale_count = 0
accel_overrun_count = 0
gyro_stale_count = 0
gyro_overrun_count = 0
final_loop_overrun_count = 0
previous_sequence = None
previous_timestamp_us = None
print(f"Recording {port} to {output}; press Ctrl-C to stop", flush=True)
@@ -123,6 +137,19 @@ def main() -> int:
sequence = values[0]
timestamp_us = values[1]
accel_status = values[ACCEL_STATUS_INDEX]
gyro_status = values[GYRO_STATUS_INDEX]
final_loop_overrun_count = values[LOOP_OVERRUN_INDEX]
if not accel_status & ACCEL_DATA_READY_MASK:
accel_stale_count += 1
if accel_status & ACCEL_OVERRUN_MASK:
accel_overrun_count += 1
if not gyro_status & GYRO_DATA_READY_MASK:
gyro_stale_count += 1
if gyro_status & GYRO_OVERRUN_MASK:
gyro_overrun_count += 1
if previous_sequence is not None:
expected_sequence = (previous_sequence + 1) & 0xFFFFFFFF
if sequence != expected_sequence:
@@ -159,6 +186,13 @@ def main() -> int:
f"saved {output}",
flush=True,
)
print(
f"Status totals: accel_stale={accel_stale_count}, "
f"accel_overrun={accel_overrun_count}, gyro_stale={gyro_stale_count}, "
f"gyro_overrun={gyro_overrun_count}, "
f"acquisition_loop_overruns={final_loop_overrun_count}",
flush=True,
)
return 0