1use serde;
2use serde::{Serialize, Deserialize};
3use serde_repr::{Deserialize_repr, Serialize_repr};
4use crate::structures::none_function;
5
6
7
8#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct If2 {
11 #[serde(skip_serializing_if = "Option::is_none")]
12 #[serde(default = "none_function")]
13 pub sync: Option<Sync>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 #[serde(default = "none_function")]
16 pub nodes: Option<Nodes>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 #[serde(default = "none_function")]
19 pub live: Option<Live>,
20 #[serde(skip_serializing_if = "Option::is_none")]
21 #[serde(default = "none_function")]
22 pub va: Option<Va>,
23 #[serde(skip_serializing_if = "Option::is_none")]
24 #[serde(default = "none_function")]
25 pub mqtt: Option<Mqtt>,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 #[serde(default = "none_function")]
28 pub hue: Option<Hue>,
29 #[serde(skip_serializing_if = "Option::is_none")]
30 #[serde(default = "none_function")]
31 pub ntp: Option<Ntp>,
32}
33
34#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
35#[serde(rename_all = "camelCase")]
36pub struct Sync {
37 #[serde(skip_serializing_if = "Option::is_none")]
39 #[serde(default = "none_function")]
40 pub port0: Option<u16>,
41
42 #[serde(skip_serializing_if = "Option::is_none")]
44 #[serde(default = "none_function")]
45 pub port1: Option<u16>,
46
47 #[serde(skip_serializing_if = "Option::is_none")]
49 #[serde(default = "none_function")]
50 pub recv: Option<Recv>,
51
52 #[serde(skip_serializing_if = "Option::is_none")]
54 #[serde(default = "none_function")]
55 pub send: Option<Send>,
56}
57
58#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
59#[serde(rename_all = "camelCase")]
60pub struct Recv {
61
62 #[serde(skip_serializing_if = "Option::is_none")]
64 #[serde(default = "none_function")]
65 pub bri: Option<bool>,
66
67 #[serde(skip_serializing_if = "Option::is_none")]
69 #[serde(default = "none_function")]
70 pub col: Option<bool>,
71
72 #[serde(skip_serializing_if = "Option::is_none")]
74 #[serde(default = "none_function")]
75 pub fx: Option<bool>,
76
77 #[serde(skip_serializing_if = "Option::is_none")]
79 #[serde(default = "none_function")]
80 pub grp: Option<u8>,
81
82 #[serde(skip_serializing_if = "Option::is_none")]
84 #[serde(default = "none_function")]
85 pub seg: Option<bool>,
86
87 #[serde(skip_serializing_if = "Option::is_none")]
89 #[serde(default = "none_function")]
90 pub sb: Option<bool>,
91}
92
93#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
94#[serde(rename_all = "camelCase")]
95pub struct Send {
96 #[serde(skip_serializing_if = "Option::is_none")]
98 #[serde(default = "none_function")]
99 pub dir: Option<bool>,
100
101 #[serde(skip_serializing_if = "Option::is_none")]
103 #[serde(default = "none_function")]
104 pub btn: Option<bool>,
105
106 #[serde(skip_serializing_if = "Option::is_none")]
108 #[serde(default = "none_function")]
109 pub va: Option<bool>,
110
111 #[serde(skip_serializing_if = "Option::is_none")]
113 #[serde(default = "none_function")]
114 pub hue: Option<bool>,
115
116 #[serde(skip_serializing_if = "Option::is_none")]
118 #[serde(default = "none_function")]
119 #[serde(rename = "macro")]
120 pub macro_field: Option<bool>,
121
122 #[serde(skip_serializing_if = "Option::is_none")]
124 #[serde(default = "none_function")]
125 pub grp: Option<u8>,
126
127 #[serde(skip_serializing_if = "Option::is_none")]
129 #[serde(default = "none_function")]
130 pub ret: Option<u8>,
131}
132
133#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
134#[serde(rename_all = "camelCase")]
135pub struct Nodes {
136 #[serde(skip_serializing_if = "Option::is_none")]
138 #[serde(default = "none_function")]
139 pub list: Option<bool>,
140
141 #[serde(skip_serializing_if = "Option::is_none")]
143 #[serde(default = "none_function")]
144 pub bcast: Option<bool>,
145}
146
147#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
148#[serde(rename_all = "camelCase")]
149pub struct Live {
150 #[serde(skip_serializing_if = "Option::is_none")]
152 #[serde(default = "none_function")]
153 pub en: Option<bool>,
154
155 #[serde(skip_serializing_if = "Option::is_none")]
157 #[serde(default = "none_function")]
158 pub mso: Option<bool>,
159
160 #[serde(skip_serializing_if = "Option::is_none")]
162 #[serde(default = "none_function")]
163 pub port: Option<u16>,
164
165 #[serde(skip_serializing_if = "Option::is_none")]
167 #[serde(default = "none_function")]
168 pub mc: Option<bool>,
169
170 #[serde(skip_serializing_if = "Option::is_none")]
172 #[serde(default = "none_function")]
173 pub dmx: Option<LiveDmx>,
174
175 #[serde(skip_serializing_if = "Option::is_none")]
177 #[serde(default = "none_function")]
178 pub timeout: Option<u16>,
179
180 #[serde(skip_serializing_if = "Option::is_none")]
182 #[serde(default = "none_function")]
183 pub maxbri: Option<bool>,
184
185 #[serde(skip_serializing_if = "Option::is_none")]
187 #[serde(default = "none_function")]
188 #[serde(rename = "no-gc")]
189 pub no_gc: Option<bool>,
190
191 #[serde(skip_serializing_if = "Option::is_none")]
193 #[serde(default = "none_function")]
194 pub offset: Option<u32>,
195}
196
197
198#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
200#[serde(rename_all = "camelCase")]
201pub struct LiveDmx {
202 #[serde(skip_serializing_if = "Option::is_none")]
204 #[serde(default = "none_function")]
205 pub uni: Option<u16>,
206
207 #[serde(skip_serializing_if = "Option::is_none")]
209 #[serde(default = "none_function")]
210 pub seqskip: Option<bool>,
211
212 #[serde(skip_serializing_if = "Option::is_none")]
214 #[serde(default = "none_function")]
215 pub e131prio: Option<u8>,
216
217 #[serde(skip_serializing_if = "Option::is_none")]
219 #[serde(default = "none_function")]
220 pub addr: Option<u16>,
221
222 #[serde(skip_serializing_if = "Option::is_none")]
224 #[serde(default = "none_function")]
225 pub dss: Option<u16>,
226
227 #[serde(skip_serializing_if = "Option::is_none")]
229 #[serde(default = "none_function")]
230 pub mode: Option<DmxMode>,
231}
232
233#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
234#[serde(rename_all = "camelCase")]
235pub struct Va {
236 #[serde(skip_serializing_if = "Option::is_none")]
238 #[serde(default = "none_function")]
239 pub alexa: Option<bool>,
240
241 #[serde(skip_serializing_if = "Option::is_none")]
243 #[serde(default = "none_function")]
244 pub macros: Option<[u8; 2]>,
245
246 #[serde(skip_serializing_if = "Option::is_none")]
248 #[serde(default = "none_function")]
249 pub p: Option<u8>,
250}
251
252#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
253#[serde(rename_all = "camelCase")]
254pub struct Mqtt {
255 #[serde(skip_serializing_if = "Option::is_none")]
257 #[serde(default = "none_function")]
258 pub en: Option<bool>,
259
260 #[serde(skip_serializing_if = "Option::is_none")]
262 #[serde(default = "none_function")]
263 pub broker: Option<String>,
264
265 #[serde(skip_serializing_if = "Option::is_none")]
267 #[serde(default = "none_function")]
268 pub port: Option<u16>,
269
270 #[serde(skip_serializing_if = "Option::is_none")]
272 #[serde(default = "none_function")]
273 pub user: Option<String>,
274
275 #[serde(skip_serializing_if = "Option::is_none")]
277 #[serde(default = "none_function")]
278 pub pskl: Option<u8>,
279
280 #[serde(skip_serializing_if = "Option::is_none")]
282 #[serde(default = "none_function")]
283 pub cid: Option<String>,
284
285 #[serde(skip_serializing_if = "Option::is_none")]
287 #[serde(default = "none_function")]
288 pub rtn: Option<bool>,
289
290 #[serde(skip_serializing_if = "Option::is_none")]
292 #[serde(default = "none_function")]
293 pub topics: Option<Topics>,
294}
295
296#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
297#[serde(rename_all = "camelCase")]
298pub struct Topics {
299 #[serde(skip_serializing_if = "Option::is_none")]
301 #[serde(default = "none_function")]
302 pub device: Option<String>,
303
304 #[serde(skip_serializing_if = "Option::is_none")]
306 #[serde(default = "none_function")]
307 pub group: Option<String>,
308}
309
310#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
311#[serde(rename_all = "camelCase")]
312pub struct Hue {
313 #[serde(skip_serializing_if = "Option::is_none")]
315 #[serde(default = "none_function")]
316 pub en: Option<bool>,
317
318 #[serde(skip_serializing_if = "Option::is_none")]
320 #[serde(default = "none_function")]
321 pub id: Option<u8>,
322
323 #[serde(skip_serializing_if = "Option::is_none")]
325 #[serde(default = "none_function")]
326 pub iv: Option<u16>,
327
328 #[serde(skip_serializing_if = "Option::is_none")]
330 #[serde(default = "none_function")]
331 pub recv: Option<Recv2>,
332
333 #[serde(skip_serializing_if = "Option::is_none")]
335 #[serde(default = "none_function")]
336 pub ip: Option<[u8; 4]>,
337}
338
339#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
340#[serde(rename_all = "camelCase")]
341pub struct Recv2 {
342 #[serde(skip_serializing_if = "Option::is_none")]
344 #[serde(default = "none_function")]
345 pub on: Option<bool>,
346
347 #[serde(skip_serializing_if = "Option::is_none")]
349 #[serde(default = "none_function")]
350 pub bri: Option<bool>,
351
352 #[serde(skip_serializing_if = "Option::is_none")]
354 #[serde(default = "none_function")]
355 pub col: Option<bool>,
356}
357
358#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
359#[serde(rename_all = "camelCase")]
360pub struct Ntp {
361 #[serde(skip_serializing_if = "Option::is_none")]
363 #[serde(default = "none_function")]
364 pub en: Option<bool>,
365
366 #[serde(skip_serializing_if = "Option::is_none")]
368 #[serde(default = "none_function")]
369 pub host: Option<String>,
370
371 #[serde(skip_serializing_if = "Option::is_none")]
373 #[serde(default = "none_function")]
374 pub tz: Option<TimeZoneId>,
375
376 #[serde(skip_serializing_if = "Option::is_none")]
378 #[serde(default = "none_function")]
379 pub offset: Option<u32>,
380
381 #[serde(skip_serializing_if = "Option::is_none")]
383 #[serde(default = "none_function")]
384 pub ampm: Option<bool>,
385
386 #[serde(skip_serializing_if = "Option::is_none")]
388 #[serde(default = "none_function")]
389 pub ln: Option<f64>,
390
391 #[serde(skip_serializing_if = "Option::is_none")]
393 #[serde(default = "none_function")]
394 pub lt: Option<f64>,
395}
396
397
398#[allow(non_camel_case_types)]
400#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug, Clone)]
401#[repr(u8)]
402pub enum DmxMode {
403 DMX_MODE_DISABLED = 0,
405 DMX_MODE_SINGLE_RGB = 1,
407 DMX_MODE_SINGLE_DRGB = 2,
409 DMX_MODE_EFFECT = 3,
411 DMX_MODE_EFFECT_W = 7,
413 DMX_MODE_MULTIPLE_RGB = 4,
415 DMX_MODE_MULTIPLE_DRGB = 5,
417 DMX_MODE_MULTIPLE_RGBW = 6,
419 DMX_MODE_EFFECT_SEGMENT = 8,
421 DMX_MODE_EFFECT_SEGMENT_W = 9,
423 DMX_MODE_PRESET = 10,
425 RSVD1,
427 RSVD2,
429 RSVD3,
431 RSVD4,
433 RSVD5,
435 RSVD6,
437
438}
439
440#[allow(non_camel_case_types)]
442#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug, Clone)]
443#[repr(u8)]
444pub enum TimeZoneId {
445 TZ_UTC,
446 TZ_UK,
447 TZ_EUROPE_CENTRAL,
448 TZ_EUROPE_EASTERN,
449 TZ_US_EASTERN,
450 TZ_US_CENTRAL,
451 TZ_US_MOUNTAIN,
452 TZ_US_ARIZONA,
453 TZ_US_PACIFIC,
454 TZ_CHINA,
455 TZ_JAPAN,
456 TZ_AUSTRALIA_EASTERN,
457 TZ_NEW_ZEALAND,
458 TZ_NORTH_KOREA,
459 TZ_INDIA,
460 TZ_SASKACHEWAN,
461 TZ_AUSTRALIA_NORTHERN,
462 TZ_AUSTRALIA_SOUTHERN,
463 TZ_HAWAII,
464 TZ_NOVOSIBIRSK,
465 TZ_ANCHORAGE,
466 TZ_MX_CENTRAL,
467 TZ_PAKISTAN,
468 TZ_RSVD1,
469 TZ_RSVD2,
470 TZ_RSVD3,
471 TZ_RSVD4,
472 TZ_RSVD5,
473 TZ_RSVD6,
474 TZ_INIT = 255
475}