refactor: implement packet parsing heuristics and introduce device-level state caching to throttle database writes and vitals updates
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
import sys
|
||||
|
||||
filepath = "/home/prathiyuman/Prathiyuman/ContecMonitor/fiveparaminte-main/scratch/raw_contec_stream.bin"
|
||||
|
||||
try:
|
||||
with open(filepath, "rb") as f:
|
||||
f.seek(0, 2)
|
||||
size = f.tell()
|
||||
# Read the last 2000 bytes
|
||||
f.seek(max(0, size - 2000))
|
||||
data = f.read()
|
||||
except Exception as e:
|
||||
print(f"Error reading file: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"Total file size: {size} bytes")
|
||||
print(f"Read last {len(data)} bytes of stream.")
|
||||
|
||||
# Let's search for potential packet headers in the last 2000 bytes.
|
||||
# Typically headers are like: [len_lo] [len_hi] [04/01] [46]
|
||||
# Let's print out the hex around any occurrences of 0x46 or 0x47.
|
||||
print("\nScanning for potential 0x46 or 0x47 headers...")
|
||||
for i in range(len(data) - 4):
|
||||
b0, b1, b2, b3 = data[i], data[i+1], data[i+2], data[i+3]
|
||||
if b3 == 0x46:
|
||||
pkt_len = b0 | (b1 << 8)
|
||||
print(f"Index {i} (absolute {size - 2000 + i}): Header match! Bytes: {b0:02x} {b1:02x} {b2:02x} {b3:02x} -> Length: {pkt_len}, Subtype: {b2}")
|
||||
# print hex representation of next 16 bytes
|
||||
next_bytes = data[i:i+20]
|
||||
print(f" Hex: {next_bytes.hex()}")
|
||||
elif b3 == 0x47:
|
||||
print(f"Index {i} (absolute {size - 2000 + i}): End-marker? Bytes: {b0:02x} {b1:02x} {b2:02x} {b3:02x}")
|
||||
Reference in New Issue
Block a user