1use thiserror::Error;
2
3use gnss_rs::{
4 constellation::ParsingError as ConstellationParsingError, cospar::Error as CosparParsingError,
5 domes::Error as DOMESParsingError, sv::ParsingError as SVParsingError,
6};
7
8use hifitime::{HifitimeError, ParsingError as HifitimeParsingError};
9
10use std::io::Error as IoError;
11
12use crate::hatanaka::Error as HatanakaError;
13
14#[derive(Debug, Error)]
16pub enum ParsingError {
17 #[error("header line too short (invalid)")]
18 HeaderLineTooShort,
19 #[error("empty epoch")]
20 EmptyEpoch,
21 #[error("invalid epoch flag")]
22 EpochFlag,
23 #[error("number of sat")]
24 NumSat,
25 #[error("marker type")]
26 MarkerType,
27 #[error("nav: clock parsing")]
28 ClockParsing,
29 #[error("invalid epoch format")]
30 EpochFormat,
31 #[error("epoch parsing")]
32 EpochParsing,
33 #[error("datime parsing")]
34 DatetimeParsing,
35 #[error("datime invalid format")]
36 DatetimeFormat,
37 #[error("bad rinex revision format")]
38 VersionFormat,
39 #[error("rinex revision parsing")]
40 VersionParsing,
41 #[error("rinex format identification")]
42 TypeParsing,
43 #[error("observable parsing")]
44 ObservableParsing,
45 #[error("constellation parsing")]
46 ConstellationParsing(#[from] ConstellationParsingError),
47 #[error("undefined constellation: bad header?")]
48 UndefinedConstellation,
49 #[error("sv parsing")]
50 SVParsing(#[from] SVParsingError),
51 #[error("cospar parsing")]
52 COSPAR(#[from] CosparParsingError),
53 #[error("nav: eop missing line")]
54 EopMissingData,
55 #[error("clock TYPE OF DATA parsing")]
56 ClockTypeofData,
57 #[error("OBS RINEX invalid timescale")]
58 BadObsBadTimescaleDefinition,
59 #[error("bad RINEX: missing timescale specs")]
60 NoTimescaleDefinition,
61 #[error("SYS / SCALE FACTOR parsing")]
62 SystemScalingFactor,
63 #[error("REF CLOCK OFFS parsing")]
64 RcvClockOffsApplied,
65 #[error("header coordinates parsing")]
66 Coordinates,
67 #[error("antenna coordinates parsing")]
68 AntennaCoordinates,
69 #[error("sensor coordinates parsing")]
70 SensorCoordinates,
71 #[error("ANTEX version parsing")]
72 AntexVersion,
73 #[error("IONEX version parsing")]
74 IonexVersion,
75 #[error("invalid ionex referencing")]
76 IonexReferenceSystem,
77 #[error("non supported rinex revision")]
78 NonSupportedVersion,
79 #[error("invalid mapping function")]
80 IonexMappingFunction,
81 #[error("unknown / non supported observable")]
82 UnknownObservable,
83 #[error("invalid observable")]
84 BadObservable,
85 #[error("invalid leap second specs")]
86 LeapFormat,
87 #[error("leap second parsing")]
88 LeapParsing,
89 #[error("hifitime parsing")]
90 HifitimeParsing(#[from] HifitimeParsingError),
91 #[error("hifitime error")]
92 Hifitime(#[from] HifitimeError),
93 #[error("DORIS L1/L2 date offset")]
94 DorisL1L2DateOffset,
95 #[error("DORIS L1/L2 date offset")]
96 NumberOfCalibratedAntennasParsing,
97 #[error("antex: antenna calibration #")]
98 AntexAntennaCalibrationNumber,
99 #[error("antex: apc coordinates")]
100 AntexAPCCoordinates,
101 #[error("antex: zenith grid")]
102 AntexZenithGrid,
103 #[error("antex: frequency")]
104 AntexFrequency,
105 #[error("doris: invalid station format")]
106 DorisStationFormat,
107 #[error("doris: station parsing")]
108 DorisStation,
109 #[error("obs/doris: missing observable specs")]
110 MissingObservableDefinition,
111 #[error("clock profile type parsing")]
112 ClockProfileType,
113 #[error("clock profile parsing")]
114 ClockProfile,
115 #[error("DOMES parsing")]
116 DOMES(#[from] DOMESParsingError),
117 #[error("ionex: map index parsing")]
118 IonexMapIndex,
119 #[error("ionex: grid specs parsing")]
120 IonexGridSpecs,
121 #[error("ionex: invalid grid specs")]
122 BadIonexGridSpecs,
123 #[error("ionex: map coordinates parsing")]
124 IonexGridCoordinates,
125 #[error("nav: invalid frame class")]
126 NavFrameClass,
127 #[error("nav: invalid timescale")]
128 NavInvalidTimescale,
129 #[error("nav: invalid message type")]
130 NavMsgType,
131 #[error("nav: (ref) epoch week counter parsing")]
132 NavEpochWeekCounter,
133 #[error("nav: time offset parsing")]
134 NavTimeOffsetParinsg,
135 #[error("nav: unknown radio message")]
136 NoNavigationDefinition,
137 #[error("nav: invalid health flag definition")]
138 NavHealthFlagDefinition,
139 #[error("nav: invalid bitfield")]
140 NavFlagsMapping,
141 #[error("nav: invalid data source flag definition")]
142 NavDataSourceDefinition,
143 #[error("nav: unknown complex type")]
144 NavUnknownComplexType,
145 #[error("nav: invalid / missing flag definition")]
146 NavFlagsDefinition,
147 #[error("nav: illegal null orbit field")]
148 NavNullOrbit,
149 #[error("nav:ion klobuchar data")]
150 KlobucharData,
151 #[error("nav:ion nequick-g data")]
152 NequickGData,
153 #[error("nav:ion bdgim data")]
154 BdgimData,
155 #[error("nav:sto data")]
156 SystemTimeData,
157 #[error("ionex: earth obs sat")]
158 IonexEarthObservationSat,
159 #[error("ionex: model")]
160 IonexModel,
161 #[error("antex: calibration method")]
162 AntexCalibrationMethod,
163 #[error("obs: hardware events not supported yet")]
164 ObsHardwareEvent,
165 #[error("obs: bad v2 satellites description")]
166 BadV2SatellitesDescription,
167 #[error("obs: numsat parsing")]
168 NumSatParsing,
169 #[error("CRINEX error: {0}")]
170 CRINEX(HatanakaError),
171 #[error("bad utf-8 generated by CRINEX recovering process")]
172 BadUtf8Crinex,
173 #[error("doris station identification")]
174 DorisStationIdentification,
175 #[error("doris sat clock parsing")]
176 DorisClockParsing,
177 #[error("ionex scaling exponent")]
178 IonexScalingExponent,
179}
180
181#[derive(Error, Debug)]
183pub enum FormattingError {
184 #[error("i/o: output error")]
185 OutputError(#[from] IoError),
186 #[error("missing constellation information")]
187 NoConstellationDefinition,
188 #[error("missing navigation standard specs")]
189 MissingNavigationStandards,
190 #[error("undefined observables")]
191 UndefinedObservables,
192 #[error("missing observable definition")]
193 MissingObservableDefinition,
194 #[error("nav: unknown radio message")]
195 NoNavigationDefinition,
196 #[error("nav: missing grid defs")]
197 NoGridDefinition,
198}
199
200#[derive(Debug)]
202pub enum Error {
203 InvalidFrequency,
205
206 UndeterminedSamplingPeriod,
208
209 UnknownFrequency,
211
212 UnknownGPSObservable,
214
215 UnknownGalieoObservable,
217
218 UnknownGlonassObservable,
220
221 UnknownQZSSObservable,
223
224 UnknownBeiDouObservable,
226
227 UnknownIRNSSObservable,
229
230 UnknownSBASObservable,
232
233 UnknownDORISObservable,
235
236 UnknownGPSFrequency,
238
239 UnknownGalileoFrequency,
241
242 UnknownQzssFrequency,
244
245 UnknownGlonassFrequency,
247
248 UnknownBDSFrequency,
250
251 UnknownIRNSSFrequency,
253
254 UnknownSBASFrequency,
256
257 UnknownDORISFrequency,
259}