e173 0.1.0-alpha.7

A library implementing various aspects of the ESTA BSR E1.73 standard
Documentation
use std::collections::HashMap;

use crate::e173_types;

use super::misc::{DataType, EnumChoice, EnumInstanceChoices, Unit};

e173_types! {

#[serde(rename_all = "camelCase")]
pub struct CommandClass {
    #[serde(rename = "@name")]
    pub name: String,
    #[serde(rename = "@description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
    pub arguments: HashMap<String, CommandArgument>,
    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
    pub returns: HashMap<String, CommandReturnValue>,
}

#[serde(rename_all = "camelCase")]
pub struct Command {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub library: Option<String>,
    pub class: String,
    #[serde(rename = "@friendlyName", skip_serializing_if = "Option::is_none")]
    pub friendly_name: Option<String>,
    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
    pub argument_choices: HashMap<String, EnumInstanceChoices>,
    #[serde(default, skip_serializing_if = "HashMap::is_empty")]
    pub return_choices: HashMap<String, EnumInstanceChoices>,
    pub completion_notification: bool
}

#[serde(rename_all = "camelCase")]
pub struct CommandArgument {
    #[serde(rename = "@name")]
    pub name: String,
    #[serde(rename = "@description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    pub data_type: DataType,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub unit: Option<Unit>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub choices: Vec<EnumChoice>,
    pub required: bool,
}

#[serde(rename_all = "camelCase")]
pub struct CommandReturnValue {
    #[serde(rename = "@name")]
    pub name: String,
    #[serde(rename = "@description", skip_serializing_if = "Option::is_none")]
    pub description: Option<String>,
    pub data_type: DataType,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub unit: Option<Unit>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub choices: Vec<EnumChoice>,
    pub required: bool,
}

}