#![warn(missing_docs)]
#![warn(rustdoc::broken_intra_doc_links)]
use serde::{Deserialize, Serialize};
use super::electrical::{ControlGearReference, EnergyLabels, PowerRange, Voltage};
use super::geometries::Rotation;
use super::{Locale, LocaleFoo};
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FluxFactor {
#[serde(rename = "@inputPower", default)]
pub input_power: String,
#[serde(
rename = "@flickerPstLM",
default,
skip_serializing_if = "Option::is_none"
)]
pub flicker_pst_lm: Option<String>,
#[serde(
rename = "@stroboscopicEffectsSVM",
default,
skip_serializing_if = "Option::is_none"
)]
pub stroboscopic_effects_svm: Option<String>,
#[serde(
rename = "@description",
default,
skip_serializing_if = "Option::is_none"
)]
pub description: Option<String>,
#[serde(rename = "$text", default)]
pub value: f64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ActivePowerTable {
#[serde(rename = "@type", default)]
pub type_attr: String,
#[serde(rename = "FluxFactor", default)]
pub flux_factor: Vec<FluxFactor>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ColorTemperatureAdjustingRange {
#[serde(rename = "Lower", skip_serializing_if = "Option::is_none")]
pub lower: Option<i32>,
#[serde(rename = "Upper", skip_serializing_if = "Option::is_none")]
pub upper: Option<i32>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Cie1931ColorAppearance {
#[serde(rename = "X", skip_serializing_if = "Option::is_none")]
pub x: Option<f64>,
#[serde(rename = "Y", skip_serializing_if = "Option::is_none")]
pub y: Option<f64>,
#[serde(rename = "Z", skip_serializing_if = "Option::is_none")]
pub z: Option<f64>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RatedChromacityCoordinateValues {
#[serde(rename = "X")]
pub x: f64,
#[serde(rename = "Y")]
pub y: f64,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct IESTM3015 {
#[serde(rename = "Rf")]
pub rf: i32,
#[serde(rename = "Rg")]
pub rg: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ColorInformation {
#[serde(
rename = "ColorRenderingIndex",
skip_serializing_if = "Option::is_none"
)]
pub color_rendering_index: Option<i32>,
#[serde(
rename = "CorrelatedColorTemperature",
skip_serializing_if = "Option::is_none"
)]
pub correlated_color_temperature: Option<i32>,
#[serde(
rename = "ColorTemperatureAdjustingRange",
skip_serializing_if = "Option::is_none"
)]
pub color_temperature_adjusting_range: Option<ColorTemperatureAdjustingRange>,
#[serde(
rename = "Cie1931ColorAppearance",
skip_serializing_if = "Option::is_none"
)]
pub cie1931_color_appearance: Option<Cie1931ColorAppearance>,
#[serde(
rename = "InitialColorTolerance",
skip_serializing_if = "Option::is_none"
)]
pub initial_color_tolerance: Option<String>,
#[serde(
rename = "MaintainedColorTolerance",
skip_serializing_if = "Option::is_none"
)]
pub maintained_color_tolerance: Option<String>,
#[serde(
rename = "RatedChromacityCoordinateValues",
skip_serializing_if = "Option::is_none"
)]
pub rated_chromacity_coordinate_values: Option<RatedChromacityCoordinateValues>,
#[serde(rename = "TLCI", skip_serializing_if = "Option::is_none")]
pub tlci: Option<i32>,
#[serde(rename = "IES-TM-30-15", skip_serializing_if = "Option::is_none")]
pub iestm3015: Option<IESTM3015>,
#[serde(rename = "MelanopicFactor", skip_serializing_if = "Option::is_none")]
pub melanopic_factor: Option<f64>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PhotometryReference {
#[serde(rename = "@photometryId")]
pub photometry_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CieLampMaintenanceFactor {
#[serde(rename = "@burningTime")]
pub burning_time: u32,
#[serde(rename = "LampLumenMaintenanceFactor")]
pub lamp_lumen_maintenance_factor: f64,
#[serde(rename = "LampSurvivalFactor")]
pub lamp_survival_factor: i32,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CieLampMaintenanceFactors {
#[serde(rename = "CieLampMaintenanceFactor", default)]
pub cie_lamp_maintenance_factor: Vec<CieLampMaintenanceFactor>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LedMaintenanceFactor {
#[serde(rename = "@hours")]
pub hours: i32,
#[serde(rename = "$text")]
pub value: f64,
}
impl Default for LedMaintenanceFactor {
fn default() -> Self {
Self {
hours: 0,
value: 1.0,
}
}
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LightSourceMaintenance {
#[serde(rename = "@lifetime", skip_serializing_if = "Option::is_none")]
pub lifetime: Option<i32>,
#[serde(rename = "Cie97LampType", skip_serializing_if = "Option::is_none")]
pub cie97_lamp_type: Option<String>,
#[serde(
rename = "CieLampMaintenanceFactors",
skip_serializing_if = "Option::is_none"
)]
pub cie_lamp_maintenance_factors: Option<CieLampMaintenanceFactors>,
#[serde(
rename = "LedMaintenanceFactor",
skip_serializing_if = "Option::is_none"
)]
pub led_maintenance_factor: Option<LedMaintenanceFactor>,
#[serde(rename = "LampSurvivalFactor", skip_serializing_if = "Option::is_none")]
pub lamp_survival_factor: Option<i32>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SpectrumReference {
#[serde(rename = "@spectrumId")]
pub spectrum_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Images {
#[serde(rename = "Image", default)]
pub image: Vec<ImageReference>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ImageReference {
#[serde(rename = "@fileId")]
pub file_id: String,
#[serde(rename = "@imageType", skip_serializing_if = "Option::is_none")]
pub image_type: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ChangeableLightSource {
#[serde(rename = "@id", default)]
pub id: String,
#[serde(rename = "Name", default)]
pub name: Locale,
#[serde(
rename = "Description",
default,
skip_serializing_if = "Option::is_none"
)]
pub description: Option<Locale>,
#[serde(
rename = "Manufacturer",
default,
skip_serializing_if = "Option::is_none"
)]
pub manufacturer: Option<String>,
#[serde(
rename = "PhotometryReference",
default,
skip_serializing_if = "Option::is_none"
)]
pub photometry_reference: Option<PhotometryReference>,
#[serde(
rename = "LightSourceMaintenance",
default,
skip_serializing_if = "Option::is_none"
)]
pub light_source_maintenance: Option<LightSourceMaintenance>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FixedLightSource {
#[serde(rename = "@id", default)]
pub id: String,
#[serde(rename = "Name", default)]
pub name: LocaleFoo,
#[serde(
rename = "Description",
default,
skip_serializing_if = "Option::is_none"
)]
pub description: Option<LocaleFoo>,
#[serde(rename = "Manufacturer", skip_serializing_if = "Option::is_none")]
pub manufacturer: Option<String>,
#[serde(rename = "GTIN", skip_serializing_if = "Option::is_none")]
pub gtin: Option<String>,
#[serde(rename = "RatedInputPower", skip_serializing_if = "Option::is_none")]
pub rated_input_power: Option<f64>,
#[serde(rename = "RatedInputVoltage", skip_serializing_if = "Option::is_none")]
pub rated_input_voltage: Option<Voltage>,
#[serde(rename = "PowerRange", skip_serializing_if = "Option::is_none")]
pub power_range: Option<PowerRange>,
#[serde(
rename = "LightSourcePositionOfUsage",
skip_serializing_if = "Option::is_none"
)]
pub light_source_position_of_usage: Option<String>,
#[serde(rename = "EnergyLabels", skip_serializing_if = "Option::is_none")]
pub energy_labels: Option<EnergyLabels>,
#[serde(rename = "SpectrumReference", skip_serializing_if = "Option::is_none")]
pub spectrum_reference: Option<SpectrumReference>,
#[serde(rename = "ActivePowerTable", skip_serializing_if = "Option::is_none")]
pub active_power_table: Option<ActivePowerTable>,
#[serde(rename = "ColorInformation", skip_serializing_if = "Option::is_none")]
pub color_information: Option<ColorInformation>,
#[serde(rename = "LightSourceImages", skip_serializing_if = "Option::is_none")]
pub light_source_images: Option<Images>,
#[serde(
rename = "LightSourceMaintenance",
skip_serializing_if = "Option::is_none"
)]
pub light_source_maintenance: Option<LightSourceMaintenance>,
#[serde(rename = "ZhagaStandard", skip_serializing_if = "Option::is_none")]
pub zhaga_standard: Option<bool>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LightSources {
#[serde(rename = "ChangeableLightSource", default)]
pub changeable_light_source: Vec<ChangeableLightSource>,
#[serde(rename = "FixedLightSource", default)]
pub fixed_light_source: Vec<FixedLightSource>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct LightSourceReference {
#[serde(
rename = "@fixedLightSourceId",
skip_serializing_if = "Option::is_none"
)]
pub fixed_light_source_id: Option<String>,
#[serde(
rename = "@changeableLightSourceId",
skip_serializing_if = "Option::is_none"
)]
pub changeable_light_source_id: Option<String>,
#[serde(rename = "@lightSourceCount", skip_serializing_if = "Option::is_none")]
pub light_source_count: Option<i32>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct ChangeableLightEmitter {
#[serde(
rename = "@emergencyBehaviour",
skip_serializing_if = "Option::is_none"
)]
pub emergency_behaviour: Option<String>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<Locale>,
#[serde(rename = "Rotation", skip_serializing_if = "Option::is_none")]
pub rotation: Option<Rotation>,
#[serde(rename = "PhotometryReference")]
pub photometry_reference: PhotometryReference,
#[serde(rename = "G0", skip_serializing_if = "Option::is_none")]
pub g0: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct FixedLightEmitter {
#[serde(
rename = "@emergencyBehaviour",
skip_serializing_if = "Option::is_none"
)]
pub emergency_behaviour: Option<String>,
#[serde(rename = "Name", skip_serializing_if = "Option::is_none")]
pub name: Option<LocaleFoo>,
#[serde(rename = "Rotation", skip_serializing_if = "Option::is_none")]
pub rotation: Option<Rotation>,
#[serde(rename = "PhotometryReference")]
pub photometry_reference: PhotometryReference,
#[serde(rename = "LightSourceReference")]
pub light_source_reference: LightSourceReference,
#[serde(
rename = "ControlGearReference",
skip_serializing_if = "Option::is_none"
)]
pub control_gear_reference: Option<ControlGearReference>,
#[serde(rename = "RatedLuminousFlux", skip_serializing_if = "Option::is_none")]
pub rated_luminous_flux: Option<i32>,
#[serde(
rename = "RatedLuminousFluxRGB",
skip_serializing_if = "Option::is_none"
)]
pub rated_luminous_flux_rgb: Option<i32>,
#[serde(
rename = "EmergencyBallastLumenFactor",
skip_serializing_if = "Option::is_none"
)]
pub emergency_ballast_lumen_factor: Option<f64>,
#[serde(
rename = "EmergencyRatedLuminousFlux",
skip_serializing_if = "Option::is_none"
)]
pub emergency_rated_luminous_flux: Option<String>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SensorReference {
#[serde(rename = "@sensorId")]
pub sensor_id: String,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct SensorEmitter {
#[serde(rename = "SensorReference")]
pub sensor_reference: SensorReference,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Emitter {
#[serde(rename = "@id")]
pub id: String,
#[serde(
rename = "ChangeableLightEmitter",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub changeable_light_emitter: Vec<ChangeableLightEmitter>,
#[serde(
rename = "FixedLightEmitter",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub fixed_light_emitter: Vec<FixedLightEmitter>,
#[serde(
rename = "SensorEmitter",
default,
skip_serializing_if = "Vec::is_empty"
)]
pub sensor_emitter: Vec<SensorEmitter>,
}
impl Emitter {
pub fn is_empty(&self) -> bool {
self.changeable_light_emitter.is_empty()
&& self.fixed_light_emitter.is_empty()
&& self.sensor_emitter.is_empty()
}
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct Emitters {
#[serde(rename = "Emitter", default, skip_serializing_if = "Vec::is_empty")]
pub emitter: Vec<Emitter>,
}
impl Emitters {
pub fn is_empty(&self) -> bool {
self.emitter.is_empty() || self.emitter.iter().all(|e| e.is_empty())
}
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct RectangularEmitter {
#[serde(rename = "Width", default)]
pub width: Vec<i32>,
#[serde(rename = "Length", default)]
pub length: Vec<i32>,
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct CircularEmitter {
#[serde(rename = "Diameter", default)]
pub diameter: Vec<i32>,
}