The problem I started with
I explored diagnostic software to understand when a response contains usable information. The important failure was a short frame borrowing bytes from the next response and producing a believable RPM value.
How I approached it
I extracted the existing Java conversion module and gave it synthetic responses. I checked each response boundary before converting its bytes, then tested whether a complete response could still be read after an incomplete one.
- Receive an individual synthetic response
- Preserve its frame boundary and validate every byte
- Convert supported fields or return unresolved
- Read a complete response and inspect recovery
What is implemented
The public Java module retains seven existing conversion methods. The repair isolates response lines, validates exact hexadecimal byte tokens, checks diagnostic-code payload lengths and bounds response size. The demonstration and assertion harness are new.
What the evidence shows
Seventeen Java assertions pass. Before the correction, a truncated frame followed by a different response produced 1680.25 RPM. The corrected parser returns unresolved for that input and reads the next complete test frame as 2048 RPM.
What remains open
All input is synthetic and local. CAN framing, multiple ECU arbitration, transport and physical diagnosis are outside this parser. The result demonstrates a parsing boundary rather than a tested vehicle application.
The next research step
Expand the supported protocol only against documented frame contracts and independent reference cases, keeping transport, decoding and interpretation separately testable.
Inspect and reproduce
The linked package contains its source map, setup instructions and tests. Public examples are designed for local inspection. No production account, paid model call or private dataset is required for their documented offline checks.
Open the implementation