X-Git-Url: http://git.euphorik.ch/?a=blobdiff_plain;f=src%2Fmain_loop.rs;h=a11c36b6f608b77762dd66a3d5fa2dccd86d5445;hb=HEAD;hp=bc2f6eeecec449143af38fddfe64d7f746c3f54b;hpb=f23ee416738146f3f9b005ac759b9dd68574ddfa;p=temp2RGB.git diff --git a/src/main_loop.rs b/src/main_loop.rs index bc2f6ee..a11c36b 100644 --- a/src/main_loop.rs +++ b/src/main_loop.rs @@ -20,7 +20,21 @@ pub fn main_loop(completed: Arc) { 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 = match settings.machine_name { @@ -63,14 +77,28 @@ pub fn main_loop(completed: Arc) { 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;