]> sigrok.org Git - libsigrok.git/commit
analog.c: rephrase analog feed to float conversion routine
authorGerhard Sittig <redacted>
Sun, 13 Sep 2020 06:34:45 +0000 (08:34 +0200)
committerGerhard Sittig <redacted>
Fri, 18 Sep 2020 14:42:37 +0000 (16:42 +0200)
commite62b284c1c36ee21cc35a6c2974db2d8233c8769
treee14c17b3781245f8b203c60323252bbcc19b82c3
parente4bcc63de6cb4c9e64649f0f69088f04ef4ae524
analog.c: rephrase analog feed to float conversion routine

Rephrase the sr_analog_to_float() routine to further reduce redundancy.

Check early for a match of the input data and result format, to grab the
raw data without conversion in that case. Handle optional scale/offset
calculation in that fast code path, too.

Unify the instructions which convert input data from either integer or
floating point presentations to the result format. Use common stream
readers to retrieve input data in several formats, which eliminates
local conversion buffers. Move common sub-expressions (scale/offset) out
of loops. Run more calculations on double precision data before results
get trimmed to single precision.

Add and extend comments to improve future maintenance. Include (terse)
details of unsupported input data presentations in error messages.

This implementation was neither tuned nor measured for performance.
There still is a lot of redundancy among the branches which handle a
specific input data type. Rephrasing that approach interacts with the
yet to be done performance tuning, thus needs to get addressed later.
The current phrases' verbosity is believed to improve readability.
src/analog.c