diff options
| author | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-19 17:40:46 -0700 |
|---|---|---|
| committer | Serguey Parkhomovsky <xindigo@gmail.com> | 2026-03-19 17:40:46 -0700 |
| commit | c9dd306e8661d17443d8fe69d857750f25ac8942 (patch) | |
| tree | 14fe74b5fe39b6eed5779958f2a4211fe659cabd /src | |
| parent | 5fcb3009524f415d56e97edbb33f6c57635a51bb (diff) | |
Fill more fields
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 60 |
1 files changed, 52 insertions, 8 deletions
@@ -8,12 +8,32 @@ pub enum PrintStatus { Printing, Paused, Finished, + Stopped, + Error, + Attention, + Busy, } #[derive(Debug, Default, Serialize, Clone)] pub struct PrinterState { - pub bed_temp: f32, pub status: PrintStatus, + pub bed_temp: f32, + pub target_bed_temp: f32, + pub nozzle_temp: f32, + pub target_nozzle_temp: f32, + pub axis_x: f32, + pub axis_y: f32, + pub axis_z: 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>, } #[derive(Debug, Deserialize)] @@ -41,7 +61,6 @@ enum BambuState { #[derive(Debug, Deserialize)] struct PrusaJob { - id: u32, progress: f32, time_remaining: u32, time_printing: u32, @@ -122,23 +141,48 @@ pub fn extract_status_from_prusa(status: &PrusaStatus, state: &mut PrinterState) PrusaState::Printing => PrintStatus::Printing, PrusaState::Paused => PrintStatus::Paused, PrusaState::Finished => PrintStatus::Finished, - _ => PrintStatus::Unknown, + PrusaState::Stopped => PrintStatus::Stopped, + PrusaState::Error => PrintStatus::Error, + PrusaState::Attention => PrintStatus::Attention, + PrusaState::Busy => PrintStatus::Busy, }; - state.bed_temp = status.printer.temp_bed; + let p = &status.printer; + state.bed_temp = p.temp_bed; + state.target_bed_temp = p.target_bed; + state.nozzle_temp = p.temp_nozzle; + state.target_nozzle_temp = p.target_nozzle; + state.axis_x = p.axis_x; + state.axis_y = p.axis_y; + state.axis_z = p.axis_z; + state.flow = p.flow; + state.speed = p.speed; + state.fan_hotend = p.fan_hotend; + state.fan_print = p.fan_print; + if let Some(job) = &status.job { + state.progress = job.progress; + state.time_remaining = job.time_remaining; + state.time_printing = job.time_printing; + } } pub fn extract_status_from_bambu(status: &BambuStatus, state: &mut PrinterState) { if let Some(print) = &status.print { - if let Some(bed_temper) = print.bed_temper { - state.bed_temp = bed_temper; - } + if let Some(v) = print.bed_temper { state.bed_temp = v; } + if let Some(v) = print.bed_target_temper { state.target_bed_temp = v; } + if let Some(v) = print.nozzle_temper { state.nozzle_temp = v; } + if let Some(v) = print.nozzle_target_temper { state.target_nozzle_temp = v; } + if let Some(v) = print.mc_percent { state.progress = v as f32; } + if let Some(v) = print.mc_remaining_time { state.time_remaining = v; } + if let Some(v) = print.layer_num { state.layer_num = v; } + if let Some(v) = print.total_layer_num { state.total_layer_num = v; } + if let Some(v) = &print.print_speed { state.print_speed = Some(v.clone()); } if let Some(gcode_state) = &print.gcode_state { state.status = match gcode_state { BambuState::Idle => PrintStatus::Idle, BambuState::Running => PrintStatus::Printing, BambuState::Pause => PrintStatus::Paused, BambuState::Finish => PrintStatus::Finished, - _ => PrintStatus::Unknown, + BambuState::Failed => PrintStatus::Error, }; } } |
