summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib.rs13
-rw-r--r--src/main.rs9
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()
});