sae_j1850_vpw: rewrite decoder to improve usability and maintenance
commitdf3a4a3bd1763324765f53932d878525a4a20102
authorGerhard Sittig <gerhard.sittig@gmx.net>
Sun, 30 Jul 2023 16:01:29 +0000 (30 18:01 +0200)
committerGerhard Sittig <gerhard.sittig@gmx.net>
Sun, 30 Jul 2023 20:44:22 +0000 (30 22:44 +0200)
treea7d6dd4371e7c5bef79159248976e2ed0e76fbf0
parentbb5af7af06b8fb1b37a88a03a94db3e35a7d15de
sae_j1850_vpw: rewrite decoder to improve usability and maintenance

The previous implementation of the SAE J1850 (VPW) decoder dumped bytes
on one row and added another row with textual labels what those upper
row bytes would mean. That allowed manual inspection at a rather low
level of abstraction, but is not idiomatic and reduces usability of the
decoder.

Rewrite the decoder to become more idiomatic, and to prepare future
inspection of more upper layers. Concentrate all timestamp gathering in
.decode(), use PD API v3 for the IFS timeout as well, run handlers for
the lowest level symbols. Pass accumulated protocol bytes to a fields
handler, flush accumulated details when EOF is seen. Prepare validity
checks (checksum verification), and prepare to handle data bytes when
all header fields were seen and validity was checked. Emit annotations
in proper classes to improve usability, start emitting warnings. Force
re-synchronization when input stream conditions are not handled.
decoders/sae_j1850_vpw/pd.py