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 {
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;