use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Database {
pub entries: Vec<Entry>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE", tag = "type")]
pub enum Entry {
Command(Command),
Comment(Comment),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Command {
pub name: String,
pub target: String,
pub code: u16,
pub parameters: Vec<Parameter>,
pub is_danger: bool,
pub is_restricted: bool,
pub description: String,
pub note: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Parameter {
pub data_type: DataType,
pub description: String,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum DataType {
#[serde(rename = "int8_t")]
Int8,
#[serde(rename = "int16_t")]
Int16,
#[serde(rename = "int32_t")]
Int32,
#[serde(rename = "uint8_t")]
Uint8,
#[serde(rename = "uint16_t")]
Uint16,
#[serde(rename = "uint32_t")]
Uint32,
#[serde(rename = "float")]
Float,
#[serde(rename = "double")]
Double,
#[serde(rename = "raw")]
Raw,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct Comment {
pub text: String,
}