e173 0.1.0-alpha.7

A library implementing various aspects of the ESTA BSR E1.73 standard
Documentation
use crate::e173_types;

e173_types! {

#[serde(rename_all = "camelCase")]
#[cfg_attr(target_arch = "wasm32", tsify(string_enum))]
#[derive(PartialEq, Eq, Hash)]
pub enum ParameterAccess {
    ReadActual,
    ReadTarget,
    Write,
}

#[serde(rename_all = "camelCase")]
#[cfg_attr(target_arch = "wasm32", tsify(string_enum))]
#[derive(PartialEq, Eq, Hash)]
pub enum Access {
    Read,
    Write
}

#[serde(rename_all = "lowercase")]
#[cfg_attr(target_arch = "wasm32", tsify(string_enum))]
pub enum Lifetime {
    Static,
    Persistent,
    Runtime,
}

#[derive(PartialEq)]
#[serde(rename_all = "kebab-case")]
#[cfg_attr(target_arch = "wasm32", tsify(string_enum))]
pub enum DataType {
    Number,
    Enum,
    String,
    Binary,
    Boolean,
    Uuid,
}

#[derive(PartialEq)]
pub struct Unit {
    name: UnitName,
    #[serde(skip_serializing_if = "Option::is_none")]
    exponent: Option<i32>,
}

#[derive(PartialEq)]
#[serde(rename_all = "kebab-case")]
#[cfg_attr(target_arch = "wasm32", tsify(string_enum))]
pub enum UnitName {
    Ampere,
    Candela,
    Kelvin,
    Kilogram,
    Meter,
    Second,
    DegreeCelsius,
    Hertz,
    Joule,
    Lumen,
    Lux,
    Newton,
    NewtonMeter,
    Ohm,
    Pascal,
    Radian,
    RadianPerSecond,
    RadianPerSecondSquared,
    Steradian,
    Volt,
    Watt,
    CubicMeter,
    MeterPerSecond,
    MeterPerSecondSquared,
    SquareMeter,
    AmpHours,
    Byte,
    BytePerSecond,
    Degree,
    Ratio,
    LogDb,
    Rpm,
    Other,
    None,
}

pub struct EnumChoice {
    pub id: String,
    #[serde(rename = "@name")]
    pub name: String,
}

pub struct EnumInstanceChoices {
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub excluded: Vec<String>,
    #[serde(default, skip_serializing_if = "Vec::is_empty")]
    pub additional: Vec<EnumChoice>,
}

}