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,51 @@
|
||||
import struct
|
||||
|
||||
def search_scaled_values(p: bytes, val_sys: int, val_dia: int, val_map: int):
|
||||
# We will search for scaled values: val, val * 10, val * 100
|
||||
targets = [
|
||||
(val_sys, "Sys"), (val_sys * 10, "Sys*10"), (val_sys * 100, "Sys*100"),
|
||||
(val_dia, "Dia"), (val_dia * 10, "Dia*10"), (val_dia * 100, "Dia*100"),
|
||||
(val_map, "Map"), (val_map * 10, "Map*10"), (val_map * 100, "Map*100")
|
||||
]
|
||||
|
||||
for offset in range(len(p) - 1):
|
||||
v = struct.unpack_from('<H', p, offset)[0]
|
||||
for target_val, name in targets:
|
||||
if v == target_val:
|
||||
print(f" Found {name} ({target_val}) at offset {offset}")
|
||||
|
||||
with open("/home/prathiyuman/Prathiyuman/ContecMonitor/fiveparaminte-main/scratch/raw_contec_stream.bin", "rb") as f:
|
||||
stream = f.read()
|
||||
|
||||
consumed = 0
|
||||
packets = []
|
||||
while consumed < len(stream) - 4:
|
||||
b0, b1, b2, b3 = stream[consumed:consumed+4]
|
||||
if (b2 == 0x04 or b2 == 0x01) and b3 == 0x46:
|
||||
pkt_len = b0 | (b1 << 8)
|
||||
packets.append(stream[consumed:consumed+pkt_len])
|
||||
consumed += pkt_len
|
||||
else:
|
||||
consumed += 1
|
||||
|
||||
print(f"Scanning {len(packets)} packets for scaled BP (108, 53, 75)...")
|
||||
for idx, p in enumerate(packets):
|
||||
l = len(p)
|
||||
subtype = p[6] if l > 6 else -1
|
||||
|
||||
# We want to print only if something is found
|
||||
# Redirect output internally
|
||||
import io
|
||||
import sys
|
||||
old_stdout = sys.stdout
|
||||
new_stdout = io.StringIO()
|
||||
sys.stdout = new_stdout
|
||||
|
||||
search_scaled_values(p, 108, 53, 75)
|
||||
|
||||
output = new_stdout.getvalue()
|
||||
sys.stdout = old_stdout
|
||||
|
||||
if output.strip():
|
||||
print(f"Packet #{idx} (Len={l}, Subtype={subtype}):")
|
||||
print(output, end="")
|
||||
Reference in New Issue
Block a user