#[derive(Clone, PartialEq, prost::Message)]
pub struct Metadata {
#[prost(message, optional, tag = "1")]
pub version: ::core::option::Option<metadata::Version>,
#[prost(string, tag = "2")]
pub publisher: prost::alloc::string::String,
#[prost(message, optional, tag = "3")]
pub date: ::core::option::Option<metadata::CeDate>,
#[prost(string, tag = "4")]
pub file_version: prost::alloc::string::String,
#[prost(bool, tag = "5")]
pub proprietary: bool,
#[prost(string, tag = "6")]
pub comments: prost::alloc::string::String,
}
pub mod metadata {
#[derive(Clone, PartialEq, prost::Message)]
pub struct CeDate {
#[prost(uint32, tag = "1")]
pub year: u32,
#[prost(uint32, tag = "2")]
pub month: u32,
#[prost(uint32, tag = "3")]
pub day: u32,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Version {
#[prost(uint32, tag = "1")]
pub major: u32,
#[prost(uint32, tag = "2")]
pub minor: u32,
#[prost(uint32, tag = "3")]
pub patch: u32,
}
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Frame {
#[prost(string, tag = "1")]
pub center: prost::alloc::string::String,
#[prost(string, tag = "2")]
pub orientation: prost::alloc::string::String,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Constant {
#[prost(double, tag = "1")]
pub value: f64,
#[prost(enumeration = "Unit", tag = "2")]
pub unit: i32,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Vector {
#[prost(double, tag = "1")]
pub x: f64,
#[prost(double, tag = "2")]
pub y: f64,
#[prost(double, tag = "3")]
pub z: f64,
#[prost(enumeration = "Unit", tag = "4")]
pub unit: i32,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Vector4 {
#[prost(double, tag = "1")]
pub x: f64,
#[prost(double, tag = "2")]
pub y: f64,
#[prost(double, tag = "3")]
pub z: f64,
#[prost(double, tag = "4")]
pub w: f64,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct VectorCoefficients {
#[prost(double, repeated, tag = "1")]
pub x: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "2")]
pub y: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "3")]
pub z: prost::alloc::vec::Vec<f64>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Epoch {
#[prost(enumeration = "TimeSystem", tag = "1")]
pub ts: i32,
#[prost(enumeration = "TimeRepr", tag = "2")]
pub repr: i32,
#[prost(int32, tag = "3")]
pub days: i32,
#[prost(double, tag = "4")]
pub seconds: f64,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Equation {
#[prost(string, tag = "1")]
pub expression: prost::alloc::string::String,
#[prost(enumeration = "Unit", tag = "2")]
pub unit: i32,
#[prost(map = "string, message", tag = "3")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
#[prost(map = "string, message", tag = "4")]
pub context: ::std::collections::HashMap<prost::alloc::string::String, Equation>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration)]
#[repr(i32)]
pub enum Unit {
Dimensionless = 0,
Au = 1,
Km = 2,
M = 3,
Cm = 4,
Mm = 5,
KmS = 10,
MS = 11,
CmS = 12,
MmS = 13,
KmS2 = 20,
MS2 = 21,
CmS2 = 22,
MmS2 = 23,
Deg = 30,
Rad = 31,
DegS = 32,
RadS = 33,
DegS2 = 34,
RadS2 = 35,
Hz = 40,
KHz = 41,
MHz = 42,
Ghz = 43,
Ns = 50,
Us = 51,
Ms = 52,
S = 53,
Min = 54,
H = 55,
Days = 56,
CustomUnit = 60,
Km3S2 = 61,
N = 62,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration)]
#[repr(i32)]
pub enum TimeSystem {
Tai = 0,
Et = 1,
Tt = 2,
Utc = 3,
Tdb = 4,
CustomTs = 5,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration)]
#[repr(i32)]
pub enum TimeRepr {
SecondsJ1900 = 0,
DaysJ1900 = 1,
SecondsJ2k = 2,
DaysJ2k = 3,
DaysMjd = 4,
DaysJde = 5,
CustomTimeRepr = 6,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration)]
#[repr(i32)]
pub enum InterpType {
Chebyshev = 0,
Hermite = 1,
Polynomial = 2,
Lagrange = 3,
Fourier = 4,
CustomInterpolationType = 5,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Orientation {
#[prost(message, optional, tag = "1")]
pub frame: ::core::option::Option<Frame>,
#[prost(message, optional, tag = "2")]
pub start_epoch: ::core::option::Option<Epoch>,
#[prost(message, optional, tag = "3")]
pub records: ::core::option::Option<AttitudeRegistry>,
#[prost(message, optional, tag = "4")]
pub interpolator: ::core::option::Option<AttitudeInterp>,
#[prost(map = "string, message", tag = "5")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
#[prost(message, repeated, tag = "6")]
pub children: prost::alloc::vec::Vec<Orientation>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct AttitudeRegistry {
#[prost(uint32, repeated, tag = "1")]
pub time_index: prost::alloc::vec::Vec<u32>,
#[prost(map = "uint32, message", tag = "2")]
pub states: ::std::collections::HashMap<u32, Attitude>,
}
pub mod attitude_registry {
#[derive(Clone, PartialEq, prost::Message)]
pub struct AttitudeState {
#[prost(message, optional, tag = "1")]
pub epoch: ::core::option::Option<super::Epoch>,
#[prost(message, optional, tag = "2")]
pub attitude: ::core::option::Option<super::Attitude>,
#[prost(message, optional, tag = "3")]
pub velocity: ::core::option::Option<super::Vector>,
#[prost(bool, tag = "4")]
pub velocity_is_zero: bool,
#[prost(double, repeated, tag = "5")]
pub covariance: prost::alloc::vec::Vec<f64>,
#[prost(double, tag = "6")]
pub covariance_exponent: f64,
#[prost(enumeration = "Tracking", tag = "7")]
pub track: i32,
#[prost(map = "string, message", tag = "8")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, super::Constant>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration)]
#[repr(i32)]
pub enum Tracking {
None = 0,
TrkAttitude = 1,
TrkVelocity = 2,
Both = 3,
}
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Attitude {
#[prost(enumeration = "AttitudeRepr", tag = "1")]
pub repr: i32,
#[prost(double, repeated, tag = "2")]
pub attitude: prost::alloc::vec::Vec<f64>,
#[prost(message, repeated, tag = "3")]
pub equations: prost::alloc::vec::Vec<Equation>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct AttitudeInterp {
#[prost(enumeration = "InterpType", tag = "1")]
pub itype: i32,
#[prost(enumeration = "AttitudeRepr", tag = "2")]
pub repr: i32,
#[prost(uint32, tag = "3")]
pub attitude_degree: u32,
#[prost(uint32, tag = "4")]
pub angular_velocity_degree: u32,
#[prost(uint32, repeated, tag = "5")]
pub time_index_s: prost::alloc::vec::Vec<u32>,
#[prost(map = "uint32, message", tag = "6")]
pub states: ::std::collections::HashMap<u32, attitude_interp::InterpState>,
#[prost(double, tag = "7")]
pub time_normalization_min: f64,
#[prost(double, tag = "8")]
pub time_normalization_max: f64,
}
pub mod attitude_interp {
#[derive(Clone, PartialEq, prost::Message)]
pub struct InterpState {
#[prost(double, tag = "1")]
pub time_offset_s: f64,
#[prost(float, tag = "2")]
pub window_duration: f32,
#[prost(enumeration = "super::Unit", tag = "3")]
pub time_unit: i32,
#[prost(message, optional, tag = "6")]
pub angular_velocity: ::core::option::Option<super::VectorCoefficients>,
#[prost(oneof = "interp_state::Attitude", tags = "4, 5")]
pub attitude: ::core::option::Option<interp_state::Attitude>,
}
pub mod interp_state {
#[derive(Clone, PartialEq, prost::Oneof)]
pub enum Attitude {
#[prost(message, tag = "4")]
Dim4(super::super::QuaternionCoefficients),
#[prost(message, tag = "5")]
Dim3(super::super::VectorCoefficients),
}
}
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct QuaternionCoefficients {
#[prost(double, repeated, tag = "1")]
pub q0: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "2")]
pub q1: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "3")]
pub q2: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "4")]
pub q3: prost::alloc::vec::Vec<f64>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration)]
#[repr(i32)]
pub enum AttitudeRepr {
NotApplicable = 0,
QuaternionLead = 1,
QuaternionTrail = 2,
Euler121 = 3,
Euler123 = 4,
Euler131 = 5,
Euler132 = 6,
Euler212 = 7,
Euler213 = 8,
Euler231 = 9,
Euler232 = 10,
Euler312 = 11,
Euler313 = 12,
Euler321 = 13,
Euler323 = 14,
Crp = 15,
Mrp = 16,
RaDecW = 17,
CustomAttRepr = 18,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Ephemeris {
#[prost(string, tag = "1")]
pub name: prost::alloc::string::String,
#[prost(string, tag = "2")]
pub orientation: prost::alloc::string::String,
#[prost(message, optional, tag = "3")]
pub start_epoch: ::core::option::Option<Epoch>,
#[prost(message, optional, tag = "4")]
pub records: ::core::option::Option<EphemRegistry>,
#[prost(message, optional, tag = "5")]
pub interpolator: ::core::option::Option<EphemInterp>,
#[prost(map = "string, message", tag = "6")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
#[prost(map = "string, message", tag = "7")]
pub harmonics: ::std::collections::HashMap<prost::alloc::string::String, GravityField>,
#[prost(message, repeated, tag = "8")]
pub children: prost::alloc::vec::Vec<Ephemeris>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct EphemRegistry {
#[prost(message, repeated, tag = "1")]
pub states: prost::alloc::vec::Vec<State>,
#[prost(enumeration = "Unit", tag = "2")]
pub distance_unit: i32,
#[prost(enumeration = "Unit", tag = "3")]
pub velocity_unit: i32,
#[prost(message, optional, tag = "4")]
pub frame: ::core::option::Option<Frame>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct State {
#[prost(message, optional, tag = "1")]
pub epoch: ::core::option::Option<Epoch>,
#[prost(message, optional, tag = "2")]
pub position: ::core::option::Option<Vector>,
#[prost(message, optional, tag = "3")]
pub velocity: ::core::option::Option<Vector>,
#[prost(message, optional, tag = "4")]
pub covariance: ::core::option::Option<state::Covariance>,
#[prost(double, tag = "5")]
pub covariance_exponent: f64,
#[prost(map = "string, message", tag = "6")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
}
pub mod state {
#[derive(Clone, PartialEq, prost::Message)]
pub struct Covariance {
#[prost(double, tag = "1")]
pub cx_x: f64,
#[prost(double, tag = "2")]
pub cy_x: f64,
#[prost(double, tag = "3")]
pub cy_y: f64,
#[prost(double, tag = "4")]
pub cz_x: f64,
#[prost(double, tag = "5")]
pub cz_y: f64,
#[prost(double, tag = "6")]
pub cz_z: f64,
#[prost(double, tag = "7")]
pub cx_dot_x: f64,
#[prost(double, tag = "8")]
pub cx_dot_y: f64,
#[prost(double, tag = "9")]
pub cx_dot_z: f64,
#[prost(double, tag = "10")]
pub cx_dot_x_dot: f64,
#[prost(double, tag = "11")]
pub cy_dot_x: f64,
#[prost(double, tag = "12")]
pub cy_dot_y: f64,
#[prost(double, tag = "13")]
pub cy_dot_z: f64,
#[prost(double, tag = "14")]
pub cy_dot_x_dot: f64,
#[prost(double, tag = "15")]
pub cy_dot_y_dot: f64,
#[prost(double, tag = "16")]
pub cz_dot_x: f64,
#[prost(double, tag = "17")]
pub cz_dot_y: f64,
#[prost(double, tag = "18")]
pub cz_dot_z: f64,
#[prost(double, tag = "19")]
pub cz_dot_x_dot: f64,
#[prost(double, tag = "20")]
pub cz_dot_y_dot: f64,
#[prost(double, tag = "21")]
pub cz_dot_z_dot: f64,
}
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct EphemInterp {
#[prost(enumeration = "InterpType", tag = "1")]
pub itype: i32,
#[prost(uint32, tag = "2")]
pub position_degree: u32,
#[prost(uint32, tag = "3")]
pub velocity_degree: u32,
#[prost(enumeration = "Unit", tag = "6")]
pub distance_unit: i32,
#[prost(enumeration = "Unit", tag = "7")]
pub velocity_unit: i32,
#[prost(oneof = "ephem_interp::StateData", tags = "4, 5")]
pub state_data: ::core::option::Option<ephem_interp::StateData>,
}
pub mod ephem_interp {
#[derive(Clone, PartialEq, prost::Oneof)]
pub enum StateData {
#[prost(message, tag = "4")]
EqualStates(super::EqualStepStates),
#[prost(message, tag = "5")]
VarwindowStates(super::VarWindowStates),
}
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct EqualStepStates {
#[prost(double, tag = "1")]
pub window_duration: f64,
#[prost(enumeration = "Unit", tag = "2")]
pub window_duration_unit: i32,
#[prost(message, repeated, tag = "3")]
pub position: prost::alloc::vec::Vec<VectorCoefficients>,
#[prost(message, repeated, tag = "4")]
pub velocity: prost::alloc::vec::Vec<VectorCoefficients>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct VarWindowStates {
#[prost(uint32, repeated, tag = "1")]
pub time_index_s: prost::alloc::vec::Vec<u32>,
#[prost(map = "uint32, message", tag = "2")]
pub interp_states: ::std::collections::HashMap<u32, var_window_states::InterpState>,
#[prost(double, tag = "3")]
pub time_normalization_min: f64,
#[prost(double, tag = "4")]
pub time_normalization_max: f64,
}
pub mod var_window_states {
#[derive(Clone, PartialEq, prost::Message)]
pub struct InterpState {
#[prost(double, tag = "1")]
pub time_offset_s: f64,
#[prost(double, tag = "2")]
pub window_duration: f64,
#[prost(enumeration = "super::Unit", tag = "3")]
pub time_unit: i32,
#[prost(message, optional, tag = "4")]
pub position: ::core::option::Option<super::VectorCoefficients>,
#[prost(message, optional, tag = "5")]
pub velocity: ::core::option::Option<super::VectorCoefficients>,
}
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct GravityField {
#[prost(message, optional, tag = "1")]
pub frame: ::core::option::Option<Frame>,
#[prost(uint32, tag = "2")]
pub min_degree: u32,
#[prost(uint32, tag = "3")]
pub max_degree: u32,
#[prost(uint32, tag = "4")]
pub max_order: u32,
#[prost(double, repeated, tag = "5")]
pub c_nm: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "6")]
pub s_nm: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "7")]
pub sigma_c_nm: prost::alloc::vec::Vec<f64>,
#[prost(double, repeated, tag = "8")]
pub sigma_s_nm: prost::alloc::vec::Vec<f64>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Instrument {
#[prost(message, optional, tag = "1")]
pub frame: ::core::option::Option<Frame>,
#[prost(message, optional, tag = "2")]
pub position_offset: ::core::option::Option<Vector>,
#[prost(message, optional, tag = "3")]
pub orientation_offset: ::core::option::Option<Attitude>,
#[prost(map = "string, message", tag = "4")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
#[prost(message, repeated, tag = "5")]
pub children: prost::alloc::vec::Vec<Instrument>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct NavigationObject {
#[prost(string, tag = "1")]
pub object: prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub observer: ::core::option::Option<Frame>,
#[prost(message, repeated, tag = "3")]
pub passes: prost::alloc::vec::Vec<TrackingPass>,
#[prost(map = "string, message", tag = "5")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct TrackingPass {
#[prost(string, tag = "1")]
pub pass_uid: prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub start_epoch: ::core::option::Option<Epoch>,
#[prost(message, optional, tag = "3")]
pub end_epoch: ::core::option::Option<Epoch>,
#[prost(message, repeated, tag = "4")]
pub obs: prost::alloc::vec::Vec<Observation>,
#[prost(message, optional, tag = "5")]
pub sol: ::core::option::Option<NavSolutions>,
#[prost(map = "string, message", tag = "6")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Observation {
#[prost(message, optional, tag = "1")]
pub epoch: ::core::option::Option<Epoch>,
#[prost(double, tag = "2")]
pub obs: f64,
#[prost(enumeration = "ObsKind", tag = "3")]
pub kind: i32,
#[prost(enumeration = "Unit", tag = "4")]
pub unit: i32,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct NavSolutions {
#[prost(message, optional, tag = "1")]
pub state_reg: ::core::option::Option<EphemRegistry>,
#[prost(message, repeated, tag = "2")]
pub residuals: prost::alloc::vec::Vec<Residual>,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Residual {
#[prost(message, optional, tag = "1")]
pub epoch: ::core::option::Option<Epoch>,
#[prost(double, tag = "2")]
pub prefit: f64,
#[prost(double, tag = "3")]
pub postfit: f64,
#[prost(enumeration = "ObsKind", tag = "4")]
pub obskind: i32,
#[prost(enumeration = "Unit", tag = "5")]
pub unit: i32,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, prost::Enumeration)]
#[repr(i32)]
pub enum ObsKind {
Range = 0,
RangeRate = 1,
Doppler = 2,
RangeUnits = 3,
Angles = 4,
AngluarRate = 5,
None = 10,
Custom = 11,
}
#[derive(Clone, PartialEq, prost::Message)]
pub struct Xb {
#[prost(message, optional, tag = "1")]
pub meta: ::core::option::Option<Metadata>,
#[prost(map = "string, message", tag = "2")]
pub constants: ::std::collections::HashMap<prost::alloc::string::String, Constant>,
#[prost(message, optional, tag = "3")]
pub ephemeris_root: ::core::option::Option<Ephemeris>,
#[prost(message, optional, tag = "4")]
pub orientation_root: ::core::option::Option<Orientation>,
#[prost(message, repeated, tag = "5")]
pub navigation_objects: prost::alloc::vec::Vec<NavigationObject>,
#[prost(message, optional, tag = "6")]
pub instrument_root: ::core::option::Option<Instrument>,
}