]> sigrok.org Git - libsigrok.git/commit
uni-t-ut32x: rephrase the receive buffer and packets relation
authorGerhard Sittig <redacted>
Thu, 5 Oct 2017 23:38:26 +0000 (01:38 +0200)
committerUwe Hermann <redacted>
Sun, 13 Jan 2019 18:34:10 +0000 (19:34 +0100)
commitf0e6b41f7a11daaef1ed0783c25768ad90b1a765
treeb2fe722f8f5110378eb910bb3a33f9ceee09344d
parenta0ba75bda2d1a8d3502f365a2a2a7461a68149fc
uni-t-ut32x: rephrase the receive buffer and packets relation

The previous implementation assumed that a receive data chunk ends
exactly with a sensor packet's end. Yet the buffer had 32 bytes while
the packets have 19 bytes.

Separate the data reception from the packet processing. Collect whatever
chunks the USB connection provides, and scan the resulting buffer for
packets. Cope with either incomplete or corrupt or misaligned packets as
well as with multiple packets in receive chunks. The latter might happen
upon initial synchronization, when a device already sends data or the
serial port buffered previously communicated data.

In the regular case, the computer will process so fast that each single
character will be handled individually. We don't mind. The frequency is
some 60 times per second, and the data volume is 19 bytes. The software
works for the regular case, and synchronizes fast at startup or after
comm errors.
src/hardware/uni-t-ut32x/protocol.c