1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
5#[serde(untagged)]
6#[allow(clippy::large_enum_variant)]
7pub enum Message {
8 Print(Box<Print>),
9 Info(Info),
10 System(System),
11 Unknown(Option<String>),
14
15 Connecting,
16 Connected,
17 Reconnecting,
18 Disconnected,
19}
20
21#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
22pub struct Print {
23 pub print: PrintData,
24}
25
26#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
27pub struct PrintData {
28 pub upload: Option<PrintUpload>,
29 pub nozzle_temper: Option<f64>,
30 pub nozzle_target_temper: Option<i64>,
31 pub bed_temper: Option<f64>,
32 pub bed_target_temper: Option<i64>,
33 pub chamber_temper: Option<i64>,
34 pub mc_print_stage: Option<String>,
35 pub heatbreak_fan_speed: Option<String>,
36 pub cooling_fan_speed: Option<String>,
37 pub big_fan1_speed: Option<String>,
38 pub big_fan2_speed: Option<String>,
39 pub mc_percent: Option<i64>,
40 pub mc_remaining_time: Option<i64>,
41 pub ams_status: Option<i64>,
42 pub ams_rfid_status: Option<i64>,
43 pub hw_switch_state: Option<i64>,
44 pub spd_mag: Option<i64>,
45 pub spd_lvl: Option<i64>,
46 pub print_error: Option<i64>,
47 pub lifecycle: Option<String>,
48 pub wifi_signal: Option<String>,
49 pub gcode_state: Option<String>,
50 pub gcode_file_prepare_percent: Option<String>,
51 pub queue_number: Option<i64>,
52 pub queue_total: Option<i64>,
53 pub queue_est: Option<i64>,
54 pub queue_sts: Option<i64>,
55 pub project_id: Option<String>,
56 pub profile_id: Option<String>,
57 pub task_id: Option<String>,
58 pub subtask_id: Option<String>,
59 pub subtask_name: Option<String>,
60 pub gcode_file: Option<String>,
61 pub stg: Option<Vec<Value>>,
62 pub stg_cur: Option<i64>,
63 pub print_type: Option<String>,
64 pub home_flag: Option<i64>,
65 pub mc_print_line_number: Option<String>,
66 pub mc_print_sub_stage: Option<i64>,
67 pub sdcard: Option<bool>,
68 pub force_upgrade: Option<bool>,
69 pub mess_production_state: Option<String>,
70 pub layer_num: Option<i64>,
71 pub total_layer_num: Option<i64>,
72 pub s_obj: Option<Vec<Value>>,
73 pub fan_gear: Option<i64>,
74 pub hms: Option<Vec<Value>>,
75 pub online: Option<PrintOnline>,
76 pub ams: Option<PrintAms>,
77 pub ipcam: Option<PrintIpcam>,
78 pub vt_tray: Option<PrintVtTray>,
79 pub lights_report: Option<Vec<PrintLightsReport>>,
80 pub upgrade_state: Option<PrintUpgradeState>,
81 pub command: Option<String>,
82 pub msg: Option<i64>,
83 pub sequence_id: Option<String>,
84}
85
86#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
87pub struct PrintUpload {
88 pub status: String,
89 pub progress: i64,
90 pub message: String,
91}
92
93#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
94pub struct PrintOnline {
95 pub ahb: bool,
96 pub rfid: bool,
97 pub version: i64,
98}
99
100#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
101pub struct PrintAms {
102 pub ams: Option<Vec<PrintAmsData>>,
103 pub ams_exist_bits: Option<String>,
104 pub tray_exist_bits: Option<String>,
105 pub tray_is_bbl_bits: Option<String>,
106 pub tray_tar: Option<String>,
107 pub tray_now: Option<String>,
108 pub tray_pre: Option<String>,
109 pub tray_read_done_bits: Option<String>,
110 pub tray_reading_bits: Option<String>,
111 pub version: Option<i64>,
112 pub insert_flag: Option<bool>,
113 pub power_on_flag: Option<bool>,
114}
115
116#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
117pub struct PrintAmsData {
118 pub id: String,
119 pub humidity: String,
120 pub temp: String,
121 pub tray: Vec<PrintTray>,
122}
123
124#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
125pub struct PrintTray {
126 pub id: String,
127 pub remain: Option<i64>,
128 pub k: Option<f64>,
129 pub n: Option<f64>,
130 pub tag_uid: Option<String>,
131 pub tray_id_name: Option<String>,
132 pub tray_info_idx: Option<String>,
133 pub tray_type: Option<String>,
134 pub tray_sub_brands: Option<String>,
135 pub tray_color: Option<String>,
136 pub tray_weight: Option<String>,
137 pub tray_diameter: Option<String>,
138 pub tray_temp: Option<String>,
139 pub tray_time: Option<String>,
140 pub bed_temp_type: Option<String>,
141 pub bed_temp: Option<String>,
142 pub nozzle_temp_max: Option<String>,
143 pub nozzle_temp_min: Option<String>,
144 pub xcam_info: Option<String>,
145 pub tray_uuid: Option<String>,
146}
147
148#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
149pub struct PrintIpcam {
150 pub ipcam_dev: Option<String>,
151 pub ipcam_record: Option<String>,
152 pub timelapse: Option<String>,
153 pub mode_bits: Option<i64>,
154}
155
156#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
157pub struct PrintVtTray {
158 pub id: String,
159 pub tag_uid: String,
160 pub tray_id_name: String,
161 pub tray_info_idx: String,
162 pub tray_type: String,
163 pub tray_sub_brands: String,
164 pub tray_color: String,
165 pub tray_weight: String,
166 pub tray_diameter: String,
167 pub tray_temp: String,
168 pub tray_time: String,
169 pub bed_temp_type: String,
170 pub bed_temp: String,
171 pub nozzle_temp_max: String,
172 pub nozzle_temp_min: String,
173 pub xcam_info: String,
174 pub tray_uuid: String,
175 pub remain: i64,
176 pub k: f64,
177 pub n: i64,
178}
179
180#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
181pub struct PrintLightsReport {
182 pub node: String,
183 pub mode: String,
184}
185
186#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
187pub struct PrintUpgradeState {
188 pub sequence_id: Option<i64>,
189 pub progress: Option<String>,
190 pub status: Option<String>,
191 pub consistency_request: Option<bool>,
192 pub dis_state: Option<i64>,
193 pub err_code: Option<i64>,
194 pub force_upgrade: Option<bool>,
195 pub message: Option<String>,
196 pub module: Option<String>,
197 pub new_version_state: Option<i64>,
198 pub new_ver_list: Option<Vec<Value>>,
199}
200
201#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
202pub struct Info {
203 pub info: InfoData,
204}
205
206#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
207pub struct InfoData {
208 pub command: String,
209 pub sequence_id: String,
210 pub module: Vec<InfoModule>,
211 pub result: String,
212 pub reason: String,
213}
214
215#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
216pub struct InfoModule {
217 pub name: String,
218 pub project_name: String,
219 pub sw_ver: String,
220 pub hw_ver: String,
221 pub sn: String,
222 pub loader_ver: Option<String>,
223 pub ota_ver: Option<String>,
224}
225
226#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
227pub struct System {
228 pub system: SystemData,
229}
230
231#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
232pub struct SystemData {
233 pub command: String,
234 pub sequence_id: String,
235 pub access_code: Option<String>,
236 pub result: String,
237}