Changeset 5664 in ntrip for trunk/clock_and_orbit/lib/clock_orbit_rtcm.h
- Timestamp:
- May 26, 2014, 5:09:28 PM (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/clock_and_orbit/lib/clock_orbit_rtcm.h
r4241 r5664 14 14 15 15 enum SatelliteReferenceDatum { DATUM_ITRF=0, DATUM_LOCAL=1 }; 16 17 enum COR_BASE { 18 COBBASE_GPS = 1057, 19 COBBASE_GLONASS = 1063, 20 COBBASE_GALILEO = 1240, 21 COBBASE_QZSS = 1246, 22 COBBASE_SBAS = 1252, 23 COBBASE_BDS = 1258, 24 }; 25 26 enum COR_OFFSET { 27 COBOFS_ORBIT = 0, 28 COBOFS_CLOCK, 29 COBOFS_BIAS, 30 COBOFS_COMBINED, 31 COBOFS_URA, 32 COBOFS_HR, 33 COBOFS_NUM 34 }; 35 16 36 enum ClockOrbitType { 17 COTYPE_GPSORBIT=1057, COTYPE_GPSCLOCK=1058, 18 COTYPE_GPSCOMBINED=1060, COTYPE_GPSURA=1061, COTYPE_GPSHR=1062, 19 20 COTYPE_GLONASSORBIT=1063, COTYPE_GLONASSCLOCK=1064, 21 COTYPE_GLONASSCOMBINED=1066, COTYPE_GLONASSURA=1067, COTYPE_GLONASSHR=1068, 22 23 COTYPE_AUTO=0 }; 24 enum BiasType { BTYPE_GPS=1059, BTYPE_GLONASS=1065, BTYPE_AUTO = 0 }; 25 37 COTYPE_GPSORBIT = COBBASE_GPS + COBOFS_ORBIT, 38 COTYPE_GPSCLOCK, 39 COTYPE_GPSCOMBINED = COBBASE_GPS + COBOFS_COMBINED, 40 COTYPE_GPSURA, 41 COTYPE_GPSHR, 42 43 COTYPE_GLONASSORBIT = COBBASE_GLONASS + COBOFS_ORBIT, 44 COTYPE_GLONASSCLOCK, 45 COTYPE_GLONASSCOMBINED = COBBASE_GLONASS + COBOFS_COMBINED, 46 COTYPE_GLONASSURA, 47 COTYPE_GLONASSHR, 48 49 COTYPE_GALILEOORBIT = COBBASE_GALILEO + COBOFS_ORBIT, 50 COTYPE_GALILEOCLOCK, 51 COTYPE_GALILEOCOMBINED = COBBASE_GALILEO + COBOFS_COMBINED, 52 COTYPE_GALILEOURA, 53 COTYPE_GALILEOHR, 54 55 COTYPE_QZSSORBIT = COBBASE_QZSS + COBOFS_ORBIT, 56 COTYPE_QZSSCLOCK, 57 COTYPE_QZSSCOMBINED = COBBASE_QZSS + COBOFS_COMBINED, 58 COTYPE_QZSSURA, 59 COTYPE_QZSSHR, 60 61 COTYPE_SBASORBIT = COBBASE_SBAS + COBOFS_ORBIT, 62 COTYPE_SBASCLOCK, 63 COTYPE_SBASCOMBINED = COBBASE_QZSS + COBOFS_COMBINED, 64 COTYPE_SBASURA, 65 COTYPE_SBASHR, 66 67 COTYPE_BDSORBIT = COBBASE_BDS + COBOFS_ORBIT, 68 COTYPE_BDSCLOCK, 69 COTYPE_BDSCOMBINED = COBBASE_BDS + COBOFS_COMBINED, 70 COTYPE_BDSURA, 71 COTYPE_BDSHR, 72 73 COTYPE_AUTO = 0, 74 }; 75 76 enum CodeBiasType { 77 BTYPE_GPS = COBBASE_GPS + COBOFS_BIAS, 78 BTYPE_GLONASS = COBBASE_GLONASS + COBOFS_BIAS, 79 BTYPE_GALILEO = COBBASE_GALILEO + COBOFS_BIAS, 80 BTYPE_QZSS = COBBASE_QZSS + COBOFS_BIAS, 81 BTYPE_SBAS = COBBASE_QZSS + COBOFS_BIAS, 82 BTYPE_BDS = COBBASE_BDS + COBOFS_BIAS, 83 BTYPE_AUTO = 0 84 }; 85 86 enum PhaseBiasType { 87 PBTYPE_BASE = 1265, 88 PBTYPE_GPS = PBTYPE_BASE, 89 PBTYPE_GLONASS, 90 PBTYPE_GALILEO, 91 PBTYPE_QZSS, 92 PBTYPE_SBAS, 93 PBTYPE_BDS, 94 PBTYPE_AUTO = 0 95 }; 96 97 enum VTECType { 98 VTEC_BASE = 1264 99 }; 100 101 /* if some systems aren't supported at all, change the following numbers to zero 102 for these systems to save space */ 26 103 enum COR_CONSTANTS { 27 104 CLOCKORBIT_BUFFERSIZE=2048, 28 105 CLOCKORBIT_NUMGPS=32, 29 106 CLOCKORBIT_NUMGLONASS=24, 30 CLOCKORBIT_NUMBIAS=10 107 CLOCKORBIT_NUMGALILEO=36, 108 CLOCKORBIT_NUMQZSS=10, 109 CLOCKORBIT_NUMSBAS=38, 110 CLOCKORBIT_NUMBDS=37, 111 CLOCKORBIT_NUMBIAS=10, 112 CLOCKORBIT_NUMIONOLAYERS=4, 113 CLOCKORBIT_MAXIONOORDER=8, 114 CLOCKORBIT_MAXIONODEGREE=8 115 }; 116 117 enum COR_SATSYSTEM { 118 CLOCKORBIT_SATGPS=0, 119 CLOCKORBIT_SATGLONASS, 120 CLOCKORBIT_SATGALILEO, 121 CLOCKORBIT_SATQZSS, 122 CLOCKORBIT_SATSBAS, 123 CLOCKORBIT_SATBDS, 124 CLOCKORBIT_SATNUM 125 }; 126 127 enum COR_OFFSETS { 128 CLOCKORBIT_OFFSETGPS=0, 129 CLOCKORBIT_OFFSETGLONASS=CLOCKORBIT_NUMGPS, 130 CLOCKORBIT_OFFSETGALILEO=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS, 131 CLOCKORBIT_OFFSETQZSS=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS 132 +CLOCKORBIT_NUMGALILEO, 133 CLOCKORBIT_OFFSETSBAS=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS 134 +CLOCKORBIT_NUMGALILEO+CLOCKORBIT_NUMQZSS, 135 CLOCKORBIT_OFFSETBDS=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS 136 +CLOCKORBIT_NUMGALILEO+CLOCKORBIT_NUMQZSS+CLOCKORBIT_NUMSBAS, 137 CLOCKORBIT_COUNTSAT=CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS 138 +CLOCKORBIT_NUMGALILEO+CLOCKORBIT_NUMQZSS+CLOCKORBIT_NUMSBAS 139 +CLOCKORBIT_NUMBDS 31 140 }; 32 141 … … 54 163 CODETYPEGLONASS_L2_CA = 2, 55 164 CODETYPEGLONASS_L2_P = 3, 165 166 CODETYPEGALILEO_E1_A = 0, 167 CODETYPEGALILEO_E1_B = 1, 168 CODETYPEGALILEO_E1_C = 2, 169 CODETYPEGALILEO_E5A_I = 5, 170 CODETYPEGALILEO_E5A_Q = 6, 171 CODETYPEGALILEO_E5B_I = 8, 172 CODETYPEGALILEO_E5B_Q = 9, 173 CODETYPEGALILEO_E5_I = 11, 174 CODETYPEGALILEO_E5_Q = 12, 175 CODETYPEGALILEO_E6_A = 14, 176 CODETYPEGALILEO_E6_B = 15, 177 CODETYPEGALILEO_E6_C = 16, 178 179 CODETYPEQZSS_L1_CA = 0, 180 CODETYPEQZSS_L1C_D = 1, 181 CODETYPEQZSS_L1C_P = 2, 182 CODETYPEQZSS_L2_CM = 3, 183 CODETYPEQZSS_L2_CL = 4, 184 CODETYPEQZSS_L2_CML = 5, 185 CODETYPEQZSS_L5_I = 6, 186 CODETYPEQZSS_L5_Q = 7, 187 CODETYPEQZSS_L5_IQ = 8, 188 CODETYPEQZSS_LEX_S = 9, 189 CODETYPEQZSS_LEX_L = 10, 190 CODETYPEQZSS_LEX_SL = 11, 191 CODETYPEQZSS_L1C_DP = 12, 192 193 CODETYPE_SBAS_L1_CA = 0, 194 CODETYPE_SBAS_L5_I = 1, 195 CODETYPE_SBAS_L5_Q = 2, 196 CODETYPE_SBAS_L5_IQ = 3, 197 198 CODETYPE_BDS_B1_I = 0, 199 CODETYPE_BDS_B1_Q = 1, 200 CODETYPE_BDS_B1_IQ = 2, 201 CODETYPE_BDS_B3_I = 3, 202 CODETYPE_BDS_B3_Q = 4, 203 CODETYPE_BDS_B3_IQ = 5, 204 CODETYPE_BDS_B2_I = 6, 205 CODETYPE_BDS_B2_Q = 7, 206 CODETYPE_BDS_B2_IQ = 8, 56 207 }; 57 208 58 209 #define SSR_MAXURA 5.5 /* > 5466.5mm in meter */ 59 210 60 /* GLONASS data is stored with offset CLOCKORBIT_NUMGPS in the data structures. 61 So first GLONASS satellite is at xxx->Sat[CLOCKORBIT_NUMGPS], first 62 GPS satellite is xxx->Sat[0]. */ 211 /* satellite system data data is stored with offset CLOCKORBIT_OFFSET... 212 in the data structures. So first GLONASS satellite is at 213 xxx->Sat[CLOCKORBIT_OFFSETGLONASS], first GPS satellite is 214 xxx->Sat[CLOCKORBIT_OFFSETGPS]. */ 215 216 #ifdef COR_LEGACY 217 /* old names */ 218 #define NumberOfGPSSat NumberOfSat[CLOCKORBIT_SATGPS] 219 #define NumberOfGLONASSSat NumberOfSat[CLOCKORBIT_SATGLONASS] 220 #define GPSEpochTime EpochTime[CLOCKORBIT_SATGPS] /* 0 .. 604799 s */ 221 #define GLONASSEpochTime EpochTime[CLOCKORBIT_SATGLONASS] /* 0 .. 86399 s (86400 for leap second) */ 222 #define ClockDataSupplied Supplied[COBOFS_CLOCK] 223 #define HRDataSupplied Supplied[COBOFS_HR] 224 #define OrbitDataSupplied Supplied[COBOFS_ORBIT] 225 #define URADataSupplied Supplied[COBOFS_URA] 226 #define GetClockOrbitBias(a,b,c,d,e) GetSSR(a,b,0,0,c,d,e) 227 #endif /* COR_LEGACY */ 228 229 /* latency check code, disabled by default */ 230 #ifdef COR_LATENCY 231 #define COR_LATENCYCOUNT 100 232 #endif 63 233 64 234 struct ClockOrbit 65 235 { 66 236 enum ClockOrbitType messageType; 67 int GPSEpochTime; /* 0 .. 604799 s */ 68 int GLONASSEpochTime; /* 0 .. 86399 s (86400 for leap second) */ 69 int NumberOfGPSSat; /* 0 .. 32 */ 70 int NumberOfGLONASSSat; /* 0 .. 24 */ 71 int ClockDataSupplied; /* boolean */ 72 int HRDataSupplied; /* boolean */ 73 int OrbitDataSupplied; /* boolean */ 74 int URADataSupplied; /* boolean */ 75 int epochGPS[101]; /* Weber, for latency */ 76 int epochSize; /* Weber, for latency */ 77 int SSRIOD; 78 int SSRProviderID; 79 int SSRSolutionID; 80 int UpdateInterval; 237 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 238 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 239 240 unsigned int Supplied[COBOFS_NUM]; /* boolean */ 241 #ifdef COR_LATENCY 242 unsigned int epochGPS[COR_LATENCYCOUNT+1]; /* Weber, for latency */ 243 unsigned int epochSize; /* Weber, for latency */ 244 #endif 245 unsigned int SSRIOD; 246 unsigned int SSRProviderID; 247 unsigned int SSRSolutionID; 248 unsigned int UpdateInterval; 81 249 enum SatelliteReferenceDatum SatRefDatum; 82 250 struct SatData { 83 int ID; /* GPS or GLONASS */ 84 int IOD; /* GPS or GLONASS */ 251 unsigned int ID; /* all */ 252 unsigned int IOD; /* all */ 253 unsigned int toe; /* SBAS, BDS */ 85 254 double UserRangeAccuracy; /* accuracy values in [m] */ 86 255 double hrclock; … … 100 269 double DeltaA2; /* m/ss */ 101 270 } Clock; 102 } Sat[CLOCKORBIT_ NUMGPS+CLOCKORBIT_NUMGLONASS];103 }; 104 105 struct Bias271 } Sat[CLOCKORBIT_COUNTSAT]; 272 }; 273 274 struct CodeBias 106 275 { 107 enum BiasType messageType; 108 int GPSEpochTime; /* 0 .. 604799 s */ 109 int GLONASSEpochTime; /* 0 .. 86399 s (86400 for leap second) */ 110 int NumberOfGPSSat; /* 0 .. 32 */ 111 int NumberOfGLONASSSat; /* 0 .. 24 */ 112 int UpdateInterval; 113 int SSRIOD; 114 int SSRProviderID; 115 int SSRSolutionID; 276 enum CodeBiasType messageType; 277 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 278 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 279 unsigned int UpdateInterval; 280 unsigned int SSRIOD; 281 unsigned int SSRProviderID; 282 unsigned int SSRSolutionID; 116 283 struct BiasSat 117 284 { 118 int ID; /* GPS or GLONASS*/119 int NumberOfCodeBiases;120 struct CodeBias 285 unsigned int ID; /* all */ 286 unsigned int NumberOfCodeBiases; 287 struct CodeBiasEntry 121 288 { 122 289 enum CodeType Type; 123 290 float Bias; /* m */ 124 291 } Biases[CLOCKORBIT_NUMBIAS]; 125 } Sat[CLOCKORBIT_NUMGPS+CLOCKORBIT_NUMGLONASS]; 292 } Sat[CLOCKORBIT_COUNTSAT]; 293 }; 294 295 struct PhaseBias 296 { 297 enum PhaseBiasType messageType; 298 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 299 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 300 unsigned int UpdateInterval; 301 unsigned int SSRIOD; 302 unsigned int SSRProviderID; 303 unsigned int SSRSolutionID; 304 unsigned int DispersiveBiasConsistencyIndicator; 305 unsigned int MWConsistencyIndicator; 306 struct PhaseBiasSat 307 { 308 unsigned int ID; /* all */ 309 unsigned int NumberOfPhaseBiases; 310 double YawAngle; /* radiant */ 311 double YawRate; /* radiant/s */ 312 struct PhaseBiasEntry 313 { 314 enum CodeType Type; 315 unsigned int SignalIntegerIndicator; 316 unsigned int SignalsWideLaneIntegerIndicator; 317 unsigned int SignalDiscontinuityCounter; 318 float Bias; /* m */ 319 } Biases[CLOCKORBIT_NUMBIAS]; 320 } Sat[CLOCKORBIT_COUNTSAT]; 321 }; 322 323 struct VTEC 324 { 325 unsigned int EpochTime; /* GPS */ 326 unsigned int UpdateInterval; 327 unsigned int SSRIOD; 328 unsigned int SSRProviderID; 329 unsigned int SSRSolutionID; 330 unsigned int NumLayers; /* 1-4 */ 331 double Quality; 332 struct IonoLayers { 333 double Height; /* m */ 334 unsigned int Degree; /* 1-8 */ 335 unsigned int Order; /* 1-8 */ 336 double Sinus[CLOCKORBIT_MAXIONODEGREE][CLOCKORBIT_MAXIONOORDER]; 337 double Cosinus[CLOCKORBIT_MAXIONODEGREE][CLOCKORBIT_MAXIONOORDER]; 338 } Layers[CLOCKORBIT_NUMIONOLAYERS]; 126 339 }; 127 340 … … 129 342 size_t MakeClockOrbit(const struct ClockOrbit *co, enum ClockOrbitType type, 130 343 int moremessagesfollow, char *buffer, size_t size); 131 size_t Make Bias(const struct Bias *b, enumBiasType type,344 size_t MakeCodeBias(const struct CodeBias *b, enum CodeBiasType type, 132 345 int moremessagesfollow, char *buffer, size_t size); 346 size_t MakePhaseBias(const struct PhaseBias *b, enum PhaseBiasType type, 347 int moremessagesfollow, char *buffer, size_t size); 348 size_t MakeVTEC(const struct VTEC *b, int moremessagesfollow, char *buffer, 349 size_t size); 133 350 134 351 enum GCOB_RETURN { … … 143 360 /* failed to do the work */ 144 361 GCOBR_NOCLOCKORBITPARAMETER = -10, 145 GCOBR_NOBIASPARAMETER = -11, 362 GCOBR_NOCODEBIASPARAMETER = -11, 363 GCOBR_NOPHASEBIASPARAMETER = -12, 364 GCOBR_NOVTECPARAMETER = -13, 146 365 /* data mismatch - data in storage does not match new data */ 147 366 GCOBR_TIMEMISMATCH = -20, … … 155 374 156 375 /* buffer should point to a RTCM3 block */ 157 enum GCOB_RETURN Get ClockOrbitBias(struct ClockOrbit *co, struct Bias *b,158 const char *buffer, size_t size, int *bytesused);376 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, struct VTEC *v, 377 struct PhaseBias *pb, const char *buffer, size_t size, int *bytesused); 159 378 160 379 #endif /* RTCM3_CLOCK_ORBIT_RTCM_H */
Note:
See TracChangeset
for help on using the changeset viewer.