From a712429466bd05d3eb018c6006f236c59eec4d71 Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Thu, 24 Oct 2024 23:36:25 +0200 Subject: [PATCH] correct median samples --- ambientd.c3 | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/ambientd.c3 b/ambientd.c3 index c9bd470..8d24f80 100644 --- a/ambientd.c3 +++ b/ambientd.c3 @@ -5,8 +5,6 @@ import std::thread; // import some functions from the C standard library extern fn long strtol(char *buffer, char **endptr, int base); -const int MEDIAN_SAMPLES = 4; - const String LUMINANCE_DEV = "/sys/bus/iio/devices/iio:device0/in_illuminance_raw"; const String MAX_BRIGHTNESS_DEV = "/sys/class/backlight/intel_backlight/max_brightness"; const String BRIGHTNESS_DEV = "/sys/class/backlight/intel_backlight/brightness"; @@ -119,9 +117,9 @@ fn int main() thread::exit(1); } - _x = get_luminance_raw()!!; - int[<*>] luminance_samples = {_x!!, _x!!, _x!!, _x!!}; - int idx; + int x = get_luminance_raw() ?? MAX_LUMINANCE; + int[<4>] luminance_samples = x; + usz idx; int user_offset; int brightness_target = min_brightness; int brightness_old = min_brightness; @@ -130,15 +128,15 @@ fn int main() int luminance_median; float luminance_percent; while (1) { - _x = get_luminance_raw(); - if (catch excuse = _x) { - io::eprintfn("Error reading luminance: %s", excuse); + int! tmp = get_luminance_raw(); + if (catch excuse = tmp) { + io::eprintfn("Error reading luminance: %s", excuse); } else { - luminance_samples[idx] = _x; - idx = (idx + 1) % MEDIAN_SAMPLES; + luminance_samples[idx] = tmp; + idx = (idx + 1) % luminance_samples.len; } - luminance_median = luminance_samples.sum() / MEDIAN_SAMPLES; + luminance_median = (float)luminance_samples.sum() / luminance_samples.len; luminance_percent = bezier(clamp(luminance_median/MAX_LUMINANCE, 0.0f, 1.0f)); brightness_old = brightness_target;