diff options
| author | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-14 10:57:26 -0700 |
|---|---|---|
| committer | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-14 10:57:26 -0700 |
| commit | 87c38f717de7b29a17b13e93a503964a424721fe (patch) | |
| tree | 9f5eeaf630b3136c52244af5aa608d311b3ded41 /src | |
| parent | 79b4c239b61f2b130f8876eaba7a20fdf43a1a44 (diff) | |
Extract function for prusa status
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 13 | ||||
| -rw-r--r-- | src/main.rs | 9 |
2 files changed, 14 insertions, 8 deletions
@@ -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() }); |
