From 87c38f717de7b29a17b13e93a503964a424721fe Mon Sep 17 00:00:00 2001 From: Serguey Parkhomovsky Date: Sat, 14 Mar 2026 10:57:26 -0700 Subject: Extract function for prusa status --- src/lib.rs | 13 ++++++++++++- src/main.rs | 9 ++------- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 6c63733..a49aba0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ use serde::Deserialize; #[derive(Debug, Default)] pub enum PrintStatus { #[default] + Unknown, Idle, Printing, Paused, @@ -11,7 +12,6 @@ pub enum PrintStatus { #[derive(Debug, Default)] pub struct PrinterState { - pub name: String, pub bed_temp: f32, pub status: PrintStatus, } @@ -96,3 +96,14 @@ pub enum Printer { serial_number: String, }, } + +pub fn extract_status_from_prusa(status: &PrusaStatus) -> PrinterState { + let print_status = match status.printer.state { + PrusaState::Idle => PrintStatus::Idle, + PrusaState::Printing => PrintStatus::Printing, + PrusaState::Paused => PrintStatus::Paused, + PrusaState::Finished => PrintStatus::Finished, + _ => PrintStatus::Unknown, + }; + PrinterState { bed_temp: status.printer.temp_bed, status: print_status } +} \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 6c353e6..5dc84eb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -36,12 +36,8 @@ async fn main() { .await?; let mut lock = state_clone.lock().await; lock.entry(name.clone()) - .and_modify(|prs| prs.bed_temp = response.printer.temp_bed) - .or_insert_with(|| PrinterState { - name: name.clone(), - bed_temp: response.printer.temp_bed, - ..Default::default() - }); + .and_modify(|prs| *prs = extract_status_from_prusa(&response)) + .or_insert_with(|| { extract_status_from_prusa(&response) } ); Ok(()) } .await; @@ -91,7 +87,6 @@ async fn main() { lock.entry(name.clone()) .and_modify(|prs| prs.bed_temp = msg.print.bed_temper) .or_insert_with(|| PrinterState { - name: name.clone(), bed_temp: msg.print.bed_temper, ..Default::default() }); -- cgit v1.2.3