]> sigrok.org Git - libsigrokdecode.git/commit
i2c: concentrate sample number and value getting in main loop
authorGerhard Sittig <redacted>
Mon, 17 Jul 2023 18:01:07 +0000 (20:01 +0200)
committerGerhard Sittig <redacted>
Tue, 18 Jul 2023 19:28:44 +0000 (21:28 +0200)
commit0fbf152810a812baee1d7e69d4621bb8445f9e7e
tree99f41749eee27f80a55b342d6c1ab0e126d6648f
parent35753ccad522da1a1241beec0736aa7049a290bb
i2c: concentrate sample number and value getting in main loop

It's unfortunate how the symbol / bit value handlers of the I2C decoder
keep redundantly accessing the .samplenum property. Ideally they should
just get an ss, es, value tuple, while the determination of these params
should be kept in the .decode() main loop.

Prepare the internal implementation to that approach, but enforce an
absolutely backwards compatible behaviour for now. This was verified by
the test suite. The data bit handler still keeps updating previous bits'
end positions when another bit is seen. Which assumes back to back bits
which strictly speaking does not match the protocol's definition. The
unfortunate application of the second last bit time's width to the last
bit time and the ACK slot is kept as well. And the code path needed to
be kept within the bit handler, because the second last bit's width only
becomes available when the last bit _was_ handled. Which means that the
main loop cannot provide a useful es value which matches the previous
implementation's behaviour.
decoders/i2c/pd.py