"""Collector packets preserve whole sweeps, source windows and pair identity.""" import struct import unittest import numpy as np from python_app.hardware_full.rph_radar.protocol import RfgSweepAssembler, RphRadarStreamParser def packet(*, source_id=1, cycle_id=1, start=100, end=200, combo=(1, 2), dirty=0, points=None): if points is None: points = [(0xA, 1, 10, -1), (0xA8, 1, 100, 5)] payload = b"".join(struct.pack(" 0 wraps normally self.assertTrue(sweep.dirty) def test_a_reused_id_after_an_outage_does_not_splice_two_sweeps(self): assembler = RfgSweepAssembler(steps=3, step_ns=self.STEP_NS, period_ns=self.PERIOD_NS) self.feed(assembler, 5, [0], 0) self.feed(assembler, 5, [1, 2], 4_920_000_000) # 256 sweep periods later (sweep,) = self.feed(assembler, 6, [0], 4_940_000_000) self.assertTrue(sweep.dirty) def test_unexpected_layout_fails_fast(self): for datagram in (b"\x06", struct.pack("