Add a color (2 colors can be now defined for a machine).
[temp2RGB.git] / src / main_loop.rs
index bc2f6ee..a11c36b 100644 (file)
@@ -20,7 +20,21 @@ pub fn main_loop(completed: Arc<AtomicBool>) {
     winring0::init();
 
     let sleep = timer::Sleep::new();
-    let settings = settings::Settings::read(consts::FILE_CONF).expect("Cannot load settings");
+
+    let file_conf_path = if cfg!(debug_assertions) {
+        String::from(consts::FILE_CONF)
+    } else {
+        String::from(
+            dirs::config_dir()
+                .unwrap()
+                .join(consts::SERVICE_NAME)
+                .join(consts::FILE_CONF)
+                .to_str()
+                .unwrap(),
+        )
+    };
+
+    let settings = settings::Settings::read(&file_conf_path).expect("Cannot load settings");
     println!("Settings: {settings:?}");
 
     let mut machine: Box<dyn machine::Machine> = match settings.machine_name {
@@ -63,14 +77,28 @@ pub fn main_loop(completed: Arc<AtomicBool>) {
             1f32,
         ); // Between 0 (cold) and 1 (hot).
 
-        let color =
-            rgb::linear_interpolation(settings.cold_color, settings.hot_color, normalized_temp);
+        let color_1 =
+            rgb::linear_interpolation(settings.cold_color_1, settings.hot_color_1, normalized_temp);
+
+        let color_2 = match (settings.cold_color_2, settings.hot_color_2) {
+            (Some(cold_color), Some(hot_color)) => Some(rgb::linear_interpolation(
+                cold_color,
+                hot_color,
+                normalized_temp,
+            )),
+            _ => None,
+        };
 
         // println!("normalized_temp: {normalized_temp}");
 
         if tick % (consts::FREQ_TEMP_POLLING / consts::FREQ_REFRESHING_RGB) as i64 == 0 {
-            println!("Update RGB: {color:?}, temp: {mean_temp}");
-            machine.set_color(&color);
+            println!("Update RGB: {color_1:?}/{color_2:?}, temp: {mean_temp}");
+            machine.set_color_1(&color_1);
+            if color_2.is_some() {
+                machine.set_color_2(&color_2.unwrap());
+            } else {
+                machine.set_color_2(&color_1);
+            }
         }
 
         let elapsed = time::Instant::now() - time_beginning_loop;