diff options
| author | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-21 17:33:46 -0700 |
|---|---|---|
| committer | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-21 17:33:46 -0700 |
| commit | e008298187c3dc57f37e9511763e9e35d7dca80b (patch) | |
| tree | 359ad1081a285cd94dad1709fcc341d468000107 /src | |
| parent | 12fe7e6d05e7fdcb0d9925e55a5f0fed17718341 (diff) | |
Separate some fields into prusa and bambu structs
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 58 |
1 files changed, 38 insertions, 20 deletions
@@ -20,22 +20,32 @@ pub trait UpdateFrom<T> { } #[derive(Debug, Default, Serialize, Clone)] +pub struct BambuPrinterState { + pub layer_num: u32, + pub total_layer_num: u32, + pub print_speed: Option<String>, +} + +#[derive(Debug, Default, Serialize, Clone)] +pub struct PrusaPrinterState { + pub flow: u32, + pub speed: u32, + pub fan_hotend: u32, + pub fan_print: u32, + pub time_printing: u32, +} + +#[derive(Debug, Default, Serialize, Clone)] pub struct PrinterState { pub status: PrintStatus, pub bed_temp: f32, pub target_bed_temp: f32, pub nozzle_temp: f32, pub target_nozzle_temp: f32, - pub flow: u32, - pub speed: u32, - pub fan_hotend: u32, - pub fan_print: u32, pub progress: f32, pub time_remaining: u32, - pub time_printing: u32, - pub layer_num: u32, - pub total_layer_num: u32, - pub print_speed: Option<String>, + pub prusa: Option<PrusaPrinterState>, + pub bambu: Option<BambuPrinterState>, } #[derive(Debug, Deserialize)] @@ -105,14 +115,16 @@ impl UpdateFrom<PrusaStatus> for PrinterState { self.target_bed_temp = p.target_bed; self.nozzle_temp = p.temp_nozzle; self.target_nozzle_temp = p.target_nozzle; - self.flow = p.flow; - self.speed = p.speed; - self.fan_hotend = p.fan_hotend; - self.fan_print = p.fan_print; + self.prusa = Some(PrusaPrinterState { + flow: p.flow, + speed: p.speed, + fan_hotend: p.fan_hotend, + fan_print: p.fan_print, + time_printing: status.job.as_ref().map_or(0, |j| j.time_printing), + }); if let Some(job) = &status.job { self.progress = job.progress; self.time_remaining = job.time_remaining; - self.time_printing = job.time_printing; } } } @@ -155,15 +167,21 @@ impl UpdateFrom<BambuStatus> for PrinterState { self.progress = v as f32; } if let Some(v) = print.mc_remaining_time { - self.time_remaining = v; - } - if let Some(v) = print.layer_num { - self.layer_num = v; + // Bambu remaining time is in minutes + self.time_remaining = v * 60; } - if let Some(v) = print.total_layer_num { - self.total_layer_num = v; + if print.layer_num.is_some() || print.total_layer_num.is_some() || print.print_speed.is_some() { + let bambu = self.bambu.get_or_insert_with(BambuPrinterState::default); + if let Some(v) = print.layer_num { + bambu.layer_num = v; + } + if let Some(v) = print.total_layer_num { + bambu.total_layer_num = v; + } + if print.print_speed.is_some() { + bambu.print_speed = print.print_speed.clone(); + } } - self.print_speed = print.print_speed.clone(); if let Some(gcode_state) = &print.gcode_state { self.status = match gcode_state { BambuState::Prepare => PrintStatus::Prepare, |
