]> sigrok.org Git - libsigrok.git/commitdiff
std: epsilon for std_gvar_min_max_step_thresholds() upper limit
authorGerhard Sittig <redacted>
Sun, 23 Jan 2022 16:49:33 +0000 (17:49 +0100)
committerGerhard Sittig <redacted>
Sun, 6 Feb 2022 17:53:53 +0000 (18:53 +0100)
Adjust the std_gvar_min_max_step_thresholds() routine which iterates
over a range of threshold voltages that are specified by their lower and
upper bounds and a step (stride). Allow for an epsilon in the loop's end
condition to span the full driver's announced set of values and not stop
prematurely.

The issue was observed with Kingst LA2016 which announces a range from
0.4V to 4.0V in steps of 0.1V, while the config list ends at the 3.9V
value and would have omitted the 4.0V upper bound.

src/std.c

index 81f269fa92dc26ee73b9ca90081dc27039d010d9..2c4546d63f22f32c5d11d3ee91fe6ac5493ea55b 100644 (file)
--- a/src/std.c
+++ b/src/std.c
@@ -687,7 +687,7 @@ SR_PRIV GVariant *std_gvar_min_max_step_thresholds(const double min, const doubl
 
        g_variant_builder_init(&gvb, G_VARIANT_TYPE_ARRAY);
 
-       for (d = min; d <= max; d += step) {
+       for (d = min; d <= max + step / 2.0; d += step) {
                /*
                 * We will never see exactly 0.0 because of the error we're
                 * accumulating, so catch the "zero" value and force it to be 0.