use serde;
use serde::{Serialize, Deserialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::structures::cfg::cfg_hw::cfg_hw_led::Led;
use crate::structures::none_function;
pub mod cfg_hw_led;
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Hw {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub led: Option<Led>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub com: Option<Vec<ColorOrderMap>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub btn: Option<Btn>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub ir: Option<Ir>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub relay: Option<Relay>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub baud: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "if")]
pub if_field: Option<If>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Btn {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub max: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub pull: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub ins: Option<Vec<In3>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub tt: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub mqtt: Option<bool>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Relay {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub pin: Option<i8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub rev: Option<bool>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ColorOrderMap {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub start: Option<u16>,
#[serde(skip_serializing)]
#[serde(default = "none_function")]
pub stop: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub len: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub order: Option<u8>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ButtonMacros {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "0")]
pub macro_button: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "1")]
pub macro_long_press: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "2")]
pub macro_double_press: Option<u8>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Ir {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub pin: Option<i8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "type")]
pub type_field: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub sel: Option<bool>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct If {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "i2c-pin")]
pub i2c_pin: Option<[i8; 2]>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "spi-pin")]
pub spi_pin: Option<[i8; 3]>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct In3 {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "type")]
pub type_field: Option<ButtonType>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub pin: Option<Vec<i8>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub macros: Option<ButtonMacros>,
}
#[allow(non_camel_case_types)]
#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug, Clone)]
#[repr(u8)]
pub enum ButtonType {
BTN_TYPE_NONE,
BTN_TYPE_RESERVED,
BTN_TYPE_PUSH,
BTN_TYPE_PUSH_ACT_HIGH,
BTN_TYPE_SWITCH,
BTN_TYPE_PIR_SENSOR,
BTN_TYPE_TOUCH,
BTN_TYPE_ANALOG,
BTN_TYPE_ANALOG_INVERTED,
RSVD1,
RSVD2,
RSVD3,
RSVD4,
RSVD5,
RSVD6,
}