pub mod assess;
pub mod ingest;
pub mod live;
pub mod maritime;
pub mod monitors;
pub mod platform;
pub mod scenario;
pub mod score;
pub mod synth;
use serde::{Deserialize, Serialize};
pub const ADVISORY: &str = "Advisory software, not type-approved navigation equipment \
(IEC 61108, IEC 61162): the operator remains responsible for the navigation of the vessel.";
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum LogFormat {
Ubx,
Rinex,
Android,
Nmea,
}
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
pub struct SatCn0 {
pub sat: String,
pub band: String,
pub cn0_dbhz: f64,
}
#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize)]
pub struct ReportedFix {
pub lat_deg: f64,
pub lon_deg: f64,
pub height_m: f64,
pub n_used: Option<u32>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct LogEpoch {
pub t_s: f64,
pub time_label: Option<String>,
pub cn0: Vec<SatCn0>,
pub agc: Option<f64>,
pub jam_ind: Option<f64>,
pub fix: Option<ReportedFix>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub marine: Option<MarineObs>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source_span: Option<[usize; 2]>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum OsnmaStatus {
Authenticated,
Failed,
Unavailable,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct MarineObs {
pub fix_valid: Option<bool>,
pub sog_kn: Option<f64>,
pub cog_deg: Option<f64>,
pub heading_deg: Option<f64>,
pub stw_kn: Option<f64>,
pub alt_msl_m: Option<f64>,
pub geoid_sep_m: Option<f64>,
pub hdop: Option<f64>,
pub time_step_s: Option<f64>,
#[serde(default, skip_serializing_if = "std::ops::Not::not")]
pub time_rewound: bool,
pub arrival_s: Option<f64>,
pub osnma: Option<OsnmaStatus>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sat_auth: Vec<(String, OsnmaStatus)>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct Timeline {
pub epochs: Vec<LogEpoch>,
pub start_label: Option<String>,
pub observables: Vec<String>,
pub skipped_records: usize,
}