diff --git a/crates/lox_core/src/odm/common.rs b/crates/lox_core/src/odm/common.rs index 3ba53990..565b287b 100644 --- a/crates/lox_core/src/odm/common.rs +++ b/crates/lox_core/src/odm/common.rs @@ -1,1173 +1,1167 @@ -mod schema_common { - pub mod xml_schema_types { +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AccUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AccUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngleUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngleUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngleRange(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngleRange(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngleRateUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngleRateUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngMomentumUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngMomentumUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngVelFrameType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngVelFrameType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AreaUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AreaUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DayIntervalUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DayIntervalUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct FrequencyUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct FrequencyUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct GmUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct GmUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct InclinationRange(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct InclinationRange(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct LengthUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct LengthUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct MassUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct MassUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct MomentUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct MomentUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct WkgUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct WkgUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ObjectDescriptionType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ObjectDescriptionType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Ms2Units(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Ms2Units(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Km2Units(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Km2Units(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Km2sUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Km2sUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Km2s2Units(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Km2s2Units(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PositionUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PositionUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct VelocityUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct VelocityUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq)] - pub struct VecDouble { - pub items: Vec, - } - impl yaserde::YaDeserialize for VecDouble { - fn deserialize( - reader: &mut yaserde::de::Deserializer, - ) -> Result { - loop { - match reader.next_event()? { - xml::reader::XmlEvent::StartElement { .. } => {} - xml::reader::XmlEvent::Characters(ref text_content) => { - let items: Vec = text_content - .split(' ') - .map(|item| item.to_owned()) - .map(|item| item.parse().unwrap()) - .collect(); - return Ok(VecDouble { items }); - } - _ => { - break; - } - } +#[derive(Clone, Debug, Default, PartialEq)] +pub struct VecDouble { + pub items: Vec, +} +impl yaserde::YaDeserialize for VecDouble { + fn deserialize( + reader: &mut yaserde::de::Deserializer, + ) -> Result { + loop { + match reader.next_event()? { + xml::reader::XmlEvent::StartElement { .. } => {} + xml::reader::XmlEvent::Characters(ref text_content) => { + let items: Vec = text_content + .split(' ') + .map(|item| item.to_owned()) + .map(|item| item.parse().unwrap()) + .collect(); + return Ok(VecDouble { items }); + } + _ => { + break; } - Err("Unable to parse attribute".to_string()) - } - } - impl yaserde::YaSerialize for VecDouble { - fn serialize( - &self, - writer: &mut yaserde::ser::Serializer, - ) -> Result<(), String> { - let content = self - .items - .iter() - .map(|item| item.to_string()) - .collect::>() - .join(" "); - let data_event = xml::writer::XmlEvent::characters(&content); - writer.write(data_event).map_err(|e| e.to_string())?; - Ok(()) - } - fn serialize_attributes( - &self, - mut source_attributes: Vec, - mut source_namespace: xml::namespace::Namespace, - ) -> Result< - ( - Vec, - xml::namespace::Namespace, - ), - String, - > { - Ok((source_attributes, source_namespace)) } } + Err("Unable to parse attribute".to_string()) + } +} +impl yaserde::YaSerialize for VecDouble { + fn serialize( + &self, + writer: &mut yaserde::ser::Serializer, + ) -> Result<(), String> { + let content = self + .items + .iter() + .map(|item| item.to_string()) + .collect::>() + .join(" "); + let data_event = xml::writer::XmlEvent::characters(&content); + writer.write(data_event).map_err(|e| e.to_string())?; + Ok(()) + } + fn serialize_attributes( + &self, + mut source_attributes: Vec, + mut source_namespace: xml::namespace::Namespace, + ) -> Result< + ( + Vec, + xml::namespace::Namespace, + ), + String, + > { + Ok((source_attributes, source_namespace)) + } +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Vec3Double(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Vec3Double(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Vec6Double(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Vec6Double(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Vec9Double(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Vec9Double(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct EpochType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct EpochType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct TimeUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct TimeUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct TimeSystemType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct TimeSystemType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct NegativeDouble(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct NegativeDouble(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct NonNegativeDouble(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct NonNegativeDouble(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct NonPositiveDouble(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct NonPositiveDouble(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PercentType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PercentType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PositiveDouble(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PositiveDouble(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Range100Type(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Range100Type(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ProbabilityType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ProbabilityType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PercentageUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PercentageUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct YesNoType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct YesNoType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct TrajBasisType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct TrajBasisType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RevNumBasisType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RevNumBasisType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct CovBasisType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct CovBasisType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ManBasisType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ManBasisType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ManDcType(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ManDcType(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct NumPerYearUnits(#[serde(rename = "$text")] std::string::String); +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct NumPerYearUnits(#[serde(rename = "$text")] std::string::String); - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ThrustUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct CovOrderType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct GeomagUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct SolarFluxUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PositionCovarianceUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct VelocityCovarianceUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PositionVelocityCovarianceUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct BallisticCoeffUnitsType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct LatRange(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AltRange(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct LonRange(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct LatLonUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ControlledType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DisintegrationType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ImpactUncertaintyType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ReentryUncertaintyMethodType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct QuaternionComponentType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct QuaternionDotUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotDirectionType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotseqType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngleKeywordType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngleRateKeywordType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ApmRateFrameType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct TorqueUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct NdmHeader { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "CREATION_DATE")] - pub creation_date: EpochType, - #[serde(rename = "ORIGINATOR")] - pub originator: String, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ThrustUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct CovOrderType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct GeomagUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct SolarFluxUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PositionCovarianceUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct VelocityCovarianceUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PositionVelocityCovarianceUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct BallisticCoeffUnitsType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct LatRange(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AltRange(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct LonRange(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct LatLonUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ControlledType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DisintegrationType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ImpactUncertaintyType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ReentryUncertaintyMethodType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct QuaternionComponentType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct QuaternionDotUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotDirectionType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotseqType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngleKeywordType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngleRateKeywordType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ApmRateFrameType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct TorqueUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct NdmHeader { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "CREATION_DATE")] + pub creation_date: EpochType, + #[serde(rename = "ORIGINATOR")] + pub originator: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AdmHeader { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "CREATION_DATE")] - pub creation_date: EpochType, - #[serde(rename = "ORIGINATOR")] - pub originator: String, - #[serde(rename = "MESSAGE_ID")] - pub message_id: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AdmHeader { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "CREATION_DATE")] + pub creation_date: EpochType, + #[serde(rename = "ORIGINATOR")] + pub originator: String, + #[serde(rename = "MESSAGE_ID")] + pub message_id: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OdmHeader { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "CLASSIFICATION")] - pub classification_list: Vec, - #[serde(rename = "CREATION_DATE")] - pub creation_date: EpochType, - #[serde(rename = "ORIGINATOR")] - pub originator: String, - #[serde(rename = "MESSAGE_ID")] - pub message_id: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OdmHeader { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "CLASSIFICATION")] + pub classification_list: Vec, + #[serde(rename = "CREATION_DATE")] + pub creation_date: EpochType, + #[serde(rename = "ORIGINATOR")] + pub originator: String, + #[serde(rename = "MESSAGE_ID")] + pub message_id: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AccType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AccType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngleType { - #[serde(rename = "$text")] - pub base: AngleRange, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngleType { + #[serde(rename = "$text")] + pub base: AngleRange, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngleRateType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngleRateType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngMomentumType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: AngMomentumUnits, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngMomentumType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: AngMomentumUnits, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngVelComponentType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngVelComponentType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngVelStateType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "REF_FRAME_A")] - pub ref_frame_a: String, - #[serde(rename = "REF_FRAME_B")] - pub ref_frame_b: String, - #[serde(rename = "ANGVEL_FRAME")] - pub angvel_frame: AngVelFrameType, - #[serde(rename = "ANGVEL_X")] - pub angvel_x: AngVelComponentType, - #[serde(rename = "ANGVEL_Y")] - pub angvel_y: AngVelComponentType, - #[serde(rename = "ANGVEL_Z")] - pub angvel_z: AngVelComponentType, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngVelStateType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "REF_FRAME_A")] + pub ref_frame_a: String, + #[serde(rename = "REF_FRAME_B")] + pub ref_frame_b: String, + #[serde(rename = "ANGVEL_FRAME")] + pub angvel_frame: AngVelFrameType, + #[serde(rename = "ANGVEL_X")] + pub angvel_x: AngVelComponentType, + #[serde(rename = "ANGVEL_Y")] + pub angvel_y: AngVelComponentType, + #[serde(rename = "ANGVEL_Z")] + pub angvel_z: AngVelComponentType, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AngVelType { - #[serde(rename = "ANGVEL_X")] - pub angvel_x: AngVelComponentType, - #[serde(rename = "ANGVEL_Y")] - pub angvel_y: AngVelComponentType, - #[serde(rename = "ANGVEL_Z")] - pub angvel_z: AngVelComponentType, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AngVelType { + #[serde(rename = "ANGVEL_X")] + pub angvel_x: AngVelComponentType, + #[serde(rename = "ANGVEL_Y")] + pub angvel_y: AngVelComponentType, + #[serde(rename = "ANGVEL_Z")] + pub angvel_z: AngVelComponentType, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AreaType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AreaType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DayIntervalType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: DayIntervalUnits, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DayIntervalType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: DayIntervalUnits, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmDayIntervalType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmDayIntervalType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DeltamassType { - #[serde(rename = "$text")] - pub base: NegativeDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DeltamassType { + #[serde(rename = "$text")] + pub base: NegativeDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DeltamassTypeZ { - #[serde(rename = "$text")] - pub base: NonPositiveDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DeltamassTypeZ { + #[serde(rename = "$text")] + pub base: NonPositiveDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct FrequencyType { - #[serde(rename = "$text")] - pub base: PositiveDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct FrequencyType { + #[serde(rename = "$text")] + pub base: PositiveDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct GmType { - #[serde(rename = "$text")] - pub base: PositiveDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct GmType { + #[serde(rename = "$text")] + pub base: PositiveDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct InclinationType { - #[serde(rename = "$text")] - pub base: InclinationRange, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct InclinationType { + #[serde(rename = "$text")] + pub base: InclinationRange, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct LengthType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: LengthUnits, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct LengthType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: LengthUnits, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmLengthType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmLengthType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct MassType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct MassType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct MomentType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct MomentType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct WkgType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: WkgUnits, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct WkgType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: WkgUnits, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OdParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "TIME_LASTOB_START")] - pub time_lastob_start: Option, - #[serde(rename = "TIME_LASTOB_END")] - pub time_lastob_end: Option, - #[serde(rename = "RECOMMENDED_OD_SPAN")] - pub recommended_od_span: Option, - #[serde(rename = "ACTUAL_OD_SPAN")] - pub actual_od_span: Option, - #[serde(rename = "OBS_AVAILABLE")] - pub obs_available: Option, - #[serde(rename = "OBS_USED")] - pub obs_used: Option, - #[serde(rename = "TRACKS_AVAILABLE")] - pub tracks_available: Option, - #[serde(rename = "TRACKS_USED")] - pub tracks_used: Option, - #[serde(rename = "RESIDUALS_ACCEPTED")] - pub residuals_accepted: Option, - #[serde(rename = "WEIGHTED_RMS")] - pub weighted_rms: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OdParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "TIME_LASTOB_START")] + pub time_lastob_start: Option, + #[serde(rename = "TIME_LASTOB_END")] + pub time_lastob_end: Option, + #[serde(rename = "RECOMMENDED_OD_SPAN")] + pub recommended_od_span: Option, + #[serde(rename = "ACTUAL_OD_SPAN")] + pub actual_od_span: Option, + #[serde(rename = "OBS_AVAILABLE")] + pub obs_available: Option, + #[serde(rename = "OBS_USED")] + pub obs_used: Option, + #[serde(rename = "TRACKS_AVAILABLE")] + pub tracks_available: Option, + #[serde(rename = "TRACKS_USED")] + pub tracks_used: Option, + #[serde(rename = "RESIDUALS_ACCEPTED")] + pub residuals_accepted: Option, + #[serde(rename = "WEIGHTED_RMS")] + pub weighted_rms: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct SpacecraftParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "MASS")] - pub mass: Option, - #[serde(rename = "SOLAR_RAD_AREA")] - pub solar_rad_area: Option, - #[serde(rename = "SOLAR_RAD_COEFF")] - pub solar_rad_coeff: Option, - #[serde(rename = "DRAG_AREA")] - pub drag_area: Option, - #[serde(rename = "DRAG_COEFF")] - pub drag_coeff: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct SpacecraftParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "MASS")] + pub mass: Option, + #[serde(rename = "SOLAR_RAD_AREA")] + pub solar_rad_area: Option, + #[serde(rename = "SOLAR_RAD_COEFF")] + pub solar_rad_coeff: Option, + #[serde(rename = "DRAG_AREA")] + pub drag_area: Option, + #[serde(rename = "DRAG_COEFF")] + pub drag_coeff: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct StateVectorType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "EPOCH")] - pub epoch: EpochType, - #[serde(rename = "X")] - pub x: PositionType, - #[serde(rename = "Y")] - pub y: PositionType, - #[serde(rename = "Z")] - pub z: PositionType, - #[serde(rename = "X_DOT")] - pub x_dot: VelocityType, - #[serde(rename = "Y_DOT")] - pub y_dot: VelocityType, - #[serde(rename = "Z_DOT")] - pub z_dot: VelocityType, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct StateVectorType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "EPOCH")] + pub epoch: EpochType, + #[serde(rename = "X")] + pub x: PositionType, + #[serde(rename = "Y")] + pub y: PositionType, + #[serde(rename = "Z")] + pub z: PositionType, + #[serde(rename = "X_DOT")] + pub x_dot: VelocityType, + #[serde(rename = "Y_DOT")] + pub y_dot: VelocityType, + #[serde(rename = "Z_DOT")] + pub z_dot: VelocityType, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct StateVectorAccType { - #[serde(rename = "EPOCH")] - pub epoch: EpochType, - #[serde(rename = "X")] - pub x: PositionType, - #[serde(rename = "Y")] - pub y: PositionType, - #[serde(rename = "Z")] - pub z: PositionType, - #[serde(rename = "X_DOT")] - pub x_dot: VelocityType, - #[serde(rename = "Y_DOT")] - pub y_dot: VelocityType, - #[serde(rename = "Z_DOT")] - pub z_dot: VelocityType, - #[serde(rename = "X_DDOT")] - pub x_ddot: Option, - #[serde(rename = "Y_DDOT")] - pub y_ddot: Option, - #[serde(rename = "Z_DDOT")] - pub z_ddot: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct StateVectorAccType { + #[serde(rename = "EPOCH")] + pub epoch: EpochType, + #[serde(rename = "X")] + pub x: PositionType, + #[serde(rename = "Y")] + pub y: PositionType, + #[serde(rename = "Z")] + pub z: PositionType, + #[serde(rename = "X_DOT")] + pub x_dot: VelocityType, + #[serde(rename = "Y_DOT")] + pub y_dot: VelocityType, + #[serde(rename = "Z_DOT")] + pub z_dot: VelocityType, + #[serde(rename = "X_DDOT")] + pub x_ddot: Option, + #[serde(rename = "Y_DDOT")] + pub y_ddot: Option, + #[serde(rename = "Z_DDOT")] + pub z_ddot: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Ms2Type { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Ms2Units, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Ms2Type { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Ms2Units, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Km2Type { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Km2Type { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Km2sType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Km2sType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct Km2s2Type { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct Km2s2Type { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DistanceType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DistanceType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PositionType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PositionType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RdmPositionType { - #[serde(rename = "$text")] - pub base: String, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RdmPositionType { + #[serde(rename = "$text")] + pub base: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct VelocityType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct VelocityType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RdmVelocityType { - #[serde(rename = "$text")] - pub base: String, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RdmVelocityType { + #[serde(rename = "$text")] + pub base: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DurationType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DurationType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RelTimeType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RelTimeType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct TimeOffsetType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct TimeOffsetType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PercentageType { - #[serde(rename = "$text")] - pub base: Range100Type, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PercentageType { + #[serde(rename = "$text")] + pub base: Range100Type, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ManeuverFreqType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ManeuverFreqType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ThrustType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ThrustType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct GeomagType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct GeomagType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct SolarFluxType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct SolarFluxType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OpmCovarianceMatrixAbstractType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "COV_REF_FRAME")] - pub cov_ref_frame: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OpmCovarianceMatrixAbstractType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "COV_REF_FRAME")] + pub cov_ref_frame: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OemCovarianceMatrixAbstractType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "EPOCH")] - pub epoch: EpochType, - #[serde(rename = "COV_REF_FRAME")] - pub cov_ref_frame: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OemCovarianceMatrixAbstractType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "EPOCH")] + pub epoch: EpochType, + #[serde(rename = "COV_REF_FRAME")] + pub cov_ref_frame: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OemCovarianceMatrixType { - #[serde(flatten)] - pub base: OemCovarianceMatrixAbstractType, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OemCovarianceMatrixType { + #[serde(flatten)] + pub base: OemCovarianceMatrixAbstractType, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OpmCovarianceMatrixType { - #[serde(flatten)] - pub base: OpmCovarianceMatrixAbstractType, - #[serde(flatten)] - pub extension: CovarianceMatrixElementsGroup, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OpmCovarianceMatrixType { + #[serde(flatten)] + pub base: OpmCovarianceMatrixAbstractType, + #[serde(flatten)] + pub extension: CovarianceMatrixElementsGroup, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PositionCovarianceType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PositionCovarianceType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct VelocityCovarianceType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct VelocityCovarianceType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct PositionVelocityCovarianceType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct PositionVelocityCovarianceType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AtmosphericReentryParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "ORBIT_LIFETIME")] - pub orbit_lifetime: DayIntervalType, - #[serde(rename = "REENTRY_ALTITUDE")] - pub reentry_altitude: PositionType, - #[serde(rename = "ORBIT_LIFETIME_WINDOW_START")] - pub orbit_lifetime_window_start: Option, - #[serde(rename = "ORBIT_LIFETIME_WINDOW_END")] - pub orbit_lifetime_window_end: Option, - #[serde(rename = "NOMINAL_REENTRY_EPOCH")] - pub nominal_reentry_epoch: Option, - #[serde(rename = "REENTRY_WINDOW_START")] - pub reentry_window_start: Option, - #[serde(rename = "REENTRY_WINDOW_END")] - pub reentry_window_end: Option, - #[serde(rename = "ORBIT_LIFETIME_CONFIDENCE_LEVEL")] - pub orbit_lifetime_confidence_level: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AtmosphericReentryParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "ORBIT_LIFETIME")] + pub orbit_lifetime: DayIntervalType, + #[serde(rename = "REENTRY_ALTITUDE")] + pub reentry_altitude: PositionType, + #[serde(rename = "ORBIT_LIFETIME_WINDOW_START")] + pub orbit_lifetime_window_start: Option, + #[serde(rename = "ORBIT_LIFETIME_WINDOW_END")] + pub orbit_lifetime_window_end: Option, + #[serde(rename = "NOMINAL_REENTRY_EPOCH")] + pub nominal_reentry_epoch: Option, + #[serde(rename = "REENTRY_WINDOW_START")] + pub reentry_window_start: Option, + #[serde(rename = "REENTRY_WINDOW_END")] + pub reentry_window_end: Option, + #[serde(rename = "ORBIT_LIFETIME_CONFIDENCE_LEVEL")] + pub orbit_lifetime_confidence_level: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct GroundImpactParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "PROBABILITY_OF_IMPACT")] - pub probability_of_impact: Option, - #[serde(rename = "PROBABILITY_OF_BURN_UP")] - pub probability_of_burn_up: Option, - #[serde(rename = "PROBABILITY_OF_BREAK_UP")] - pub probability_of_break_up: Option, - #[serde(rename = "PROBABILITY_OF_LAND_IMPACT")] - pub probability_of_land_impact: Option, - #[serde(rename = "PROBABILITY_OF_CASUALTY")] - pub probability_of_casualty: Option, - #[serde(rename = "NOMINAL_IMPACT_EPOCH")] - pub nominal_impact_epoch: Option, - #[serde(rename = "IMPACT_WINDOW_START")] - pub impact_window_start: Option, - #[serde(rename = "IMPACT_WINDOW_END")] - pub impact_window_end: Option, - #[serde(rename = "IMPACT_REF_FRAME")] - pub impact_ref_frame: Option, - #[serde(rename = "NOMINAL_IMPACT_LON")] - pub nominal_impact_lon: Option, - #[serde(rename = "NOMINAL_IMPACT_LAT")] - pub nominal_impact_lat: Option, - #[serde(rename = "NOMINAL_IMPACT_ALT")] - pub nominal_impact_alt: Option, - #[serde(rename = "IMPACT_1_CONFIDENCE")] - pub impact_1_confidence: Option, - #[serde(rename = "IMPACT_1_START_LON")] - pub impact_1_start_lon: Option, - #[serde(rename = "IMPACT_1_START_LAT")] - pub impact_1_start_lat: Option, - #[serde(rename = "IMPACT_1_STOP_LON")] - pub impact_1_stop_lon: Option, - #[serde(rename = "IMPACT_1_STOP_LAT")] - pub impact_1_stop_lat: Option, - #[serde(rename = "IMPACT_1_CROSS_TRACK")] - pub impact_1_cross_track: Option, - #[serde(rename = "IMPACT_2_CONFIDENCE")] - pub impact_2_confidence: Option, - #[serde(rename = "IMPACT_2_START_LON")] - pub impact_2_start_lon: Option, - #[serde(rename = "IMPACT_2_START_LAT")] - pub impact_2_start_lat: Option, - #[serde(rename = "IMPACT_2_STOP_LON")] - pub impact_2_stop_lon: Option, - #[serde(rename = "IMPACT_2_STOP_LAT")] - pub impact_2_stop_lat: Option, - #[serde(rename = "IMPACT_2_CROSS_TRACK")] - pub impact_2_cross_track: Option, - #[serde(rename = "IMPACT_3_CONFIDENCE")] - pub impact_3_confidence: Option, - #[serde(rename = "IMPACT_3_START_LON")] - pub impact_3_start_lon: Option, - #[serde(rename = "IMPACT_3_START_LAT")] - pub impact_3_start_lat: Option, - #[serde(rename = "IMPACT_3_STOP_LON")] - pub impact_3_stop_lon: Option, - #[serde(rename = "IMPACT_3_STOP_LAT")] - pub impact_3_stop_lat: Option, - #[serde(rename = "IMPACT_3_CROSS_TRACK")] - pub impact_3_cross_track: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct GroundImpactParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "PROBABILITY_OF_IMPACT")] + pub probability_of_impact: Option, + #[serde(rename = "PROBABILITY_OF_BURN_UP")] + pub probability_of_burn_up: Option, + #[serde(rename = "PROBABILITY_OF_BREAK_UP")] + pub probability_of_break_up: Option, + #[serde(rename = "PROBABILITY_OF_LAND_IMPACT")] + pub probability_of_land_impact: Option, + #[serde(rename = "PROBABILITY_OF_CASUALTY")] + pub probability_of_casualty: Option, + #[serde(rename = "NOMINAL_IMPACT_EPOCH")] + pub nominal_impact_epoch: Option, + #[serde(rename = "IMPACT_WINDOW_START")] + pub impact_window_start: Option, + #[serde(rename = "IMPACT_WINDOW_END")] + pub impact_window_end: Option, + #[serde(rename = "IMPACT_REF_FRAME")] + pub impact_ref_frame: Option, + #[serde(rename = "NOMINAL_IMPACT_LON")] + pub nominal_impact_lon: Option, + #[serde(rename = "NOMINAL_IMPACT_LAT")] + pub nominal_impact_lat: Option, + #[serde(rename = "NOMINAL_IMPACT_ALT")] + pub nominal_impact_alt: Option, + #[serde(rename = "IMPACT_1_CONFIDENCE")] + pub impact_1_confidence: Option, + #[serde(rename = "IMPACT_1_START_LON")] + pub impact_1_start_lon: Option, + #[serde(rename = "IMPACT_1_START_LAT")] + pub impact_1_start_lat: Option, + #[serde(rename = "IMPACT_1_STOP_LON")] + pub impact_1_stop_lon: Option, + #[serde(rename = "IMPACT_1_STOP_LAT")] + pub impact_1_stop_lat: Option, + #[serde(rename = "IMPACT_1_CROSS_TRACK")] + pub impact_1_cross_track: Option, + #[serde(rename = "IMPACT_2_CONFIDENCE")] + pub impact_2_confidence: Option, + #[serde(rename = "IMPACT_2_START_LON")] + pub impact_2_start_lon: Option, + #[serde(rename = "IMPACT_2_START_LAT")] + pub impact_2_start_lat: Option, + #[serde(rename = "IMPACT_2_STOP_LON")] + pub impact_2_stop_lon: Option, + #[serde(rename = "IMPACT_2_STOP_LAT")] + pub impact_2_stop_lat: Option, + #[serde(rename = "IMPACT_2_CROSS_TRACK")] + pub impact_2_cross_track: Option, + #[serde(rename = "IMPACT_3_CONFIDENCE")] + pub impact_3_confidence: Option, + #[serde(rename = "IMPACT_3_START_LON")] + pub impact_3_start_lon: Option, + #[serde(rename = "IMPACT_3_START_LAT")] + pub impact_3_start_lat: Option, + #[serde(rename = "IMPACT_3_STOP_LON")] + pub impact_3_stop_lon: Option, + #[serde(rename = "IMPACT_3_STOP_LAT")] + pub impact_3_stop_lat: Option, + #[serde(rename = "IMPACT_3_CROSS_TRACK")] + pub impact_3_cross_track: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RdmSpacecraftParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "WET_MASS")] - pub wet_mass: Option, - #[serde(rename = "DRY_MASS")] - pub dry_mass: Option, - #[serde(rename = "HAZARDOUS_SUBSTANCES")] - pub hazardous_substances: Option, - #[serde(rename = "SOLAR_RAD_AREA")] - pub solar_rad_area: Option, - #[serde(rename = "SOLAR_RAD_COEFF")] - pub solar_rad_coeff: Option, - #[serde(rename = "DRAG_AREA")] - pub drag_area: Option, - #[serde(rename = "DRAG_COEFF")] - pub drag_coeff: Option, - #[serde(rename = "RCS")] - pub rcs: Option, - #[serde(rename = "BALLISTIC_COEFF")] - pub ballistic_coeff: Option, - #[serde(rename = "THRUST_ACCELERATION")] - pub thrust_acceleration: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RdmSpacecraftParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "WET_MASS")] + pub wet_mass: Option, + #[serde(rename = "DRY_MASS")] + pub dry_mass: Option, + #[serde(rename = "HAZARDOUS_SUBSTANCES")] + pub hazardous_substances: Option, + #[serde(rename = "SOLAR_RAD_AREA")] + pub solar_rad_area: Option, + #[serde(rename = "SOLAR_RAD_COEFF")] + pub solar_rad_coeff: Option, + #[serde(rename = "DRAG_AREA")] + pub drag_area: Option, + #[serde(rename = "DRAG_COEFF")] + pub drag_coeff: Option, + #[serde(rename = "RCS")] + pub rcs: Option, + #[serde(rename = "BALLISTIC_COEFF")] + pub ballistic_coeff: Option, + #[serde(rename = "THRUST_ACCELERATION")] + pub thrust_acceleration: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AltType { - #[serde(rename = "$text")] - pub base: AltRange, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AltType { + #[serde(rename = "$text")] + pub base: AltRange, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct BallisticCoeffType { - #[serde(rename = "$text")] - pub base: NonNegativeDouble, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct BallisticCoeffType { + #[serde(rename = "$text")] + pub base: NonNegativeDouble, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct LatType { - #[serde(rename = "$text")] - pub base: LatRange, - #[serde(rename = "@units")] - pub units: LatLonUnits, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct LatType { + #[serde(rename = "$text")] + pub base: LatRange, + #[serde(rename = "@units")] + pub units: LatLonUnits, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct LonType { - #[serde(rename = "$text")] - pub base: LonRange, - #[serde(rename = "@units")] - pub units: LatLonUnits, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct LonType { + #[serde(rename = "$text")] + pub base: LonRange, + #[serde(rename = "@units")] + pub units: LatLonUnits, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct UserDefinedType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "USER_DEFINED")] - pub user_defined_list: Vec, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct UserDefinedType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "USER_DEFINED")] + pub user_defined_list: Vec, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct UserDefinedParameterType { - #[serde(rename = "$text")] - pub base: String, - #[serde(rename = "@parameter")] - pub parameter: String, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct UserDefinedParameterType { + #[serde(rename = "$text")] + pub base: String, + #[serde(rename = "@parameter")] + pub parameter: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct QuaternionType {} - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct QuaternionRateType {} - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct QuaternionDotType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct QuaternionType {} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct QuaternionRateType {} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct QuaternionDotType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotationAngleType { - #[serde(rename = "rotation1")] - pub rotation1: RotationAngleComponentType, - #[serde(rename = "rotation2")] - pub rotation2: RotationAngleComponentType, - #[serde(rename = "rotation3")] - pub rotation3: RotationAngleComponentType, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotationAngleType { + #[serde(rename = "rotation1")] + pub rotation1: RotationAngleComponentType, + #[serde(rename = "rotation2")] + pub rotation2: RotationAngleComponentType, + #[serde(rename = "rotation3")] + pub rotation3: RotationAngleComponentType, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotationAngleComponentTypeold { - #[serde(rename = "@units")] - pub units: Option, - #[serde(rename = "@angle")] - pub angle: AngleKeywordType, - #[serde(rename = "@value")] - pub value: AngleRange, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotationAngleComponentTypeold { + #[serde(rename = "@units")] + pub units: Option, + #[serde(rename = "@angle")] + pub angle: AngleKeywordType, + #[serde(rename = "@value")] + pub value: AngleRange, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotationAngleComponentType { - #[serde(rename = "$text")] - pub base: AngleRange, - #[serde(rename = "@angle")] - pub angle: AngleKeywordType, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotationAngleComponentType { + #[serde(rename = "$text")] + pub base: AngleRange, + #[serde(rename = "@angle")] + pub angle: AngleKeywordType, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotationRateType { - #[serde(rename = "rotation1")] - pub rotation1: RotationRateComponentType, - #[serde(rename = "rotation2")] - pub rotation2: RotationRateComponentType, - #[serde(rename = "rotation3")] - pub rotation3: RotationRateComponentType, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotationRateType { + #[serde(rename = "rotation1")] + pub rotation1: RotationRateComponentType, + #[serde(rename = "rotation2")] + pub rotation2: RotationRateComponentType, + #[serde(rename = "rotation3")] + pub rotation3: RotationRateComponentType, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotationRateComponentTypeOld { - #[serde(rename = "@units")] - pub units: Option, - #[serde(rename = "@rate")] - pub rate: AngleRateKeywordType, - #[serde(rename = "@value")] - pub value: f64, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotationRateComponentTypeOld { + #[serde(rename = "@units")] + pub units: Option, + #[serde(rename = "@rate")] + pub rate: AngleRateKeywordType, + #[serde(rename = "@value")] + pub value: f64, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RotationRateComponentType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@rate")] - pub rate: AngleRateKeywordType, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RotationRateComponentType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@rate")] + pub rate: AngleRateKeywordType, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct TorqueType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct TorqueType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct CovarianceMatrixElementsGroup { - #[serde(rename = "CX_X")] - pub cx_x: PositionCovarianceType, - #[serde(rename = "CY_X")] - pub cy_x: PositionCovarianceType, - #[serde(rename = "CY_Y")] - pub cy_y: PositionCovarianceType, - #[serde(rename = "CZ_X")] - pub cz_x: PositionCovarianceType, - #[serde(rename = "CZ_Y")] - pub cz_y: PositionCovarianceType, - #[serde(rename = "CZ_Z")] - pub cz_z: PositionCovarianceType, - #[serde(rename = "CX_DOT_X")] - pub cx_dot_x: PositionVelocityCovarianceType, - #[serde(rename = "CX_DOT_Y")] - pub cx_dot_y: PositionVelocityCovarianceType, - #[serde(rename = "CX_DOT_Z")] - pub cx_dot_z: PositionVelocityCovarianceType, - #[serde(rename = "CX_DOT_X_DOT")] - pub cx_dot_x_dot: VelocityCovarianceType, - #[serde(rename = "CY_DOT_X")] - pub cy_dot_x: PositionVelocityCovarianceType, - #[serde(rename = "CY_DOT_Y")] - pub cy_dot_y: PositionVelocityCovarianceType, - #[serde(rename = "CY_DOT_Z")] - pub cy_dot_z: PositionVelocityCovarianceType, - #[serde(rename = "CY_DOT_X_DOT")] - pub cy_dot_x_dot: VelocityCovarianceType, - #[serde(rename = "CY_DOT_Y_DOT")] - pub cy_dot_y_dot: VelocityCovarianceType, - #[serde(rename = "CZ_DOT_X")] - pub cz_dot_x: PositionVelocityCovarianceType, - #[serde(rename = "CZ_DOT_Y")] - pub cz_dot_y: PositionVelocityCovarianceType, - #[serde(rename = "CZ_DOT_Z")] - pub cz_dot_z: PositionVelocityCovarianceType, - #[serde(rename = "CZ_DOT_X_DOT")] - pub cz_dot_x_dot: VelocityCovarianceType, - #[serde(rename = "CZ_DOT_Y_DOT")] - pub cz_dot_y_dot: VelocityCovarianceType, - #[serde(rename = "CZ_DOT_Z_DOT")] - pub cz_dot_z_dot: VelocityCovarianceType, - } - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct CovarianceMatrixElementsGroup { + #[serde(rename = "CX_X")] + pub cx_x: PositionCovarianceType, + #[serde(rename = "CY_X")] + pub cy_x: PositionCovarianceType, + #[serde(rename = "CY_Y")] + pub cy_y: PositionCovarianceType, + #[serde(rename = "CZ_X")] + pub cz_x: PositionCovarianceType, + #[serde(rename = "CZ_Y")] + pub cz_y: PositionCovarianceType, + #[serde(rename = "CZ_Z")] + pub cz_z: PositionCovarianceType, + #[serde(rename = "CX_DOT_X")] + pub cx_dot_x: PositionVelocityCovarianceType, + #[serde(rename = "CX_DOT_Y")] + pub cx_dot_y: PositionVelocityCovarianceType, + #[serde(rename = "CX_DOT_Z")] + pub cx_dot_z: PositionVelocityCovarianceType, + #[serde(rename = "CX_DOT_X_DOT")] + pub cx_dot_x_dot: VelocityCovarianceType, + #[serde(rename = "CY_DOT_X")] + pub cy_dot_x: PositionVelocityCovarianceType, + #[serde(rename = "CY_DOT_Y")] + pub cy_dot_y: PositionVelocityCovarianceType, + #[serde(rename = "CY_DOT_Z")] + pub cy_dot_z: PositionVelocityCovarianceType, + #[serde(rename = "CY_DOT_X_DOT")] + pub cy_dot_x_dot: VelocityCovarianceType, + #[serde(rename = "CY_DOT_Y_DOT")] + pub cy_dot_y_dot: VelocityCovarianceType, + #[serde(rename = "CZ_DOT_X")] + pub cz_dot_x: PositionVelocityCovarianceType, + #[serde(rename = "CZ_DOT_Y")] + pub cz_dot_y: PositionVelocityCovarianceType, + #[serde(rename = "CZ_DOT_Z")] + pub cz_dot_z: PositionVelocityCovarianceType, + #[serde(rename = "CZ_DOT_X_DOT")] + pub cz_dot_x_dot: VelocityCovarianceType, + #[serde(rename = "CZ_DOT_Y_DOT")] + pub cz_dot_y_dot: VelocityCovarianceType, + #[serde(rename = "CZ_DOT_Z_DOT")] + pub cz_dot_z_dot: VelocityCovarianceType, } -pub use schema_common::*; diff --git a/crates/lox_core/src/odm/ocm.rs b/crates/lox_core/src/odm/ocm.rs index 11abed2c..b146370c 100644 --- a/crates/lox_core/src/odm/ocm.rs +++ b/crates/lox_core/src/odm/ocm.rs @@ -1,539 +1,536 @@ -mod schema_ocm { - pub mod xml_schema_types { - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmType { - #[serde(rename = "header")] - pub header: schema_common::xml_schema_types::OdmHeader, - #[serde(rename = "body")] - pub body: schema_common::xml_schema_types::OcmBody, - #[serde(rename = "@id")] - pub id: String, - #[serde(rename = "@version")] - pub version: String, - } +use super::common; - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmBody { - #[serde(rename = "segment")] - pub segment: schema_common::xml_schema_types::OcmSegment, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmType { + #[serde(rename = "header")] + pub header: common::OdmHeader, + #[serde(rename = "body")] + pub body: common::OcmBody, + #[serde(rename = "@id")] + pub id: String, + #[serde(rename = "@version")] + pub version: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmSegment { - #[serde(rename = "metadata")] - pub metadata: schema_common::xml_schema_types::OcmMetadata, - #[serde(rename = "data")] - pub data: schema_common::xml_schema_types::OcmData, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmBody { + #[serde(rename = "segment")] + pub segment: common::OcmSegment, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmMetadata { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "OBJECT_NAME")] - pub object_name: Option, - #[serde(rename = "INTERNATIONAL_DESIGNATOR")] - pub international_designator: Option, - #[serde(rename = "CATALOG_NAME")] - pub catalog_name: Option, - #[serde(rename = "OBJECT_DESIGNATOR")] - pub object_designator: Option, - #[serde(rename = "ALTERNATE_NAMES")] - pub alternate_names: Option, - #[serde(rename = "ORIGINATOR_POC")] - pub originator_poc: Option, - #[serde(rename = "ORIGINATOR_POSITION")] - pub originator_position: Option, - #[serde(rename = "ORIGINATOR_PHONE")] - pub originator_phone: Option, - #[serde(rename = "ORIGINATOR_EMAIL")] - pub originator_email: Option, - #[serde(rename = "ORIGINATOR_ADDRESS")] - pub originator_address: Option, - #[serde(rename = "TECH_ORG")] - pub tech_org: Option, - #[serde(rename = "TECH_POC")] - pub tech_poc: Option, - #[serde(rename = "TECH_POSITION")] - pub tech_position: Option, - #[serde(rename = "TECH_PHONE")] - pub tech_phone: Option, - #[serde(rename = "TECH_EMAIL")] - pub tech_email: Option, - #[serde(rename = "TECH_ADDRESS")] - pub tech_address: Option, - #[serde(rename = "PREVIOUS_MESSAGE_ID")] - pub previous_message_id: Option, - #[serde(rename = "NEXT_MESSAGE_ID")] - pub next_message_id: Option, - #[serde(rename = "ADM_MSG_LINK")] - pub adm_msg_link: Option, - #[serde(rename = "CDM_MSG_LINK")] - pub cdm_msg_link: Option, - #[serde(rename = "PRM_MSG_LINK")] - pub prm_msg_link: Option, - #[serde(rename = "RDM_MSG_LINK")] - pub rdm_msg_link: Option, - #[serde(rename = "TDM_MSG_LINK")] - pub tdm_msg_link: Option, - #[serde(rename = "OPERATOR")] - pub operator: Option, - #[serde(rename = "OWNER")] - pub owner: Option, - #[serde(rename = "COUNTRY")] - pub country: Option, - #[serde(rename = "CONSTELLATION")] - pub constellation: Option, - #[serde(rename = "OBJECT_TYPE")] - pub object_type: Option, - #[serde(rename = "TIME_SYSTEM")] - pub time_system: String, - #[serde(rename = "EPOCH_TZERO")] - pub epoch_tzero: schema_common::xml_schema_types::EpochType, - #[serde(rename = "OPS_STATUS")] - pub ops_status: Option, - #[serde(rename = "ORBIT_CATEGORY")] - pub orbit_category: Option, - #[serde(rename = "OCM_DATA_ELEMENTS")] - pub ocm_data_elements: Option, - #[serde(rename = "SCLK_OFFSET_AT_EPOCH")] - pub sclk_offset_at_epoch: Option, - #[serde(rename = "SCLK_SEC_PER_SI_SEC")] - pub sclk_sec_per_si_sec: Option, - #[serde(rename = "PREVIOUS_MESSAGE_EPOCH")] - pub previous_message_epoch: Option, - #[serde(rename = "NEXT_MESSAGE_EPOCH")] - pub next_message_epoch: Option, - #[serde(rename = "START_TIME")] - pub start_time: Option, - #[serde(rename = "STOP_TIME")] - pub stop_time: Option, - #[serde(rename = "TIME_SPAN")] - pub time_span: Option, - #[serde(rename = "TAIMUTC_AT_TZERO")] - pub taimutc_at_tzero: Option, - #[serde(rename = "NEXT_LEAP_EPOCH")] - pub next_leap_epoch: Option, - #[serde(rename = "NEXT_LEAP_TAIMUTC")] - pub next_leap_taimutc: Option, - #[serde(rename = "UT1MUTC_AT_TZERO")] - pub ut1mutc_at_tzero: Option, - #[serde(rename = "EOP_SOURCE")] - pub eop_source: Option, - #[serde(rename = "INTERP_METHOD_EOP")] - pub interp_method_eop: Option, - #[serde(rename = "CELESTIAL_SOURCE")] - pub celestial_source: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmSegment { + #[serde(rename = "metadata")] + pub metadata: common::OcmMetadata, + #[serde(rename = "data")] + pub data: common::OcmData, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmData { - #[serde(rename = "traj")] - pub traj_list: Vec, - #[serde(rename = "phys")] - pub phys: Option, - #[serde(rename = "cov")] - pub cov_list: Vec, - #[serde(rename = "man")] - pub man_list: Vec, - #[serde(rename = "pert")] - pub pert: Option, - #[serde(rename = "od")] - pub od: Option, - #[serde(rename = "user")] - pub user: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmMetadata { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "OBJECT_NAME")] + pub object_name: Option, + #[serde(rename = "INTERNATIONAL_DESIGNATOR")] + pub international_designator: Option, + #[serde(rename = "CATALOG_NAME")] + pub catalog_name: Option, + #[serde(rename = "OBJECT_DESIGNATOR")] + pub object_designator: Option, + #[serde(rename = "ALTERNATE_NAMES")] + pub alternate_names: Option, + #[serde(rename = "ORIGINATOR_POC")] + pub originator_poc: Option, + #[serde(rename = "ORIGINATOR_POSITION")] + pub originator_position: Option, + #[serde(rename = "ORIGINATOR_PHONE")] + pub originator_phone: Option, + #[serde(rename = "ORIGINATOR_EMAIL")] + pub originator_email: Option, + #[serde(rename = "ORIGINATOR_ADDRESS")] + pub originator_address: Option, + #[serde(rename = "TECH_ORG")] + pub tech_org: Option, + #[serde(rename = "TECH_POC")] + pub tech_poc: Option, + #[serde(rename = "TECH_POSITION")] + pub tech_position: Option, + #[serde(rename = "TECH_PHONE")] + pub tech_phone: Option, + #[serde(rename = "TECH_EMAIL")] + pub tech_email: Option, + #[serde(rename = "TECH_ADDRESS")] + pub tech_address: Option, + #[serde(rename = "PREVIOUS_MESSAGE_ID")] + pub previous_message_id: Option, + #[serde(rename = "NEXT_MESSAGE_ID")] + pub next_message_id: Option, + #[serde(rename = "ADM_MSG_LINK")] + pub adm_msg_link: Option, + #[serde(rename = "CDM_MSG_LINK")] + pub cdm_msg_link: Option, + #[serde(rename = "PRM_MSG_LINK")] + pub prm_msg_link: Option, + #[serde(rename = "RDM_MSG_LINK")] + pub rdm_msg_link: Option, + #[serde(rename = "TDM_MSG_LINK")] + pub tdm_msg_link: Option, + #[serde(rename = "OPERATOR")] + pub operator: Option, + #[serde(rename = "OWNER")] + pub owner: Option, + #[serde(rename = "COUNTRY")] + pub country: Option, + #[serde(rename = "CONSTELLATION")] + pub constellation: Option, + #[serde(rename = "OBJECT_TYPE")] + pub object_type: Option, + #[serde(rename = "TIME_SYSTEM")] + pub time_system: String, + #[serde(rename = "EPOCH_TZERO")] + pub epoch_tzero: common::EpochType, + #[serde(rename = "OPS_STATUS")] + pub ops_status: Option, + #[serde(rename = "ORBIT_CATEGORY")] + pub orbit_category: Option, + #[serde(rename = "OCM_DATA_ELEMENTS")] + pub ocm_data_elements: Option, + #[serde(rename = "SCLK_OFFSET_AT_EPOCH")] + pub sclk_offset_at_epoch: Option, + #[serde(rename = "SCLK_SEC_PER_SI_SEC")] + pub sclk_sec_per_si_sec: Option, + #[serde(rename = "PREVIOUS_MESSAGE_EPOCH")] + pub previous_message_epoch: Option, + #[serde(rename = "NEXT_MESSAGE_EPOCH")] + pub next_message_epoch: Option, + #[serde(rename = "START_TIME")] + pub start_time: Option, + #[serde(rename = "STOP_TIME")] + pub stop_time: Option, + #[serde(rename = "TIME_SPAN")] + pub time_span: Option, + #[serde(rename = "TAIMUTC_AT_TZERO")] + pub taimutc_at_tzero: Option, + #[serde(rename = "NEXT_LEAP_EPOCH")] + pub next_leap_epoch: Option, + #[serde(rename = "NEXT_LEAP_TAIMUTC")] + pub next_leap_taimutc: Option, + #[serde(rename = "UT1MUTC_AT_TZERO")] + pub ut1mutc_at_tzero: Option, + #[serde(rename = "EOP_SOURCE")] + pub eop_source: Option, + #[serde(rename = "INTERP_METHOD_EOP")] + pub interp_method_eop: Option, + #[serde(rename = "CELESTIAL_SOURCE")] + pub celestial_source: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmTrajStateType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "TRAJ_ID")] - pub traj_id: Option, - #[serde(rename = "TRAJ_PREV_ID")] - pub traj_prev_id: Option, - #[serde(rename = "TRAJ_NEXT_ID")] - pub traj_next_id: Option, - #[serde(rename = "TRAJ_BASIS")] - pub traj_basis: Option, - #[serde(rename = "TRAJ_BASIS_ID")] - pub traj_basis_id: Option, - #[serde(rename = "INTERPOLATION")] - pub interpolation: Option, - #[serde(rename = "INTERPOLATION_DEGREE")] - pub interpolation_degree: Option, - #[serde(rename = "PROPAGATOR")] - pub propagator: Option, - #[serde(rename = "CENTER_NAME")] - pub center_name: String, - #[serde(rename = "TRAJ_REF_FRAME")] - pub traj_ref_frame: String, - #[serde(rename = "TRAJ_FRAME_EPOCH")] - pub traj_frame_epoch: Option, - #[serde(rename = "USEABLE_START_TIME")] - pub useable_start_time: Option, - #[serde(rename = "USEABLE_STOP_TIME")] - pub useable_stop_time: Option, - #[serde(rename = "ORB_REVNUM")] - pub orb_revnum: Option, - #[serde(rename = "ORB_REVNUM_BASIS")] - pub orb_revnum_basis: Option, - #[serde(rename = "TRAJ_TYPE")] - pub traj_type: String, - #[serde(rename = "ORB_AVERAGING")] - pub orb_averaging: Option, - #[serde(rename = "TRAJ_UNITS")] - pub traj_units: Option, - #[serde(rename = "trajLine")] - pub traj_line_list: Vec, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmData { + #[serde(rename = "traj")] + pub traj_list: Vec, + #[serde(rename = "phys")] + pub phys: Option, + #[serde(rename = "cov")] + pub cov_list: Vec, + #[serde(rename = "man")] + pub man_list: Vec, + #[serde(rename = "pert")] + pub pert: Option, + #[serde(rename = "od")] + pub od: Option, + #[serde(rename = "user")] + pub user: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmPhysicalDescriptionType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "MANUFACTURER")] - pub manufacturer: Option, - #[serde(rename = "BUS_MODEL")] - pub bus_model: Option, - #[serde(rename = "DOCKED_WITH")] - pub docked_with: Option, - #[serde(rename = "DRAG_CONST_AREA")] - pub drag_const_area: Option, - #[serde(rename = "DRAG_COEFF_NOM")] - pub drag_coeff_nom: Option, - #[serde(rename = "DRAG_UNCERTAINTY")] - pub drag_uncertainty: Option, - #[serde(rename = "INITIAL_WET_MASS")] - pub initial_wet_mass: Option, - #[serde(rename = "WET_MASS")] - pub wet_mass: Option, - #[serde(rename = "DRY_MASS")] - pub dry_mass: Option, - #[serde(rename = "OEB_PARENT_FRAME")] - pub oeb_parent_frame: Option, - #[serde(rename = "OEB_PARENT_FRAME_EPOCH")] - pub oeb_parent_frame_epoch: Option, - #[serde(rename = "OEB_Q1")] - pub oeb_q1: Option, - #[serde(rename = "OEB_Q2")] - pub oeb_q2: Option, - #[serde(rename = "OEB_Q3")] - pub oeb_q3: Option, - #[serde(rename = "OEB_QC")] - pub oeb_qc: Option, - #[serde(rename = "OEB_MAX")] - pub oeb_max: Option, - #[serde(rename = "OEB_INT")] - pub oeb_int: Option, - #[serde(rename = "OEB_MIN")] - pub oeb_min: Option, - #[serde(rename = "AREA_ALONG_OEB_MAX")] - pub area_along_oeb_max: Option, - #[serde(rename = "AREA_ALONG_OEB_INT")] - pub area_along_oeb_int: Option, - #[serde(rename = "AREA_ALONG_OEB_MIN")] - pub area_along_oeb_min: Option, - #[serde(rename = "AREA_MIN_FOR_PC")] - pub area_min_for_pc: Option, - #[serde(rename = "AREA_MAX_FOR_PC")] - pub area_max_for_pc: Option, - #[serde(rename = "AREA_TYP_FOR_PC")] - pub area_typ_for_pc: Option, - #[serde(rename = "RCS")] - pub rcs: Option, - #[serde(rename = "RCS_MIN")] - pub rcs_min: Option, - #[serde(rename = "RCS_MAX")] - pub rcs_max: Option, - #[serde(rename = "SRP_CONST_AREA")] - pub srp_const_area: Option, - #[serde(rename = "SOLAR_RAD_COEFF")] - pub solar_rad_coeff: Option, - #[serde(rename = "SOLAR_RAD_UNCERTAINTY")] - pub solar_rad_uncertainty: Option, - #[serde(rename = "VM_ABSOLUTE")] - pub vm_absolute: Option, - #[serde(rename = "VM_APPARENT_MIN")] - pub vm_apparent_min: Option, - #[serde(rename = "VM_APPARENT")] - pub vm_apparent: Option, - #[serde(rename = "VM_APPARENT_MAX")] - pub vm_apparent_max: Option, - #[serde(rename = "REFLECTANCE")] - pub reflectance: Option, - #[serde(rename = "ATT_CONTROL_MODE")] - pub att_control_mode: Option, - #[serde(rename = "ATT_ACTUATOR_TYPE")] - pub att_actuator_type: Option, - #[serde(rename = "ATT_KNOWLEDGE")] - pub att_knowledge: Option, - #[serde(rename = "ATT_CONTROL")] - pub att_control: Option, - #[serde(rename = "ATT_POINTING")] - pub att_pointing: Option, - #[serde(rename = "AVG_MANEUVER_FREQ")] - pub avg_maneuver_freq: Option, - #[serde(rename = "MAX_THRUST")] - pub max_thrust: Option, - #[serde(rename = "DV_BOL")] - pub dv_bol: Option, - #[serde(rename = "DV_REMAINING")] - pub dv_remaining: Option, - #[serde(rename = "IXX")] - pub ixx: Option, - #[serde(rename = "IYY")] - pub iyy: Option, - #[serde(rename = "IZZ")] - pub izz: Option, - #[serde(rename = "IXY")] - pub ixy: Option, - #[serde(rename = "IXZ")] - pub ixz: Option, - #[serde(rename = "IYZ")] - pub iyz: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmTrajStateType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "TRAJ_ID")] + pub traj_id: Option, + #[serde(rename = "TRAJ_PREV_ID")] + pub traj_prev_id: Option, + #[serde(rename = "TRAJ_NEXT_ID")] + pub traj_next_id: Option, + #[serde(rename = "TRAJ_BASIS")] + pub traj_basis: Option, + #[serde(rename = "TRAJ_BASIS_ID")] + pub traj_basis_id: Option, + #[serde(rename = "INTERPOLATION")] + pub interpolation: Option, + #[serde(rename = "INTERPOLATION_DEGREE")] + pub interpolation_degree: Option, + #[serde(rename = "PROPAGATOR")] + pub propagator: Option, + #[serde(rename = "CENTER_NAME")] + pub center_name: String, + #[serde(rename = "TRAJ_REF_FRAME")] + pub traj_ref_frame: String, + #[serde(rename = "TRAJ_FRAME_EPOCH")] + pub traj_frame_epoch: Option, + #[serde(rename = "USEABLE_START_TIME")] + pub useable_start_time: Option, + #[serde(rename = "USEABLE_STOP_TIME")] + pub useable_stop_time: Option, + #[serde(rename = "ORB_REVNUM")] + pub orb_revnum: Option, + #[serde(rename = "ORB_REVNUM_BASIS")] + pub orb_revnum_basis: Option, + #[serde(rename = "TRAJ_TYPE")] + pub traj_type: String, + #[serde(rename = "ORB_AVERAGING")] + pub orb_averaging: Option, + #[serde(rename = "TRAJ_UNITS")] + pub traj_units: Option, + #[serde(rename = "trajLine")] + pub traj_line_list: Vec, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmCovarianceMatrixType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "COV_ID")] - pub cov_id: Option, - #[serde(rename = "COV_PREV_ID")] - pub cov_prev_id: Option, - #[serde(rename = "COV_NEXT_ID")] - pub cov_next_id: Option, - #[serde(rename = "COV_BASIS")] - pub cov_basis: Option, - #[serde(rename = "COV_BASIS_ID")] - pub cov_basis_id: Option, - #[serde(rename = "COV_REF_FRAME")] - pub cov_ref_frame: String, - #[serde(rename = "COV_FRAME_EPOCH")] - pub cov_frame_epoch: Option, - #[serde(rename = "COV_SCALE_MIN")] - pub cov_scale_min: Option, - #[serde(rename = "COV_SCALE_MAX")] - pub cov_scale_max: Option, - #[serde(rename = "COV_CONFIDENCE")] - pub cov_confidence: Option, - #[serde(rename = "COV_TYPE")] - pub cov_type: String, - #[serde(rename = "COV_ORDERING")] - pub cov_ordering: schema_common::xml_schema_types::CovOrderType, - #[serde(rename = "COV_UNITS")] - pub cov_units: Option, - #[serde(rename = "covLine")] - pub cov_line_list: Vec, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmPhysicalDescriptionType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "MANUFACTURER")] + pub manufacturer: Option, + #[serde(rename = "BUS_MODEL")] + pub bus_model: Option, + #[serde(rename = "DOCKED_WITH")] + pub docked_with: Option, + #[serde(rename = "DRAG_CONST_AREA")] + pub drag_const_area: Option, + #[serde(rename = "DRAG_COEFF_NOM")] + pub drag_coeff_nom: Option, + #[serde(rename = "DRAG_UNCERTAINTY")] + pub drag_uncertainty: Option, + #[serde(rename = "INITIAL_WET_MASS")] + pub initial_wet_mass: Option, + #[serde(rename = "WET_MASS")] + pub wet_mass: Option, + #[serde(rename = "DRY_MASS")] + pub dry_mass: Option, + #[serde(rename = "OEB_PARENT_FRAME")] + pub oeb_parent_frame: Option, + #[serde(rename = "OEB_PARENT_FRAME_EPOCH")] + pub oeb_parent_frame_epoch: Option, + #[serde(rename = "OEB_Q1")] + pub oeb_q1: Option, + #[serde(rename = "OEB_Q2")] + pub oeb_q2: Option, + #[serde(rename = "OEB_Q3")] + pub oeb_q3: Option, + #[serde(rename = "OEB_QC")] + pub oeb_qc: Option, + #[serde(rename = "OEB_MAX")] + pub oeb_max: Option, + #[serde(rename = "OEB_INT")] + pub oeb_int: Option, + #[serde(rename = "OEB_MIN")] + pub oeb_min: Option, + #[serde(rename = "AREA_ALONG_OEB_MAX")] + pub area_along_oeb_max: Option, + #[serde(rename = "AREA_ALONG_OEB_INT")] + pub area_along_oeb_int: Option, + #[serde(rename = "AREA_ALONG_OEB_MIN")] + pub area_along_oeb_min: Option, + #[serde(rename = "AREA_MIN_FOR_PC")] + pub area_min_for_pc: Option, + #[serde(rename = "AREA_MAX_FOR_PC")] + pub area_max_for_pc: Option, + #[serde(rename = "AREA_TYP_FOR_PC")] + pub area_typ_for_pc: Option, + #[serde(rename = "RCS")] + pub rcs: Option, + #[serde(rename = "RCS_MIN")] + pub rcs_min: Option, + #[serde(rename = "RCS_MAX")] + pub rcs_max: Option, + #[serde(rename = "SRP_CONST_AREA")] + pub srp_const_area: Option, + #[serde(rename = "SOLAR_RAD_COEFF")] + pub solar_rad_coeff: Option, + #[serde(rename = "SOLAR_RAD_UNCERTAINTY")] + pub solar_rad_uncertainty: Option, + #[serde(rename = "VM_ABSOLUTE")] + pub vm_absolute: Option, + #[serde(rename = "VM_APPARENT_MIN")] + pub vm_apparent_min: Option, + #[serde(rename = "VM_APPARENT")] + pub vm_apparent: Option, + #[serde(rename = "VM_APPARENT_MAX")] + pub vm_apparent_max: Option, + #[serde(rename = "REFLECTANCE")] + pub reflectance: Option, + #[serde(rename = "ATT_CONTROL_MODE")] + pub att_control_mode: Option, + #[serde(rename = "ATT_ACTUATOR_TYPE")] + pub att_actuator_type: Option, + #[serde(rename = "ATT_KNOWLEDGE")] + pub att_knowledge: Option, + #[serde(rename = "ATT_CONTROL")] + pub att_control: Option, + #[serde(rename = "ATT_POINTING")] + pub att_pointing: Option, + #[serde(rename = "AVG_MANEUVER_FREQ")] + pub avg_maneuver_freq: Option, + #[serde(rename = "MAX_THRUST")] + pub max_thrust: Option, + #[serde(rename = "DV_BOL")] + pub dv_bol: Option, + #[serde(rename = "DV_REMAINING")] + pub dv_remaining: Option, + #[serde(rename = "IXX")] + pub ixx: Option, + #[serde(rename = "IYY")] + pub iyy: Option, + #[serde(rename = "IZZ")] + pub izz: Option, + #[serde(rename = "IXY")] + pub ixy: Option, + #[serde(rename = "IXZ")] + pub ixz: Option, + #[serde(rename = "IYZ")] + pub iyz: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmManeuverParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "MAN_ID")] - pub man_id: String, - #[serde(rename = "MAN_PREV_ID")] - pub man_prev_id: Option, - #[serde(rename = "MAN_NEXT_ID")] - pub man_next_id: Option, - #[serde(rename = "MAN_BASIS")] - pub man_basis: Option, - #[serde(rename = "MAN_BASIS_ID")] - pub man_basis_id: Option, - #[serde(rename = "MAN_DEVICE_ID")] - pub man_device_id: String, - #[serde(rename = "MAN_PREV_EPOCH")] - pub man_prev_epoch: Option, - #[serde(rename = "MAN_NEXT_EPOCH")] - pub man_next_epoch: Option, - #[serde(rename = "MAN_PURPOSE")] - pub man_purpose: Option, - #[serde(rename = "MAN_PRED_SOURCE")] - pub man_pred_source: Option, - #[serde(rename = "MAN_REF_FRAME")] - pub man_ref_frame: String, - #[serde(rename = "MAN_FRAME_EPOCH")] - pub man_frame_epoch: Option, - #[serde(rename = "GRAV_ASSIST_NAME")] - pub grav_assist_name: Option, - #[serde(rename = "DC_TYPE")] - pub dc_type: schema_common::xml_schema_types::ManDcType, - #[serde(rename = "DC_WIN_OPEN")] - pub dc_win_open: Option, - #[serde(rename = "DC_WIN_CLOSE")] - pub dc_win_close: Option, - #[serde(rename = "DC_MIN_CYCLES")] - pub dc_min_cycles: Option, - #[serde(rename = "DC_MAX_CYCLES")] - pub dc_max_cycles: Option, - #[serde(rename = "DC_EXEC_START")] - pub dc_exec_start: Option, - #[serde(rename = "DC_EXEC_STOP")] - pub dc_exec_stop: Option, - #[serde(rename = "DC_REF_TIME")] - pub dc_ref_time: Option, - #[serde(rename = "DC_TIME_PULSE_DURATION")] - pub dc_time_pulse_duration: Option, - #[serde(rename = "DC_TIME_PULSE_PERIOD")] - pub dc_time_pulse_period: Option, - #[serde(rename = "DC_REF_DIR")] - pub dc_ref_dir: Option, - #[serde(rename = "DC_BODY_FRAME")] - pub dc_body_frame: Option, - #[serde(rename = "DC_BODY_TRIGGER")] - pub dc_body_trigger: Option, - #[serde(rename = "DC_PA_START_ANGLE")] - pub dc_pa_start_angle: Option, - #[serde(rename = "DC_PA_STOP_ANGLE")] - pub dc_pa_stop_angle: Option, - #[serde(rename = "MAN_COMPOSITION")] - pub man_composition: String, - #[serde(rename = "MAN_UNITS")] - pub man_units: Option, - #[serde(rename = "manLine")] - pub man_line_list: Vec, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmCovarianceMatrixType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "COV_ID")] + pub cov_id: Option, + #[serde(rename = "COV_PREV_ID")] + pub cov_prev_id: Option, + #[serde(rename = "COV_NEXT_ID")] + pub cov_next_id: Option, + #[serde(rename = "COV_BASIS")] + pub cov_basis: Option, + #[serde(rename = "COV_BASIS_ID")] + pub cov_basis_id: Option, + #[serde(rename = "COV_REF_FRAME")] + pub cov_ref_frame: String, + #[serde(rename = "COV_FRAME_EPOCH")] + pub cov_frame_epoch: Option, + #[serde(rename = "COV_SCALE_MIN")] + pub cov_scale_min: Option, + #[serde(rename = "COV_SCALE_MAX")] + pub cov_scale_max: Option, + #[serde(rename = "COV_CONFIDENCE")] + pub cov_confidence: Option, + #[serde(rename = "COV_TYPE")] + pub cov_type: String, + #[serde(rename = "COV_ORDERING")] + pub cov_ordering: common::CovOrderType, + #[serde(rename = "COV_UNITS")] + pub cov_units: Option, + #[serde(rename = "covLine")] + pub cov_line_list: Vec, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmPerturbationsType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "ATMOSPHERIC_MODEL")] - pub atmospheric_model: Option, - #[serde(rename = "GRAVITY_MODEL")] - pub gravity_model: Option, - #[serde(rename = "EQUATORIAL_RADIUS")] - pub equatorial_radius: Option, - #[serde(rename = "GM")] - pub gm: Option, - #[serde(rename = "N_BODY_PERTURBATIONS")] - pub n_body_perturbations: Option, - #[serde(rename = "CENTRAL_BODY_ROTATION")] - pub central_body_rotation: Option, - #[serde(rename = "OBLATE_FLATTENING")] - pub oblate_flattening: Option, - #[serde(rename = "OCEAN_TIDES_MODEL")] - pub ocean_tides_model: Option, - #[serde(rename = "SOLID_TIDES_MODEL")] - pub solid_tides_model: Option, - #[serde(rename = "REDUCTION_THEORY")] - pub reduction_theory: Option, - #[serde(rename = "ALBEDO_MODEL")] - pub albedo_model: Option, - #[serde(rename = "ALBEDO_GRID_SIZE")] - pub albedo_grid_size: Option, - #[serde(rename = "SHADOW_MODEL")] - pub shadow_model: Option, - #[serde(rename = "SHADOW_BODIES")] - pub shadow_bodies: Option, - #[serde(rename = "SRP_MODEL")] - pub srp_model: Option, - #[serde(rename = "SW_DATA_SOURCE")] - pub sw_data_source: Option, - #[serde(rename = "SW_DATA_EPOCH")] - pub sw_data_epoch: Option, - #[serde(rename = "SW_INTERP_METHOD")] - pub sw_interp_method: Option, - #[serde(rename = "FIXED_GEOMAG_KP")] - pub fixed_geomag_kp: Option, - #[serde(rename = "FIXED_GEOMAG_AP")] - pub fixed_geomag_ap: Option, - #[serde(rename = "FIXED_GEOMAG_DST")] - pub fixed_geomag_dst: Option, - #[serde(rename = "FIXED_F10P7")] - pub fixed_f10p7: Option, - #[serde(rename = "FIXED_F10P7_MEAN")] - pub fixed_f10p7_mean: Option, - #[serde(rename = "FIXED_M10P7")] - pub fixed_m10p7: Option, - #[serde(rename = "FIXED_M10P7_MEAN")] - pub fixed_m10p7_mean: Option, - #[serde(rename = "FIXED_S10P7")] - pub fixed_s10p7: Option, - #[serde(rename = "FIXED_S10P7_MEAN")] - pub fixed_s10p7_mean: Option, - #[serde(rename = "FIXED_Y10P7")] - pub fixed_y10p7: Option, - #[serde(rename = "FIXED_Y10P7_MEAN")] - pub fixed_y10p7_mean: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmManeuverParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "MAN_ID")] + pub man_id: String, + #[serde(rename = "MAN_PREV_ID")] + pub man_prev_id: Option, + #[serde(rename = "MAN_NEXT_ID")] + pub man_next_id: Option, + #[serde(rename = "MAN_BASIS")] + pub man_basis: Option, + #[serde(rename = "MAN_BASIS_ID")] + pub man_basis_id: Option, + #[serde(rename = "MAN_DEVICE_ID")] + pub man_device_id: String, + #[serde(rename = "MAN_PREV_EPOCH")] + pub man_prev_epoch: Option, + #[serde(rename = "MAN_NEXT_EPOCH")] + pub man_next_epoch: Option, + #[serde(rename = "MAN_PURPOSE")] + pub man_purpose: Option, + #[serde(rename = "MAN_PRED_SOURCE")] + pub man_pred_source: Option, + #[serde(rename = "MAN_REF_FRAME")] + pub man_ref_frame: String, + #[serde(rename = "MAN_FRAME_EPOCH")] + pub man_frame_epoch: Option, + #[serde(rename = "GRAV_ASSIST_NAME")] + pub grav_assist_name: Option, + #[serde(rename = "DC_TYPE")] + pub dc_type: common::ManDcType, + #[serde(rename = "DC_WIN_OPEN")] + pub dc_win_open: Option, + #[serde(rename = "DC_WIN_CLOSE")] + pub dc_win_close: Option, + #[serde(rename = "DC_MIN_CYCLES")] + pub dc_min_cycles: Option, + #[serde(rename = "DC_MAX_CYCLES")] + pub dc_max_cycles: Option, + #[serde(rename = "DC_EXEC_START")] + pub dc_exec_start: Option, + #[serde(rename = "DC_EXEC_STOP")] + pub dc_exec_stop: Option, + #[serde(rename = "DC_REF_TIME")] + pub dc_ref_time: Option, + #[serde(rename = "DC_TIME_PULSE_DURATION")] + pub dc_time_pulse_duration: Option, + #[serde(rename = "DC_TIME_PULSE_PERIOD")] + pub dc_time_pulse_period: Option, + #[serde(rename = "DC_REF_DIR")] + pub dc_ref_dir: Option, + #[serde(rename = "DC_BODY_FRAME")] + pub dc_body_frame: Option, + #[serde(rename = "DC_BODY_TRIGGER")] + pub dc_body_trigger: Option, + #[serde(rename = "DC_PA_START_ANGLE")] + pub dc_pa_start_angle: Option, + #[serde(rename = "DC_PA_STOP_ANGLE")] + pub dc_pa_stop_angle: Option, + #[serde(rename = "MAN_COMPOSITION")] + pub man_composition: String, + #[serde(rename = "MAN_UNITS")] + pub man_units: Option, + #[serde(rename = "manLine")] + pub man_line_list: Vec, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmPerturbationsType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "ATMOSPHERIC_MODEL")] + pub atmospheric_model: Option, + #[serde(rename = "GRAVITY_MODEL")] + pub gravity_model: Option, + #[serde(rename = "EQUATORIAL_RADIUS")] + pub equatorial_radius: Option, + #[serde(rename = "GM")] + pub gm: Option, + #[serde(rename = "N_BODY_PERTURBATIONS")] + pub n_body_perturbations: Option, + #[serde(rename = "CENTRAL_BODY_ROTATION")] + pub central_body_rotation: Option, + #[serde(rename = "OBLATE_FLATTENING")] + pub oblate_flattening: Option, + #[serde(rename = "OCEAN_TIDES_MODEL")] + pub ocean_tides_model: Option, + #[serde(rename = "SOLID_TIDES_MODEL")] + pub solid_tides_model: Option, + #[serde(rename = "REDUCTION_THEORY")] + pub reduction_theory: Option, + #[serde(rename = "ALBEDO_MODEL")] + pub albedo_model: Option, + #[serde(rename = "ALBEDO_GRID_SIZE")] + pub albedo_grid_size: Option, + #[serde(rename = "SHADOW_MODEL")] + pub shadow_model: Option, + #[serde(rename = "SHADOW_BODIES")] + pub shadow_bodies: Option, + #[serde(rename = "SRP_MODEL")] + pub srp_model: Option, + #[serde(rename = "SW_DATA_SOURCE")] + pub sw_data_source: Option, + #[serde(rename = "SW_DATA_EPOCH")] + pub sw_data_epoch: Option, + #[serde(rename = "SW_INTERP_METHOD")] + pub sw_interp_method: Option, + #[serde(rename = "FIXED_GEOMAG_KP")] + pub fixed_geomag_kp: Option, + #[serde(rename = "FIXED_GEOMAG_AP")] + pub fixed_geomag_ap: Option, + #[serde(rename = "FIXED_GEOMAG_DST")] + pub fixed_geomag_dst: Option, + #[serde(rename = "FIXED_F10P7")] + pub fixed_f10p7: Option, + #[serde(rename = "FIXED_F10P7_MEAN")] + pub fixed_f10p7_mean: Option, + #[serde(rename = "FIXED_M10P7")] + pub fixed_m10p7: Option, + #[serde(rename = "FIXED_M10P7_MEAN")] + pub fixed_m10p7_mean: Option, + #[serde(rename = "FIXED_S10P7")] + pub fixed_s10p7: Option, + #[serde(rename = "FIXED_S10P7_MEAN")] + pub fixed_s10p7_mean: Option, + #[serde(rename = "FIXED_Y10P7")] + pub fixed_y10p7: Option, + #[serde(rename = "FIXED_Y10P7_MEAN")] + pub fixed_y10p7_mean: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OcmOdParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "OD_ID")] - pub od_id: String, - #[serde(rename = "OD_PREV_ID")] - pub od_prev_id: Option, - #[serde(rename = "OD_METHOD")] - pub od_method: String, - #[serde(rename = "OD_EPOCH")] - pub od_epoch: schema_common::xml_schema_types::EpochType, - #[serde(rename = "DAYS_SINCE_FIRST_OBS")] - pub days_since_first_obs: Option, - #[serde(rename = "DAYS_SINCE_LAST_OBS")] - pub days_since_last_obs: Option, - #[serde(rename = "RECOMMENDED_OD_SPAN")] - pub recommended_od_span: Option, - #[serde(rename = "ACTUAL_OD_SPAN")] - pub actual_od_span: Option, - #[serde(rename = "OBS_AVAILABLE")] - pub obs_available: Option, - #[serde(rename = "OBS_USED")] - pub obs_used: Option, - #[serde(rename = "TRACKS_AVAILABLE")] - pub tracks_available: Option, - #[serde(rename = "TRACKS_USED")] - pub tracks_used: Option, - #[serde(rename = "MAXIMUM_OBS_GAP")] - pub maximum_obs_gap: Option, - #[serde(rename = "OD_EPOCH_EIGMAJ")] - pub od_epoch_eigmaj: Option, - #[serde(rename = "OD_EPOCH_EIGINT")] - pub od_epoch_eigint: Option, - #[serde(rename = "OD_EPOCH_EIGMIN")] - pub od_epoch_eigmin: Option, - #[serde(rename = "OD_MAX_PRED_EIGMAJ")] - pub od_max_pred_eigmaj: Option, - #[serde(rename = "OD_MIN_PRED_EIGMIN")] - pub od_min_pred_eigmin: Option, - #[serde(rename = "OD_CONFIDENCE")] - pub od_confidence: Option, - #[serde(rename = "GDOP")] - pub gdop: Option, - #[serde(rename = "SOLVE_N")] - pub solve_n: Option, - #[serde(rename = "SOLVE_STATES")] - pub solve_states: Option, - #[serde(rename = "CONSIDER_N")] - pub consider_n: Option, - #[serde(rename = "CONSIDER_PARAMS")] - pub consider_params: Option, - #[serde(rename = "SEDR")] - pub sedr: Option, - #[serde(rename = "SENSORS_N")] - pub sensors_n: Option, - #[serde(rename = "SENSORS")] - pub sensors: Option, - #[serde(rename = "WEIGHTED_RMS")] - pub weighted_rms: Option, - #[serde(rename = "DATA_TYPES")] - pub data_types: Option, - } - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OcmOdParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "OD_ID")] + pub od_id: String, + #[serde(rename = "OD_PREV_ID")] + pub od_prev_id: Option, + #[serde(rename = "OD_METHOD")] + pub od_method: String, + #[serde(rename = "OD_EPOCH")] + pub od_epoch: common::EpochType, + #[serde(rename = "DAYS_SINCE_FIRST_OBS")] + pub days_since_first_obs: Option, + #[serde(rename = "DAYS_SINCE_LAST_OBS")] + pub days_since_last_obs: Option, + #[serde(rename = "RECOMMENDED_OD_SPAN")] + pub recommended_od_span: Option, + #[serde(rename = "ACTUAL_OD_SPAN")] + pub actual_od_span: Option, + #[serde(rename = "OBS_AVAILABLE")] + pub obs_available: Option, + #[serde(rename = "OBS_USED")] + pub obs_used: Option, + #[serde(rename = "TRACKS_AVAILABLE")] + pub tracks_available: Option, + #[serde(rename = "TRACKS_USED")] + pub tracks_used: Option, + #[serde(rename = "MAXIMUM_OBS_GAP")] + pub maximum_obs_gap: Option, + #[serde(rename = "OD_EPOCH_EIGMAJ")] + pub od_epoch_eigmaj: Option, + #[serde(rename = "OD_EPOCH_EIGINT")] + pub od_epoch_eigint: Option, + #[serde(rename = "OD_EPOCH_EIGMIN")] + pub od_epoch_eigmin: Option, + #[serde(rename = "OD_MAX_PRED_EIGMAJ")] + pub od_max_pred_eigmaj: Option, + #[serde(rename = "OD_MIN_PRED_EIGMIN")] + pub od_min_pred_eigmin: Option, + #[serde(rename = "OD_CONFIDENCE")] + pub od_confidence: Option, + #[serde(rename = "GDOP")] + pub gdop: Option, + #[serde(rename = "SOLVE_N")] + pub solve_n: Option, + #[serde(rename = "SOLVE_STATES")] + pub solve_states: Option, + #[serde(rename = "CONSIDER_N")] + pub consider_n: Option, + #[serde(rename = "CONSIDER_PARAMS")] + pub consider_params: Option, + #[serde(rename = "SEDR")] + pub sedr: Option, + #[serde(rename = "SENSORS_N")] + pub sensors_n: Option, + #[serde(rename = "SENSORS")] + pub sensors: Option, + #[serde(rename = "WEIGHTED_RMS")] + pub weighted_rms: Option, + #[serde(rename = "DATA_TYPES")] + pub data_types: Option, } -pub use schema_ocm::*; diff --git a/crates/lox_core/src/odm/oem.rs b/crates/lox_core/src/odm/oem.rs index 2b65982f..e37c4aa7 100644 --- a/crates/lox_core/src/odm/oem.rs +++ b/crates/lox_core/src/odm/oem.rs @@ -1,76 +1,72 @@ -mod schema_oem { - pub mod xml_schema_types { - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OemType { - #[serde(rename = "header")] - pub header: schema_common::xml_schema_types::OdmHeader, - #[serde(rename = "body")] - pub body: schema_common::xml_schema_types::OemBody, - #[serde(rename = "@id")] - pub id: String, - #[serde(rename = "@version")] - pub version: String, - } +use super::common; - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OemBody { - #[serde(rename = "segment")] - pub segment_list: Vec, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OemType { + #[serde(rename = "header")] + pub header: common::OdmHeader, + #[serde(rename = "body")] + pub body: common::OemBody, + #[serde(rename = "@id")] + pub id: String, + #[serde(rename = "@version")] + pub version: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OemSegment { - #[serde(rename = "metadata")] - pub metadata: schema_common::xml_schema_types::OemMetadata, - #[serde(rename = "data")] - pub data: schema_common::xml_schema_types::OemData, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OemBody { + #[serde(rename = "segment")] + pub segment_list: Vec, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OemMetadata { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "OBJECT_NAME")] - pub object_name: String, - #[serde(rename = "OBJECT_ID")] - pub object_id: String, - #[serde(rename = "CENTER_NAME")] - pub center_name: String, - #[serde(rename = "REF_FRAME")] - pub ref_frame: String, - #[serde(rename = "REF_FRAME_EPOCH")] - pub ref_frame_epoch: Option, - #[serde(rename = "TIME_SYSTEM")] - pub time_system: String, - #[serde(rename = "START_TIME")] - pub start_time: schema_common::xml_schema_types::EpochType, - #[serde(rename = "USEABLE_START_TIME")] - pub useable_start_time: Option, - #[serde(rename = "USEABLE_STOP_TIME")] - pub useable_stop_time: Option, - #[serde(rename = "STOP_TIME")] - pub stop_time: schema_common::xml_schema_types::EpochType, - #[serde(rename = "INTERPOLATION")] - pub interpolation: Option, - #[serde(rename = "INTERPOLATION_DEGREE")] - pub interpolation_degree: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OemSegment { + #[serde(rename = "metadata")] + pub metadata: common::OemMetadata, + #[serde(rename = "data")] + pub data: common::OemData, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OemMetadata { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "OBJECT_NAME")] + pub object_name: String, + #[serde(rename = "OBJECT_ID")] + pub object_id: String, + #[serde(rename = "CENTER_NAME")] + pub center_name: String, + #[serde(rename = "REF_FRAME")] + pub ref_frame: String, + #[serde(rename = "REF_FRAME_EPOCH")] + pub ref_frame_epoch: Option, + #[serde(rename = "TIME_SYSTEM")] + pub time_system: String, + #[serde(rename = "START_TIME")] + pub start_time: common::EpochType, + #[serde(rename = "USEABLE_START_TIME")] + pub useable_start_time: Option, + #[serde(rename = "USEABLE_STOP_TIME")] + pub useable_stop_time: Option, + #[serde(rename = "STOP_TIME")] + pub stop_time: common::EpochType, + #[serde(rename = "INTERPOLATION")] + pub interpolation: Option, + #[serde(rename = "INTERPOLATION_DEGREE")] + pub interpolation_degree: Option, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OemData { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "stateVector")] - pub state_vector_list: Vec, - #[serde(rename = "covarianceMatrix")] - pub covariance_matrix_list: - Vec, - } - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OemData { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "stateVector")] + pub state_vector_list: Vec, + #[serde(rename = "covarianceMatrix")] + pub covariance_matrix_list: Vec, } -pub use schema_oem::*; diff --git a/crates/lox_core/src/odm/omm.rs b/crates/lox_core/src/odm/omm.rs index fdf49c05..28d36c67 100644 --- a/crates/lox_core/src/odm/omm.rs +++ b/crates/lox_core/src/odm/omm.rs @@ -1,198 +1,194 @@ -mod schema_omm { - pub mod xml_schema_types { - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct BStarUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct BTermUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AgomUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ElementSetNoType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RevUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DRevUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DdRevUnits(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct SpacewarnType(#[serde(rename = "$text")] std::string::String); - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OmmType { - #[serde(rename = "header")] - pub header: schema_common::xml_schema_types::OdmHeader, - #[serde(rename = "body")] - pub body: schema_common::xml_schema_types::OmmBody, - #[serde(rename = "@id")] - pub id: String, - #[serde(rename = "@version")] - pub version: String, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OmmBody { - #[serde(rename = "segment")] - pub segment: schema_common::xml_schema_types::OmmSegment, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OmmSegment { - #[serde(rename = "metadata")] - pub metadata: schema_common::xml_schema_types::OmmMetadata, - #[serde(rename = "data")] - pub data: schema_common::xml_schema_types::OmmData, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OmmMetadata { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "OBJECT_NAME")] - pub object_name: String, - #[serde(rename = "OBJECT_ID")] - pub object_id: String, - #[serde(rename = "CENTER_NAME")] - pub center_name: String, - #[serde(rename = "REF_FRAME")] - pub ref_frame: String, - #[serde(rename = "REF_FRAME_EPOCH")] - pub ref_frame_epoch: Option, - #[serde(rename = "TIME_SYSTEM")] - pub time_system: String, - #[serde(rename = "MEAN_ELEMENT_THEORY")] - pub mean_element_theory: String, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OmmData { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "meanElements")] - pub mean_elements: schema_common::xml_schema_types::MeanElementsType, - #[serde(rename = "spacecraftParameters")] - pub spacecraft_parameters: - Option, - #[serde(rename = "tleParameters")] - pub tle_parameters: Option, - #[serde(rename = "covarianceMatrix")] - pub covariance_matrix: Option, - #[serde(rename = "userDefinedParameters")] - pub user_defined_parameters: Option, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct MeanElementsType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "EPOCH")] - pub epoch: schema_common::xml_schema_types::EpochType, - #[serde(rename = "ECCENTRICITY")] - pub eccentricity: schema_common::xml_schema_types::NonNegativeDouble, - #[serde(rename = "INCLINATION")] - pub inclination: schema_common::xml_schema_types::InclinationType, - #[serde(rename = "RA_OF_ASC_NODE")] - pub ra_of_asc_node: schema_common::xml_schema_types::AngleType, - #[serde(rename = "ARG_OF_PERICENTER")] - pub arg_of_pericenter: schema_common::xml_schema_types::AngleType, - #[serde(rename = "MEAN_ANOMALY")] - pub mean_anomaly: schema_common::xml_schema_types::AngleType, - #[serde(rename = "GM")] - pub gm: Option, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct TleParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "EPHEMERIS_TYPE")] - pub ephemeris_type: Option, - #[serde(rename = "CLASSIFICATION_TYPE")] - pub classification_type: Option, - #[serde(rename = "NORAD_CAT_ID")] - pub norad_cat_id: Option, - #[serde(rename = "ELEMENT_SET_NO")] - pub element_set_no: Option, - #[serde(rename = "REV_AT_EPOCH")] - pub rev_at_epoch: Option, - #[serde(rename = "MEAN_MOTION_DOT")] - pub mean_motion_dot: schema_common::xml_schema_types::DRevType, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct BStarType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct BTermType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct AgomType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct RevType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DRevType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } - - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct DdRevType { - #[serde(rename = "$text")] - pub base: f64, - #[serde(rename = "@units")] - pub units: Option, - } - } +use super::common; + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct BStarUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct BTermUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AgomUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ElementSetNoType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RevUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DRevUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DdRevUnits(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct SpacewarnType(#[serde(rename = "$text")] std::string::String); + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OmmType { + #[serde(rename = "header")] + pub header: common::OdmHeader, + #[serde(rename = "body")] + pub body: common::OmmBody, + #[serde(rename = "@id")] + pub id: String, + #[serde(rename = "@version")] + pub version: String, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OmmBody { + #[serde(rename = "segment")] + pub segment: common::OmmSegment, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OmmSegment { + #[serde(rename = "metadata")] + pub metadata: common::OmmMetadata, + #[serde(rename = "data")] + pub data: common::OmmData, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OmmMetadata { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "OBJECT_NAME")] + pub object_name: String, + #[serde(rename = "OBJECT_ID")] + pub object_id: String, + #[serde(rename = "CENTER_NAME")] + pub center_name: String, + #[serde(rename = "REF_FRAME")] + pub ref_frame: String, + #[serde(rename = "REF_FRAME_EPOCH")] + pub ref_frame_epoch: Option, + #[serde(rename = "TIME_SYSTEM")] + pub time_system: String, + #[serde(rename = "MEAN_ELEMENT_THEORY")] + pub mean_element_theory: String, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OmmData { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "meanElements")] + pub mean_elements: common::MeanElementsType, + #[serde(rename = "spacecraftParameters")] + pub spacecraft_parameters: Option, + #[serde(rename = "tleParameters")] + pub tle_parameters: Option, + #[serde(rename = "covarianceMatrix")] + pub covariance_matrix: Option, + #[serde(rename = "userDefinedParameters")] + pub user_defined_parameters: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct MeanElementsType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "EPOCH")] + pub epoch: common::EpochType, + #[serde(rename = "ECCENTRICITY")] + pub eccentricity: common::NonNegativeDouble, + #[serde(rename = "INCLINATION")] + pub inclination: common::InclinationType, + #[serde(rename = "RA_OF_ASC_NODE")] + pub ra_of_asc_node: common::AngleType, + #[serde(rename = "ARG_OF_PERICENTER")] + pub arg_of_pericenter: common::AngleType, + #[serde(rename = "MEAN_ANOMALY")] + pub mean_anomaly: common::AngleType, + #[serde(rename = "GM")] + pub gm: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct TleParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "EPHEMERIS_TYPE")] + pub ephemeris_type: Option, + #[serde(rename = "CLASSIFICATION_TYPE")] + pub classification_type: Option, + #[serde(rename = "NORAD_CAT_ID")] + pub norad_cat_id: Option, + #[serde(rename = "ELEMENT_SET_NO")] + pub element_set_no: Option, + #[serde(rename = "REV_AT_EPOCH")] + pub rev_at_epoch: Option, + #[serde(rename = "MEAN_MOTION_DOT")] + pub mean_motion_dot: common::DRevType, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct BStarType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct BTermType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct AgomType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct RevType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DRevType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct DdRevType { + #[serde(rename = "$text")] + pub base: f64, + #[serde(rename = "@units")] + pub units: Option, } -pub use schema_omm::*; diff --git a/crates/lox_core/src/odm/opm.rs b/crates/lox_core/src/odm/opm.rs index 7145dd30..8e26bcce 100644 --- a/crates/lox_core/src/odm/opm.rs +++ b/crates/lox_core/src/odm/opm.rs @@ -1,113 +1,108 @@ -mod schema_opm { - pub mod xml_schema_types { - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OpmType { - #[serde(rename = "header")] - pub header: schema_common::xml_schema_types::OdmHeader, - #[serde(rename = "body")] - pub body: schema_common::xml_schema_types::OpmBody, - #[serde(rename = "@id")] - pub id: String, - #[serde(rename = "@version")] - pub version: String, - } +use super::common; - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OpmBody { - #[serde(rename = "segment")] - pub segment: schema_common::xml_schema_types::OpmSegment, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OpmType { + #[serde(rename = "header")] + pub header: common::OdmHeader, + #[serde(rename = "body")] + pub body: common::OpmBody, + #[serde(rename = "@id")] + pub id: String, + #[serde(rename = "@version")] + pub version: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OpmSegment { - #[serde(rename = "metadata")] - pub metadata: schema_common::xml_schema_types::OpmMetadata, - #[serde(rename = "data")] - pub data: schema_common::xml_schema_types::OpmData, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OpmBody { + #[serde(rename = "segment")] + pub segment: common::OpmSegment, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OpmMetadata { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "OBJECT_NAME")] - pub object_name: String, - #[serde(rename = "OBJECT_ID")] - pub object_id: String, - #[serde(rename = "CENTER_NAME")] - pub center_name: String, - #[serde(rename = "REF_FRAME")] - pub ref_frame: String, - #[serde(rename = "REF_FRAME_EPOCH")] - pub ref_frame_epoch: Option, - #[serde(rename = "TIME_SYSTEM")] - pub time_system: String, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OpmSegment { + #[serde(rename = "metadata")] + pub metadata: common::OpmMetadata, + #[serde(rename = "data")] + pub data: common::OpmData, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct OpmData { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "stateVector")] - pub state_vector: schema_common::xml_schema_types::StateVectorType, - #[serde(rename = "keplerianElements")] - pub keplerian_elements: Option, - #[serde(rename = "spacecraftParameters")] - pub spacecraft_parameters: - Option, - #[serde(rename = "covarianceMatrix")] - pub covariance_matrix: Option, - #[serde(rename = "maneuverParameters")] - pub maneuver_parameters_list: - Vec, - #[serde(rename = "userDefinedParameters")] - pub user_defined_parameters: Option, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OpmMetadata { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "OBJECT_NAME")] + pub object_name: String, + #[serde(rename = "OBJECT_ID")] + pub object_id: String, + #[serde(rename = "CENTER_NAME")] + pub center_name: String, + #[serde(rename = "REF_FRAME")] + pub ref_frame: String, + #[serde(rename = "REF_FRAME_EPOCH")] + pub ref_frame_epoch: Option, + #[serde(rename = "TIME_SYSTEM")] + pub time_system: String, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct KeplerianElementsType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "SEMI_MAJOR_AXIS")] - pub semi_major_axis: schema_common::xml_schema_types::DistanceType, - #[serde(rename = "ECCENTRICITY")] - pub eccentricity: schema_common::xml_schema_types::NonNegativeDouble, - #[serde(rename = "INCLINATION")] - pub inclination: schema_common::xml_schema_types::InclinationType, - #[serde(rename = "RA_OF_ASC_NODE")] - pub ra_of_asc_node: schema_common::xml_schema_types::AngleType, - #[serde(rename = "ARG_OF_PERICENTER")] - pub arg_of_pericenter: schema_common::xml_schema_types::AngleType, - #[serde(rename = "GM")] - pub gm: schema_common::xml_schema_types::GmType, - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct OpmData { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "stateVector")] + pub state_vector: common::StateVectorType, + #[serde(rename = "keplerianElements")] + pub keplerian_elements: Option, + #[serde(rename = "spacecraftParameters")] + pub spacecraft_parameters: Option, + #[serde(rename = "covarianceMatrix")] + pub covariance_matrix: Option, + #[serde(rename = "maneuverParameters")] + pub maneuver_parameters_list: Vec, + #[serde(rename = "userDefinedParameters")] + pub user_defined_parameters: Option, +} + +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct KeplerianElementsType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "SEMI_MAJOR_AXIS")] + pub semi_major_axis: common::DistanceType, + #[serde(rename = "ECCENTRICITY")] + pub eccentricity: common::NonNegativeDouble, + #[serde(rename = "INCLINATION")] + pub inclination: common::InclinationType, + #[serde(rename = "RA_OF_ASC_NODE")] + pub ra_of_asc_node: common::AngleType, + #[serde(rename = "ARG_OF_PERICENTER")] + pub arg_of_pericenter: common::AngleType, + #[serde(rename = "GM")] + pub gm: common::GmType, +} - #[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] - #[serde(default)] - pub struct ManeuverParametersType { - #[serde(rename = "COMMENT")] - pub comment_list: Vec, - #[serde(rename = "MAN_EPOCH_IGNITION")] - pub man_epoch_ignition: schema_common::xml_schema_types::EpochType, - #[serde(rename = "MAN_DURATION")] - pub man_duration: schema_common::xml_schema_types::DurationType, - #[serde(rename = "MAN_DELTA_MASS")] - pub man_delta_mass: schema_common::xml_schema_types::DeltamassType, - #[serde(rename = "MAN_REF_FRAME")] - pub man_ref_frame: String, - #[serde(rename = "MAN_DV_1")] - pub man_dv_1: schema_common::xml_schema_types::VelocityType, - #[serde(rename = "MAN_DV_2")] - pub man_dv_2: schema_common::xml_schema_types::VelocityType, - #[serde(rename = "MAN_DV_3")] - pub man_dv_3: schema_common::xml_schema_types::VelocityType, - } - } +#[derive(Clone, Debug, Default, PartialEq, serde::Deserialize, serde::Serialize)] +#[serde(default)] +pub struct ManeuverParametersType { + #[serde(rename = "COMMENT")] + pub comment_list: Vec, + #[serde(rename = "MAN_EPOCH_IGNITION")] + pub man_epoch_ignition: common::EpochType, + #[serde(rename = "MAN_DURATION")] + pub man_duration: common::DurationType, + #[serde(rename = "MAN_DELTA_MASS")] + pub man_delta_mass: common::DeltamassType, + #[serde(rename = "MAN_REF_FRAME")] + pub man_ref_frame: String, + #[serde(rename = "MAN_DV_1")] + pub man_dv_1: common::VelocityType, + #[serde(rename = "MAN_DV_2")] + pub man_dv_2: common::VelocityType, + #[serde(rename = "MAN_DV_3")] + pub man_dv_3: common::VelocityType, } -pub use schema_opm::*;