import struct def read_u16_le(data: bytes, offset: int) -> int: if offset + 2 > len(data): return None return struct.unpack_from(' 8192: consumed += 1 else: consumed += pkt_len else: consumed += 1 print(f"Found {len(packets)} 45-byte packets:") seen_timestamps = set() for p in packets: # Decode timestamp year = read_u16_le(p, 8) month = p[10] day = p[11] hour = p[12] minute = p[13] second = p[14] ts_str = f"{year:04d}-{month:02d}-{day:02d} {hour:02d}:{minute:02d}:{second:02d}" if ts_str in seen_timestamps: continue seen_timestamps.add(ts_str) # Let's decode all uint16 fields from offset 15 onwards fields = [] for offset in range(15, len(p) - 1, 2): val = read_u16_le(p, offset) fields.append(f"off{offset}:{val}") print(f"Timestamp: {ts_str} | Payload: {p[15:].hex()}") print(" Decoded uint16s: " + ", ".join(fields))