wled_json_api_library/structures/cfg/cfg_hw/
mod.rs1use serde;
2use serde::{Serialize, Deserialize};
3use serde_repr::{Deserialize_repr, Serialize_repr};
4use crate::structures::cfg::cfg_hw::cfg_hw_led::Led;
5use crate::structures::none_function;
6
7
8pub mod cfg_hw_led;
9
10
11#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
13#[serde(rename_all = "camelCase")]
14pub struct Hw {
15
16 #[serde(skip_serializing_if = "Option::is_none")]
18 #[serde(default = "none_function")]
19 pub led: Option<Led>,
20
21 #[serde(skip_serializing_if = "Option::is_none")]
23 #[serde(default = "none_function")]
24 pub com: Option<Vec<ColorOrderMap>>,
25
26 #[serde(skip_serializing_if = "Option::is_none")]
28 #[serde(default = "none_function")]
29 pub btn: Option<Btn>,
30
31 #[serde(skip_serializing_if = "Option::is_none")]
33 #[serde(default = "none_function")]
34 pub ir: Option<Ir>,
35
36 #[serde(skip_serializing_if = "Option::is_none")]
38 #[serde(default = "none_function")]
39 pub relay: Option<Relay>,
40
41 #[serde(skip_serializing_if = "Option::is_none")]
43 #[serde(default = "none_function")]
44 pub baud: Option<u16>,
45
46 #[serde(skip_serializing_if = "Option::is_none")]
48 #[serde(default = "none_function")]
49 #[serde(rename = "if")]
50 pub if_field: Option<If>,
51}
52
53
54#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
55#[serde(rename_all = "camelCase")]
56pub struct Btn {
57
58 #[serde(skip_serializing_if = "Option::is_none")]
60 #[serde(default = "none_function")]
61 pub max: Option<u8>,
62
63 #[serde(skip_serializing_if = "Option::is_none")]
65 #[serde(default = "none_function")]
66 pub pull: Option<bool>,
67
68 #[serde(skip_serializing_if = "Option::is_none")]
70 #[serde(default = "none_function")]
71 pub ins: Option<Vec<In3>>,
72
73 #[serde(skip_serializing_if = "Option::is_none")]
75 #[serde(default = "none_function")]
76 pub tt: Option<u8>,
77
78 #[serde(skip_serializing_if = "Option::is_none")]
80 #[serde(default = "none_function")]
81 pub mqtt: Option<bool>,
82}
83
84#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
85#[serde(rename_all = "camelCase")]
86pub struct Relay {
87 #[serde(skip_serializing_if = "Option::is_none")]
89 #[serde(default = "none_function")]
90 pub pin: Option<i8>,
91
92 #[serde(skip_serializing_if = "Option::is_none")]
94 #[serde(default = "none_function")]
95 pub rev: Option<bool>,
96}
97
98
99
100
101#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
102#[serde(rename_all = "camelCase")]
103pub struct ColorOrderMap {
104
105 #[serde(skip_serializing_if = "Option::is_none")]
107 #[serde(default = "none_function")]
108 pub start: Option<u16>,
109
110 #[serde(skip_serializing)]
112 #[serde(default = "none_function")]
113 pub stop: Option<u16>,
114
115 #[serde(skip_serializing_if = "Option::is_none")]
117 #[serde(default = "none_function")]
118 pub len: Option<u16>,
119
120 #[serde(skip_serializing_if = "Option::is_none")]
122 #[serde(default = "none_function")]
123 pub order: Option<u8>,
124}
125
126
127#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
128#[serde(rename_all = "camelCase")]
129pub struct ButtonMacros {
130 #[serde(skip_serializing_if = "Option::is_none")]
132 #[serde(default = "none_function")]
133 #[serde(rename = "0")]
134 pub macro_button: Option<u8>,
135
136 #[serde(skip_serializing_if = "Option::is_none")]
138 #[serde(default = "none_function")]
139 #[serde(rename = "1")]
140 pub macro_long_press: Option<u8>,
141
142 #[serde(skip_serializing_if = "Option::is_none")]
144 #[serde(default = "none_function")]
145 #[serde(rename = "2")]
146 pub macro_double_press: Option<u8>,
147
148}
149
150
151#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
152#[serde(rename_all = "camelCase")]
153pub struct Ir {
154
155 #[serde(skip_serializing_if = "Option::is_none")]
157 #[serde(default = "none_function")]
158 pub pin: Option<i8>,
159
160 #[serde(skip_serializing_if = "Option::is_none")]
162 #[serde(default = "none_function")]
163 #[serde(rename = "type")]
164 pub type_field: Option<u8>,
165
166 #[serde(skip_serializing_if = "Option::is_none")]
168 #[serde(default = "none_function")]
169 pub sel: Option<bool>,
170}
171
172
173#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
174#[serde(rename_all = "camelCase")]
175pub struct If {
176 #[serde(skip_serializing_if = "Option::is_none")]
178 #[serde(default = "none_function")]
179 #[serde(rename = "i2c-pin")]
180 pub i2c_pin: Option<[i8; 2]>,
181
182 #[serde(skip_serializing_if = "Option::is_none")]
184 #[serde(default = "none_function")]
185 #[serde(rename = "spi-pin")]
186 pub spi_pin: Option<[i8; 3]>,
187}
188
189
190#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
191#[serde(rename_all = "camelCase")]
192pub struct In3 {
193
194 #[serde(skip_serializing_if = "Option::is_none")]
196 #[serde(default = "none_function")]
197 #[serde(rename = "type")]
198 pub type_field: Option<ButtonType>,
199
200 #[serde(skip_serializing_if = "Option::is_none")]
202 #[serde(default = "none_function")]
203 pub pin: Option<Vec<i8>>,
204
205 #[serde(skip_serializing_if = "Option::is_none")]
207 #[serde(default = "none_function")]
208 pub macros: Option<ButtonMacros>,
209}
210
211
212
213#[allow(non_camel_case_types)]
215#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug, Clone)]
216#[repr(u8)]
217pub enum ButtonType {
218 BTN_TYPE_NONE,
220 BTN_TYPE_RESERVED,
222 BTN_TYPE_PUSH,
224 BTN_TYPE_PUSH_ACT_HIGH,
226 BTN_TYPE_SWITCH,
228 BTN_TYPE_PIR_SENSOR,
230 BTN_TYPE_TOUCH,
232 BTN_TYPE_ANALOG,
234 BTN_TYPE_ANALOG_INVERTED,
236 RSVD1,
238 RSVD2,
240 RSVD3,
242 RSVD4,
244 RSVD5,
246 RSVD6,
248
249}
250
251
252