1use super::Parameter;
2use serde::Deserialize;
3
4#[derive(Debug, Deserialize, PartialEq, Clone)]
5pub struct ErrorStatistics {
6 #[serde(rename = "CompositeSCP")]
7 pub composite_scp: Option<CompositeSCP>,
8 #[serde(rename = "Components")]
9 pub components: Option<Components>,
10 #[serde(rename = "AdditionalParams")]
11 pub additional_params: Option<Vec<Parameter>>,
12}
13#[derive(Debug, Deserialize, PartialEq, Clone)]
14pub struct CompositeSCP {
15 #[serde(rename = "RgAzErr")]
16 pub rg_az_err: Option<RgAzErr>,
17 #[serde(rename = "RowColErr")]
18 pub row_col_err: Option<RowColErr>,
19}
20#[derive(Debug, Deserialize, PartialEq, Clone)]
21pub struct RgAzErr {
22 #[serde(rename = "Rg")]
23 pub rg: f64,
24 #[serde(rename = "Az")]
25 pub az: f64,
26 #[serde(rename = "RgAz")]
27 pub rg_az: f64,
28}
29#[derive(Debug, Deserialize, PartialEq, Clone)]
30pub struct RowColErr {
31 #[serde(rename = "Row")]
32 pub row: f64,
33 #[serde(rename = "Col")]
34 pub col: f64,
35 #[serde(rename = "RowCol")]
36 pub row_col: f64,
37}
38
39#[derive(Debug, Deserialize, PartialEq, Clone)]
40pub struct Components {
41 #[serde(rename = "PosVelErr")]
42 pub pos_vel_err: Option<PosVelErr>,
43 #[serde(rename = "RadarSensor")]
44 pub radar_sensor: Option<RadarSensor>,
45 #[serde(rename = "TropoErro")]
46 pub tropo_erro: Option<TropoError>,
47 #[serde(rename = "IonoError")]
48 pub iono_error: Option<IonoError>,
49}
50#[derive(Debug, Deserialize, PartialEq, Clone)]
51pub struct PosVelErr {
52 #[serde(rename = "Frame")]
53 pub frame: Frame,
54 #[serde(rename = "P1")]
55 pub p1: f64,
56 #[serde(rename = "P2")]
57 pub p2: f64,
58 #[serde(rename = "P3")]
59 pub p3: f64,
60 #[serde(rename = "V1")]
61 pub v1: f64,
62 #[serde(rename = "V2")]
63 pub v2: f64,
64 #[serde(rename = "V3")]
65 pub v3: f64,
66 #[serde(rename = "CorrCoefs")]
67 pub corr_coefs: Option<CorrCoefs>,
68 #[serde(rename = "PositionDecorr")]
69 pub position_decorr: Option<Decorr>,
70}
71#[derive(Debug, Deserialize, PartialEq, Clone)]
72pub struct Frame {
73 #[serde(rename = "$text")]
74 pub value: FrameEnum,
75}
76#[derive(Debug, Deserialize, PartialEq, Clone)]
77pub enum FrameEnum {
78 ECF,
79 #[serde(rename = "RIC_ECF")]
80 RICECF,
81 #[serde(rename = "RIC_ECI")]
82 RICECI,
83}
84#[derive(Debug, Deserialize, PartialEq, Clone)]
85pub struct CorrCoefs {
86 #[serde(rename = "P1P2")]
87 pub p1p2: f64,
88 #[serde(rename = "P1P3")]
89 pub p1p3: f64,
90 #[serde(rename = "P1V1")]
91 pub p1v1: f64,
92 #[serde(rename = "P1V2")]
93 pub p1v2: f64,
94 #[serde(rename = "P1V3")]
95 pub p1v3: f64,
96 #[serde(rename = "P2P3")]
97 pub p2p3: f64,
98 #[serde(rename = "P2V1")]
99 pub p2v1: f64,
100 #[serde(rename = "P2V2")]
101 pub p2v2: f64,
102 #[serde(rename = "P2V3")]
103 pub p2v3: f64,
104 #[serde(rename = "P3V1")]
105 pub p3v1: f64,
106 #[serde(rename = "P3V2")]
107 pub p3v2: f64,
108 #[serde(rename = "P3V3")]
109 pub p3v3: f64,
110 #[serde(rename = "V1V2")]
111 pub v1v2: f64,
112 #[serde(rename = "V1V3")]
113 pub v1v3: f64,
114 #[serde(rename = "V2V3")]
115 pub v2v3: f64,
116}
117#[derive(Debug, Deserialize, PartialEq, Clone)]
118pub struct RadarSensor {
119 #[serde(rename = "RangeBias")]
120 pub range_bias: f64,
121 #[serde(rename = "ClockFreqSF")]
122 pub clock_freq_sf: Option<f64>,
123 #[serde(rename = "TransmitFreqSF")]
124 pub transmit_freq_sf: Option<f64>,
125 #[serde(rename = "RangeBiasDecorr")]
126 pub range_bias_decorr: Option<Decorr>,
127}
128#[derive(Debug, Deserialize, PartialEq, Clone)]
129pub struct TropoError {
130 #[serde(rename = "TropoRangeVertical")]
131 pub tropo_range_vertical: Option<f64>,
132 #[serde(rename = "TropoRangeSlant")]
133 pub tropo_range_slant: Option<f64>,
134 #[serde(rename = "TropoRangeDecorr")]
135 pub tropo_range_decorr: Option<Decorr>,
136}
137#[derive(Debug, Deserialize, PartialEq, Clone)]
138pub struct IonoError {
139 #[serde(rename = "IonoRangeVertical")]
140 pub iono_range_vertical: Option<f64>,
141 #[serde(rename = "IonoRangeRateVertical")]
142 pub iono_range_rate_vertical: Option<f64>,
143 #[serde(rename = "IonoRgRgRateCC")]
144 pub iono_rg_rg_rate_cc: f64,
145 #[serde(rename = "IonoRangeVertDecorr")]
146 pub iono_range_vert_decorr: Option<Decorr>,
147}
148
149#[derive(Debug, Deserialize, PartialEq, Clone)]
150pub struct Decorr {
151 #[serde(rename = "CorrCoefZero")]
152 pub corr_coef_zero: f64,
153 #[serde(rename = "DecorrRate")]
154 pub decorr_rate: f64,
155}