printobserver_types/
printer.rs1use serde::{Deserialize, Serialize};
4
5use schemars::JsonSchema;
6
7use crate::reported::Reported;
8use crate::timestamp::Timestamp;
9
10#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
15#[serde(rename_all = "snake_case", deny_unknown_fields)]
16pub enum PrinterState {
17 Operational,
19 Paused,
21 Printing,
23 Cancelling,
25 Error,
27 Offline,
29 Unknown(String),
31}
32
33#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema, Default)]
39#[serde(deny_unknown_fields)]
40pub struct HeaterSnapshot {
41 #[serde(
43 default,
44 skip_serializing_if = "Option::is_none",
45 deserialize_with = "crate::reported::de_heater_actual_c"
46 )]
47 pub actual_c: Option<Reported<f64>>,
48 #[serde(
50 default,
51 skip_serializing_if = "Option::is_none",
52 deserialize_with = "crate::reported::de_heater_target_c"
53 )]
54 pub target_c: Option<Reported<f64>>,
55 #[serde(
57 default,
58 skip_serializing_if = "Option::is_none",
59 deserialize_with = "crate::reported::de_heater_offset_c"
60 )]
61 pub offset_c: Option<Reported<f64>>,
62}
63
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
66#[serde(deny_unknown_fields)]
67pub struct PrinterSnapshot {
68 pub connection: PrinterState,
70 pub tools: Vec<HeaterSnapshot>,
72 #[serde(default, skip_serializing_if = "Option::is_none")]
74 pub bed: Option<HeaterSnapshot>,
75 #[serde(default, skip_serializing_if = "Option::is_none")]
77 pub chamber: Option<HeaterSnapshot>,
78 #[serde(
80 default,
81 skip_serializing_if = "Option::is_none",
82 deserialize_with = "crate::reported::de_feedrate_factor"
83 )]
84 pub feedrate_factor: Option<Reported<f64>>,
85 #[serde(
87 default,
88 skip_serializing_if = "Option::is_none",
89 deserialize_with = "crate::reported::de_flowrate_factor"
90 )]
91 pub flowrate_factor: Option<Reported<f64>>,
92 #[serde(
94 default,
95 skip_serializing_if = "Option::is_none",
96 deserialize_with = "crate::reported::de_fan_percent"
97 )]
98 pub fan_percent: Option<Reported<f64>>,
99 pub observed_at: Timestamp,
101}
102
103#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
108#[serde(deny_unknown_fields)]
109pub struct JobSnapshot {
110 #[serde(default, skip_serializing_if = "Option::is_none")]
112 pub file_name: Option<String>,
113 #[serde(default, skip_serializing_if = "Option::is_none")]
115 pub file_origin: Option<String>,
116 #[serde(default, skip_serializing_if = "Option::is_none")]
118 pub size_bytes: Option<i64>,
119 #[serde(default, skip_serializing_if = "Option::is_none")]
121 pub estimated_print_time_s: Option<i64>,
122 #[serde(
126 default,
127 skip_serializing_if = "Option::is_none",
128 deserialize_with = "crate::reported::de_completion"
129 )]
130 pub completion: Option<Reported<f64>>,
131 #[serde(default, skip_serializing_if = "Option::is_none")]
133 pub print_time_s: Option<i64>,
134 #[serde(default, skip_serializing_if = "Option::is_none")]
136 pub print_time_left_s: Option<i64>,
137 pub state: PrinterState,
139 #[serde(default, skip_serializing_if = "Option::is_none")]
141 pub error: Option<String>,
142}