Skip to main content

bambulab/
message.rs

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    /// The message could not be parsed. The `Option<String>` contains the raw message.
12    /// If the message could not be parsed as a string, the `Option` will be `None`.
13    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}