34df9ec5fa
SESSION_RESET (41 03) is sent before each POLL frame to wake monitoring units. The ETX lookahead in parse_bw only checked for ACK+STX directly after ETX, so when 41 03 followed a frame's ETX, the check failed and the ETX was swallowed into the body as a payload byte — giving a 19-byte body instead of 17 for POLL frames and failing checksum validation. Fix: scan past any SESSION_RESET (41 03) sequences when looking for the next frame start, so the real ACK+STX boundary is found correctly. Also adds SUM8 checksum validation to parse_s3, which previously left checksum_valid=None for all S3 frames. https://claude.ai/code/session_014NczSHUz9uTzCAf4cVASTJ