use serde::{Deserialize, Serialize};
use smol_str::SmolStr;
#[derive(Debug, Serialize, Deserialize)]
pub struct SystemPayload {
pub sequence_id: SmolStr,
#[serde(flatten)]
pub command: SystemCommand,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "command", rename = "ledctrl")]
pub struct LedCtrl {
pub led_node: LedNode,
pub led_mode: LedMode,
pub led_on_time: u32,
pub led_off_time: u32,
pub loop_times: u32,
pub interval_time: u32,
}
#[derive(Debug, Serialize, Deserialize)]
#[serde(tag = "command")]
pub enum SystemCommand {
LedCtrl(LedCtrl),
#[serde(rename = "get_accessories")]
GetAccessories {
accessory_type: AccessoryType,
},
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum LedNode {
ChamberLight,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum LedMode {
On,
Off,
}
#[derive(Debug, Copy, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum AccessoryType {
None,
}