use serde;
use serde::{Serialize, Deserialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
use crate::structures::none_function;
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Led {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub total: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub maxpwr: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub ledma: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub cct: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub cr: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub cb: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub fps: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub rgbwm: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub ld: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub matrix: Option<Matrix>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub ins: Option<Vec<PhysicalWledBusInfo>>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PhysicalWledBusInfo {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub start: 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 pin: Option<Vec<u8>>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub order: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub rev: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub skip: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "type")]
pub type_field: Option<LightCapability>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "ref")]
pub ref_field: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub rgbwm: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub freq: Option<u16>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Matrix {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub mpc: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub panels: Option<Vec<Panel>>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Panel {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub b: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub r: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub v: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub s: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub x: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub y: Option<u16>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub h: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub w: Option<u8>,
}
#[allow(non_camel_case_types)]
#[derive(Serialize_repr, Deserialize_repr, PartialEq, Debug, Clone)]
#[repr(u8)]
pub enum LightCapability {
TYPE_NONE = 0,
TYPE_RESERVED = 1,
TYPE_WS2812_1CH = 18,
TYPE_WS2812_1CH_X3 = 19,
TYPE_WS2812_2CH_X3 = 20,
TYPE_WS2812_WWA = 21,
TYPE_WS2812_RGB = 22,
TYPE_GS8608 = 23,
TYPE_WS2811_400KHZ = 24,
TYPE_TM1829 = 25,
TYPE_UCS8903 = 26,
TYPE_UCS8904 = 29,
TYPE_SK6812_RGBW = 30,
TYPE_TM1814 = 31,
TYPE_ONOFF = 40,
TYPE_ANALOG_1CH = 41,
TYPE_ANALOG_2CH = 42,
TYPE_ANALOG_3CH = 43,
TYPE_ANALOG_4CH = 44,
TYPE_ANALOG_5CH = 45,
TYPE_WS2801 = 50,
TYPE_APA102 = 51,
TYPE_LPD8806 = 52,
TYPE_P9813 = 53,
TYPE_LPD6803 = 54,
TYPE_NET_DDP_RGB = 80,
TYPE_NET_E131_RGB = 81,
TYPE_NET_ARTNET_RGB = 82,
TYPE_NET_DDP_RGBW = 88,
RSVD1,
RSVD2,
RSVD3,
RSVD4,
RSVD5,
RSVD6,
RSVD7,
RSVD8,
}