Fix some state bugs which caused fan pulsing

This commit is contained in:
NGnius (Graham) 2022-09-02 21:08:03 -04:00
parent 9408c16461
commit 603da6e564
2 changed files with 14 additions and 2 deletions

2
backend-rs/Cargo.lock generated
View file

@ -106,7 +106,7 @@ dependencies = [
[[package]] [[package]]
name = "fantastic-rs" name = "fantastic-rs"
version = "0.3.1" version = "0.3.3"
dependencies = [ dependencies = [
"log", "log",
"serde", "serde",

View file

@ -56,9 +56,11 @@ impl ControlRuntime {
continue; continue;
} }
}; };
if settings.enable {
Self::on_set_enable(&settings, &state); Self::on_set_enable(&settings, &state);
} }
} }
}
start_time = Instant::now(); start_time = Instant::now();
{ // save to file { // save to file
let state = match runtime_state.read() { let state = match runtime_state.read() {
@ -82,6 +84,15 @@ impl ControlRuntime {
log::error!("SettingsJson.save({}) error: {}", settings_path(&state.home).display(), e); log::error!("SettingsJson.save({}) error: {}", settings_path(&state.home).display(), e);
} }
Self::on_set_enable(&settings, &state); Self::on_set_enable(&settings, &state);
drop(state);
let mut state = match runtime_state.write() {
Ok(x) => x,
Err(e) => {
log::error!("runtime failed to acquire state write lock: {}", e);
continue;
}
};
state.dirty = false;
} }
} }
{ // fan control { // fan control
@ -200,6 +211,7 @@ impl ControlRuntime {
else: else:
return 0.5 return 0.5
*/ */
// step fan, what are you doing?
if let Some(index) = index { if let Some(index) = index {
settings.curve[index].y settings.curve[index].y
} else { } else {