source: pacpusframework/branches/2.0-beta1/include/Pacpus/structure/structure_septentrio.h@ 89

Last change on this file since 89 was 89, checked in by morasjul, 11 years ago

PACPUS 2.0 Beta deployed in new branch

Major changes:
-Add communication interface between components
-Add examples for communications interface (TestComponents)
-Move to Qt5 support

  • Property svn:executable set to *
File size: 46.1 KB
Line 
1/*! \file structure_septentrio.h
2 \brief Structure for Septentrio Binary Format frames.
3 \author Clement Fouque - HDS
4 \date 16/07/2008
5 \bug None
6 \warning None
7
8 This file contains all structures corresponding to Septentrio Binary Format frames emit by a Septentrio GNSS Receiver.
9
10 BLOCK HEADER
11
12 MEASUREMENT BLOCKS:
13 - MeasEpoch
14 - ShortMeasEpoch
15 - GenMeasEpoch
16 - EndOfMeas
17
18 GPS MESSAGE BLOCKS:
19 - GPSNav
20 - GPSAlm
21 - GPSIon
22 - GPSUtc
23 - GPSRaw
24 - CNAVRaw
25
26 SBAS MESSAGES BLOCKS:
27 - GEOMT00
28 - GEOPRNMask
29 - GEOFasCorr
30 - GEOIntegrity
31 - GEOFastCorrDegr
32 - GEONav
33 - GEODegrFactors
34 - GEONetworkTime
35 - GEOAlm
36 - GEOIGPMask
37 - GEOLongTermCorr
38 - GEOIonoDelay
39 - GEOServiceLevel
40 - GEOClockEphCovMatrix
41 - GEORaw
42
43*/
44
45#ifndef STRUCTURE_SEPTENTRIO_H
46#define STRUCTURE_SEPTENTRIO_H
47
48#include <kernel/cstdint.h>
49#include <vector>
50
51////////////////////
52// BLOCK HEADER //
53////////////////////
54/// Structure for header of each frame
55/// SBF Bloc Header Description
56typedef struct
57{
58 /// Magic Word For Frame sync
59 int8_t sync[2];
60 /// Value for CRC check
61 uint16_t crc;
62 /// Frame Numeric id
63 uint16_t id;
64 /// Message Frame Length
65 uint16_t length;
66} SbfDataBlocHeader;
67
68//////////////////////
69// BLOCK RAW DATA //
70//////////////////////
71/// Structure for raw data
72typedef struct
73{
74 SbfDataBlocHeader header;
75 uint8_t data[4096];
76} SbfDataRaw;
77
78/////////////////////////////
79// MEASUREMENT BLOCKS: //
80// - MeasEpoch //
81// - ShortMeasEpoch //
82// - GenMeasEpoch //
83// - EndOfMeas //
84/////////////////////////////
85/// Channel Data for Meas Epoch
86typedef struct
87{
88 /// Range on C/A Code (m)
89 double CACode;
90 /// Diff between P1 and C/A code (m)
91 float P1_CACode;
92 /// Diff between P2 and C/A code (m)
93 float P2_CACode;
94 /// L1 Carrier Phase Meas (cycles)
95 double L1Phase;
96 /// L2 Carrier Phase Meas (cycles)
97 double L2Phase;
98 /// Doppler shift on L1 (Hz)
99 double L1Doppler;
100 /// Doppler shift on L2 (Hz)
101 double L2Doppler;
102 /// Code To Noise Ratio on C/A (dB-Hz)
103 float CACN0;
104 /// Code To Noise Ratio on P1 (dB-Hz)
105 float P1CN0;
106 /// Code To Noise Ratio on P2 (dB-Hz)
107 float P2CN0;
108 /// Satellite ID for Current Sub Block
109 uint16_t SVID;
110 /// Receiver Channel for tracked SV
111 uint16_t RXChannel;
112 /// Duration of continuous Tracking
113 float LockTime;
114 /// L1 Loss-ofLock Indicator
115 bool L1_lli; // L1 Loss-of-Lock Indicator
116 /// L1 Loss-ofLock Indicator
117 bool L2_lli;
118 /// Smoothing of L1-Code
119 bool L1_smooth; // Smoothing of L1-code;
120 /// Smoothing of L2-Code
121 bool L2_smooth;
122 /// MultipathMitigation on C/A code
123 bool CA_MultipathMitigation;
124 /// Antenna ID for the current Sub Block
125 bool AntennaID[3];
126} SbfDataMEChannelData;
127
128/// Measurement Epoch
129/// SBF Block for a measurement Epoch
130typedef struct
131{
132 /// GPS Time Of Week (sec)
133 float TOW;
134 /// GPS Week Number
135 uint16_t WNc;
136 /// Number of Channel Data SubBlock given in the following
137 uint32_t Nsb;
138 /// Length of one sub-block in bytes
139 uint32_t SBLength;
140 /// Structure for Channel Data
141 SbfDataMEChannelData ChannelData[16];
142} SbfDataMeasEpoch;
143
144typedef struct
145{
146 uint32_t CACode;
147 int32_t L1PhaseMSB;
148 int32_t L2PhaseMSB;
149 int16_t L1PhaseLSB;
150 int16_t L2PhaseLSB;
151 int16_t P1_CACode;
152 int16_t P2_CACode;
153 uint16_t CN0s;
154 uint8_t SVID;
155 uint8_t flag;
156} SbfDataSMEChannelData;
157
158typedef struct
159{
160 float TOW;
161 uint16_t WNc;
162 uint8_t N;
163 uint8_t SBLength;
164 SbfDataSMEChannelData ChannelData[16];
165} SbfDataShortMeasEpoch;
166
167typedef struct
168{
169 uint8_t Type;
170 uint8_t LockTime;
171 uint8_t CN0;
172 uint8_t OffsetMSB;
173 int8_t CarrierMSB;
174 uint16_t CodeOffsetLSB;
175 uint16_t CarrierLSB;
176 uint16_t DopplerOffsetLSB;
177} SbfDataGMESubBlockType2;
178
179typedef struct
180{
181 uint8_t RXChannel;
182 uint8_t Type;
183 uint8_t SVID;
184 uint8_t Misc;
185 uint32_t CodeLSB;
186 int32_t Doppler;
187 uint16_t CarrierLSB;
188 int8_t CarrierMSB;
189 uint8_t CN0;
190 uint16_t LockTime;
191 uint8_t N_Type2;
192 SbfDataGMESubBlockType2 SubBlocks[10];
193 // std::vector<SbfDataGMESubBlockType2> SubBlocks; // Tester pour voir combien sont nécessaires !
194} SbfDataGMESubBlockType1;
195
196typedef struct
197{
198 float TOW;
199 uint16_t WNc;
200 uint8_t N;
201 uint8_t SB1Length;
202 uint8_t SB2Length;
203 uint8_t CommonFlag;
204 SbfDataGMESubBlockType1 ChannelData[16];
205} SbfDataGenMeasEpoch;
206
207typedef struct
208{
209 /// GPS Time Of Week (sec)
210 float TOW;
211 /// GPS Week Number
212 uint16_t WNc;
213} SbfDataEndOfMeas;
214
215/////////////////////////////
216// GPS MESSAGE BLOCKS: //
217// - GPSNav //
218// - GPSAlm //
219// - GPSIon //
220// - GPSUtc //
221// - GPSRaw //
222// - CNAVRaw //
223/////////////////////////////
224/// Decoded Ephemeris for a given SV
225typedef struct
226{
227 /// GPS Time of reception of the Navigation Data set (sec)
228 float TOW; // GPS Time Of Week (sec)
229 /// Week Number associated with TOW
230 uint16_t WNc; // GPS Week Number
231 /// PRN number of SV
232 uint16_t PRN; // GPS Sat PRN code
233 // uint8_t Reserved; // For future release
234 /// Week Number associated to navigation frame
235 int16_t WN; // Week Nummber from Nav message
236 /// Code(s) on L2 Channel
237 uint8_t CAorPonL2; // Code on L2 channel
238 /// User Range Accuracy index
239 uint8_t URAidx; // User Range Accuracy Index
240 /// 6-bits health
241 uint8_t health;
242 /// Data Flag for L2 P-Code
243 uint8_t L2DataFlag; // Data flag for L2-P code
244 /// Clock Issue of Data
245 uint16_t IODC; // Issue of CLock Data
246 /// Issue of ephemeris data ( from subframe 2 )
247 uint8_t IODE2; // Issue of ephemeris data ( subframe 2 )
248 /// Issue of ephemeris data ( from subframe 3 )
249 uint8_t IODE3; // Issue of ephemeris data ( subframe 3 )
250 /// Curve Fit interval
251 uint8_t FitIntFlg; // Curve Fit interval
252 // uint8_t NotUsed; // Unuse, set to 0;
253 /// Estimated Group Delay Differential (sec)
254 float T_gd; // TIme Group Delay
255 /// Clock Data Reference Time (sec)
256 uint32_t t_oc; // Clock Data Reference Time (int32_t ou float ?? )
257 /// SV clock parameters [ s/s^2 , s/s , s ]
258 float a_f[3]; // SV Clock parameters (bias,drift,aging)
259 // float a_f2; // SV Clock parameters (bias,drift,aging)
260 // float a_f1;
261 // float a_f0;
262 /// Amplitude of the sine harmonic correction term to the orbit radius (m)
263 float C_rs; // Amplitude of the sine harmonic correction trm to the orbit
264 /// Mean Motion difference from computed value ( semi-circle / s )
265 float DELTA_N; // Mean motion difference
266 /// Mean anomaly at reference time (semi-circle)
267 double M_0; // Mean Anomaly
268 /// Amplitude of the cosine harmonic correction term to the argument of latitude (rad)
269 float C_uc; //
270 /// Eccentricity (-)
271 double e; // Excentricity
272 /// Amplitude of the sine harmonic correction term to the argument of latitude (rad)
273 float C_us;
274 /// Square root of semi-major axis ( sqrt(m) )
275 double SQRT_A; // SQRT of semi-major axis
276 /// Ephemeris reference time (sec)
277 uint32_t t_oe; // Ref time of ephemeris
278 /// Amplitude of the cosine harmonic correction term to the angle of inclination (rad)
279 float C_ic;
280 /// Longitude of ascending node of orbit plane at weekly epoch (semi-circle)
281 double OMEGA_0;
282 /// Amplitude of the sine harmonic correction term to the angle of inclination (rad)
283 float C_is;
284 /// Inclination at reference time (semi-circle)
285 double i_0;
286 /// Amplitude of the cosine harmonic correction term to the orbit radius (rad)
287 float C_rc;
288 /// Argument of perigee (semi-circle)
289 double omega;
290 /// Rate of right Ascension (semi-circle/s)
291 float OMEGADOT;
292 /// Rate of inclination angle (semi-circle/s)
293 float IDOT;
294 /// Week number associated with t_oc - modulo 1024
295 uint16_t WNt_oc; // WN to be used with t_oc
296 /// Week number associated with t_oe - modulo 1024
297 uint16_t WNt_oe; // WN to be used with t_oe
298} SbfDataGPSNav;
299
300/// decoded GPS Almanach
301typedef struct
302{
303 /// GPS time of reception of almanach data set (sec)
304 float TOW; // GPS Time Of Week (sec)
305 /// GPS Week number associated with TPW
306 uint16_t WNc; // GPS Week Number
307 /// PRN Number of GPS SV
308 uint8_t PRN; // GPS Sat PRN code
309 // uint8_t Reserved; // For future release
310 /// Eccentricity (-)
311 double e; // Excentricity
312 /// Reference time of ephemeris
313 uint32_t t_oa; // Almanach ref time of week
314 /// Inclination at ref time, relative to i0 = 0.3 semi-circles (semi-circle)
315 float delta_i;
316 /// Rate of right ascension (semi-circle/s)
317 float OMEGADOT;
318 /// Square root of semi-major axis ( sqrt(m))
319 double SQRT_A; // SQRT of semi-major axis
320 /// Longitude of ascending node of orbit plane (semi-circle)
321 double OMEGA_0;
322 /// Argument of perigee (semi-circle)
323 double omega;
324 /// Mean Anomaly (semi-circle)
325 double M_0; // Mean Anomaly
326 /// SV Clock parameters (drift,bias) [s/s,s]
327 float a_f[2]; // SV Clock parameters (bias,drift,aging)
328 // float a_f1;
329 // float a_f0;
330 /// Week Number associated with t_oa
331 uint8_t WNa; // WN to be used with t_oc
332 /// Anti-spoofing and satelitte configuration
333 uint8_t AS_config;
334 /// Health from almanach page
335 uint8_t health8;
336 /// Health summary
337 uint8_t health6;
338} SbfDataGPSAlm;
339
340/// Ionospheric delay paramters
341typedef struct
342{
343 /// GPS Time Of Week of iono param reception (sec)
344 float TOW;
345 /// GPS Week Number
346 uint16_t WNc;
347 /// GPS Sat PRN code
348 uint8_t PRN;
349 // uint8_t Reserved; // For future release
350 /// Vertical Delay parameters
351 float alpha[4];
352 // float alpha_0;
353 // float alpha_1;
354 // float alpha_2;
355 // float alpha_3;
356 /// Model period coef
357 float beta[4];
358 // float beta_0;
359 // float beta_1;
360 // float beta_2;
361 // float beta_3;
362} SbfDataGPSIon;
363
364/// GPS Time to UTC Time parameters
365typedef struct
366{
367 /// GPS Time Of Week (sec) of iono param reception
368 float TOW;
369 /// GPS Week Number
370 uint16_t WNc;
371 /// GPS Sat PRN code
372 uint8_t PRN;
373 // uint8_t Reserved;
374 /// First order term of the polynomial
375 float A_1;
376 /// Constant term
377 double A_0;
378 /// Ref time for UTC data
379 uint32_t t_ot;
380 /// UTC ref week Number
381 uint8_t WN_t;
382 /// Delta time due to leap second ( effectivity time *NOT* in the past )
383 int8_t DEL_t_LS;
384 /// Effectivity time of leap second (week)
385 uint8_t WN_LSF;
386 /// Effectivity time of leap second (day)
387 uint8_t DN;
388 /// Delta time due to leap second ( effectivity time in the past )
389 int8_t DEL_t_LSF;
390} SbfDataGPSUtc;
391
392/// GPS raw navigation subframe
393/// contains the 300 bits of a GPS subframe ( ten 30-bits words )
394typedef struct
395{
396 /// GPS time of reception of this subframe (sec)
397 float TOW; // GPS Time Of Week (sec)
398 /// GPS Week Number associated to ToW
399 uint16_t WNc; // GPS Week Number
400 /// PRN number of the GPS SV
401 uint16_t PRN; // GPS Sat PRN code
402 // uint8_t Reserved; // For future release
403 /// 10 words of a GPS Subframe
404 uint32_t GPSWords[10]; // Raw GPS words for a subframe.
405} SbfDataGPSRaw;
406
407/// GPS raw navigation subframe
408/// contains the 300 bits of a GPS subframe ( ten 30-bits words )
409/// demodulated on L2C
410typedef struct
411{
412 /// GPS time of reception of this subframe (sec)
413 float TOW; // GPS Time Of Week (sec)
414 /// GPS Week Number associated to ToW
415 uint16_t WNc; // GPS Week Number
416 /// PRN number of the GPS SV
417 uint16_t PRN; // GPS Sat PRN code
418 // uint8_t Reserved; // For future release
419 /// 10 words of a GPS Subframe
420 uint32_t CNAVBits[10]; // Raw GPS words for a subframe.
421} SbfDataCNAVRaw;
422
423///////////////////////////////////
424// SBAS MESSAGES BLOCKS: //
425// - GEOMT00 //
426// - GEOPRNMask //
427// - GEOFasCorr //
428// - GEOIntegrity //
429// - GEOFastCorrDegr //
430// - GEONav //
431// - GEODegrFactors //
432// - GEONetworkTime //
433// - GEOAlm //
434// - GEOIGPMask //
435// - GEOLongTermCorr //
436// - GEOIonoDelay //
437// - GEOServiceLevel //
438// - GEOClockEphCovMatrix //
439// - GEORaw //
440///////////////////////////////////
441typedef struct
442{
443 float TOW;
444 uint16_t WNc;
445 uint8_t PRN;
446} SbfDataGEOMT00;
447
448typedef struct
449{
450 float TOW;
451 uint16_t WNc;
452 uint8_t PRN;
453 uint8_t IODP;
454 uint8_t NbrPRNs;
455 uint8_t PRNMask[32];
456} SbfDataGEOPRNMask;
457
458/// Sub Blocks data for SbfDataGEOFastCorr
459typedef struct
460{
461 /// Index number in the PRN Mask
462 uint8_t PRNMaskNo;
463 /// User Range Differential Error Indicator for the PRN at index PRNMaskNo
464 uint8_t UDREI;
465 /// Pseudorange corrections for the PRN at index PRNMaskNo (m)
466 float PRC;
467} SbfDataGEOFastCorrSubBlock;
468
469/// Decoded SBAS fast corrections
470/// contains the SBAS decoded fast corrections from message type 2,3,4,5,24
471typedef struct
472{
473 /// Transmission time of the end of the message.
474 float TOW;
475 /// Week Number associated with TOW;
476 uint16_t WNc;
477 /// Issue of Data - PRN
478 uint8_t PRN;
479 /// FC corrections message type
480 uint8_t MT;
481 /// Issue of Data - PRN;
482 uint8_t IODP;
483 /// Issue of Data - Fast Corrections;
484 uint8_t IODF;
485 /// Number of FC sets in this message according to the block type
486 uint8_t N;
487 /// Length of the FastCorr Sub Block, (bytes)
488 uint8_t SBLength;
489 /// Fast Corrections Sub Blocks
490 SbfDataGEOFastCorrSubBlock FastCorr[16];
491} SbfDataGEOFastCorr;
492
493/// Decoded SBAS integrity informations
494/// contains the SBAS decoded integrity information from message type 6
495typedef struct
496{
497 /// Transmission time of the end of the message.
498 float TOW;
499 /// Week Number associated with TOW;
500 uint16_t WNc;
501 /// PRN of transmitting SBAS SV
502 uint8_t PRN;
503 /// Issue of Data - Fast Corrections for MT02, MT03, MT04 and MT05
504 uint8_t IODF[4];
505 /// User Differential Range Error Indicator.
506 uint8_t UDREI[51];
507} SbfDataGEOIntegrity;
508
509/// Decoded SBAS integrity informations
510/// contains the SBAS decoded fast correction degration factor from message type 7
511typedef struct
512{
513 /// Transmission time of the end of the message.
514 float TOW;
515 /// Week Number associated with TOW;
516 uint16_t WNc;
517 /// PRN of transmitting SBAS SV
518 uint8_t PRN;
519 /// Issue of data - PRN
520 uint8_t IODP;
521 /// System latency
522 uint8_t t_lat;
523 /// Degradation factor for each 51 slot;
524 uint8_t Ai[51];
525} SbfDataGEOFastCorrDegr;
526
527/// Decoded SBAS navigation data
528/// Decoded navigation data transmitted in SBAS message type 9.
529typedef struct
530{
531 /// Transmission time of the end of the message.
532 float TOW;
533 /// Week Number associated with TOW;
534 uint16_t WNc;
535 /// PRN of transmitting SBAS SV
536 uint8_t PRN;
537 /// Issue of data - Navigation
538 uint16_t IODN;
539 /// Accuracy Exponent
540 uint16_t URA;
541 /// Time of applicability
542 uint32_t t0;
543 /// X Position at t0;
544 double Xg;
545 /// Y Position at t0;
546 double Yg;
547 /// Z Position at t0;
548 double Zg;
549 /// X Velocity at t0;
550 double Xgd;
551 /// Y Velocity at t0;
552 double Ygd;
553 /// Z Velocity at t0;
554 double Zgd;
555 /// X acceleration at t0;
556 double Xgdd;
557 /// Y acceleration at t0;
558 double Ygdd;
559 /// Z acceleration at t0;
560 double Zgdd;
561 /// time offset with respect to WAAS NetWork
562 float AGf[2];
563} SbfDataGEONav;
564
565/// Decoded SBAS degradation factors
566/// Decoded navigation data transmitted in SBAS message type 9.
567typedef struct
568{
569 /// Transmission time of the end of the message.
570 float TOW;
571 /// Week Number associated with TOW;
572 uint16_t WNc;
573 /// PRN of transmitting SBAS SV
574 uint8_t PRN;
575 /// A parameter associated with the relative estimation noise and round-off error.
576 double Brrc;
577 /// Maximum round-off error due to the LSB resolution of the orbit and clock information.
578 double Cltc_lsb;
579 /// Velocity error bound on the maximum range rate difference of missed messages due to clock and orbit rate differences.
580 double Cltc_v1;
581 /// Update interval for long term corrections when the velocity code is 1.
582 uint32_t Iltc_v1;
583 /// Bound on the update delta between successive long term corrections.
584 double Cltc_v0;
585 /// Minimum update interval for long term messages when the velocity code is 0.
586 uint32_t Iltc_v0;
587 /// Maximum round-off error due to the LSB resolution of the orbit and clock information.
588 double Cgeo_lsb;
589 /// Velocity error bound on the maximum range rate difference of missed messages due to clock and orbit rate differences.
590 double Cgeo_v;
591 /// Update interval for GEO navigation messages.
592 uint32_t Igeo;
593 /// A degradation parameter.
594 float Cer;
595 /// Bound on the difference between successive ionospheric grid delay values.
596 double Ciono_step;
597 /// Minimum update interval for ionospheric correction messages.
598 uint32_t Iiono;
599 /// Rate of change of the ionospheric corrections.
600 double Ciono_ramp;
601 /// Root-sum-square flag (UDRE)
602 uint8_t RSSudre;
603 /// Root-sum-square flag (IONO)
604 uint8_t RSSiono;
605 /// A parameter used to compensate for the errors introduced by quantization (introduced in DO 229-C). To be multiplied by the SF parameter from the GEOClockEphCovMatrix block.
606 double Ccovariance;
607} SbfDataGEODegrFactors;
608
609/// Decoded SBAS degradation factors
610/// Decoded navigation data transmitted in SBAS message type 9.
611typedef struct
612{
613 /// Transmission time of the end of the message.
614 float TOW;
615 /// Week Number associated with TOW;
616 uint16_t WNc;
617 /// PRN of transmitting SBAS SV
618 uint8_t PRN;
619 /// first order term of polynomial
620 float A1;
621 /// constant term of polynomial
622 double A0;
623 /// reference time for UTC data (time of week)
624 uint32_t t_ot;
625 /// UTC reference week number, to which t_ot is referenced
626 uint8_t WNt;
627 /// Delta time due to leap seconds whenever the effectivity time is not in the past
628 int8_t DEL_t_1S;
629 /// Effectivity time of leap second (week)
630 uint8_t WN_LSF;
631 /// Effectivity time of leap second (day)
632 uint8_t DN;
633 /// Delta time due to leap seconds whenever the effectivity time is in the past
634 int8_t DEL_t_LSF;
635 /// UTC Standard Identifier
636 uint8_t UTCStdId;
637 /// GPS week number (modulo 1024)
638 uint16_t GPSWN;
639 /// GPS time-of-week
640 uint32_t GPSTOW;
641 /// Glonass Indicator
642 uint8_t GLONASSind;
643} SbfDataGEONetworkTime;
644
645/// Decoded SBAS almanach data
646/// Decoded navigation data transmitted in SBAS message type 9.
647typedef struct
648{
649 /// Transmission time of the end of the message.
650 float TOW;
651 /// Week Number associated with TOW;
652 uint16_t WNc;
653 /// PRN of transmitting SBAS SV
654 uint8_t PRN;
655 /// Data ID
656 uint8_t DataID;
657 /// Health bits
658 uint16_t Health;
659 /// Time of applicability
660 uint32_t t0;
661 /// X Position at t0;
662 double Xg;
663 /// Y Position at t0;
664 double Yg;
665 /// Z Position at t0;
666 double Zg;
667 /// X Velocity at t0;
668 double Xgd;
669 /// Y Velocity at t0;
670 double Ygd;
671 /// Z Velocity at t0;
672 double Zgd;
673} SbfDataGEOAlm;
674
675/// Decoded SBAS ionospheric grid point mask
676/// Decoded ionospheric grid point mask transmitted in SBAS message type 18.
677typedef struct
678{
679 /// Transmission time of the end of the message, in milliseconds from the beginning of the current GPS week (to go with WNc). TOW is always a multiple of 1000.
680 float TOW;
681 /// Week number associated with TOW (see D.1.5)
682 uint16_t WNc;
683 /// PRN number of the SBAS satellite from which the message has been received.
684 uint8_t PRN;
685 /// Number of bands being broadcast.
686 uint8_t NbrBands;
687 /// Band number.
688 uint8_t BandNbr;
689 /// Issue of data – ionosphere.
690 uint8_t IODI;
691 /// Number of ionospheric grid points (IGP) designated in the mask.
692 uint8_t NbrIGPs;
693 /// List of the IGPs in the IGP mask.
694 uint8_t IGPMask[201];
695} SbfDataGEOIGPMask;
696
697/// Decoded long term corrections SubBlock definition
698/// Decoded long term corrections SubBlock definition transmitted in SBAS message types 24 and 25. To go with <b>SbfDataGEOLongTermCorr</b>
699typedef struct
700{
701 /// Velocity code (0 or 1)
702 uint8_t VelocityCode;
703 /// Sequence in the PRN mask, from 1 to 51. Note that if the PRN mask No. from the original message is 0, the corresponding long term corrections are ignored, and hence not included in the GEOLongTermCorr block.
704 uint8_t PRNMaskNo;
705 /// Issue of data – PRN.
706 uint8_t IODP;
707 /// Issue of data – ephemeris.
708 uint8_t IODE;
709 /// Satellite position offset (x).
710 float dx;
711 /// Satellite position offset (y).
712 float dy;
713 /// Satellite position offset (z).
714 float dz;
715 /// Satellite velocity offset (x), or 0.0 if VelocityCode is 0.
716 float dxrate;
717 /// Satellite velocity offset (y), or 0.0 if VelocityCode is 0.
718 float dyrate;
719 /// Satellite velocity offset (z), or 0.0 if VelocityCode is 0.
720 float dzrate;
721 /// Satellite clock offset.
722 float da_f0;
723 /// Satellite drift correction, or 0.0 if VelocityCode is 0.
724 float da_f1;
725 /// Time-of-day of applicability, or 0 if VelocityCode is 0.
726 uint32_t t_oe;
727} SbfDataLTCorr;
728
729/// Decoded SBAS ionospheric grid point mask
730/// Decoded ionospheric grid point mask transmitted in SBAS message type 18.
731typedef struct
732{
733 /// Transmission time of the end of the message, in milliseconds from the beginning of the current GPS week (to go with WNc). TOW is always a multiple of 1000.
734 float TOW;
735 /// Week number associated with TOW (see D.1.5)
736 uint16_t WNc;
737 /// PRN number of the SBAS satellite from which the message has been received.
738 uint8_t PRN;
739 /// Number of long-term corrections in this message. This is the number of LTCorr sub-blocks. N can be 0, 1, 2, 3 or 4.
740 uint8_t N;
741 /// Length of the LTCorr sub-blocks in bytes
742 uint8_t SBLength;
743 /// See LTCorr definition below
744 SbfDataLTCorr LTCorr[5];
745} SbfDataGEOLongTermCorr;
746
747/// decoded ionospheric subblock
748/// decoded ionospheric delays transmitted in SBAS message type 26. To go With SbfDataGEOIonoDelay
749typedef struct
750{
751 /// Sequence number in the IGP mask (see GEOIGPMask block), from 1 to 201.
752 uint8_t IGPMaskNo;
753 /// Grid Ionospheric Vertical Error Indicator, from 0 to 15
754 uint8_t GIVEI;
755 /// IGP vertical delay estimate.
756 float VerticalDelay;
757} SbfDataIDC;
758
759/// decoded ionospheric delays
760/// decoded ionospheric delays transmitted in SBAS message type 26.
761typedef struct
762{
763 /// Transmission time of the end of the message, in milliseconds from the beginning of the current GPS week (to go with WNc). TOW is always a multiple of 1000.
764 float TOW;
765 /// Week number associated with TOW (see D.1.5)
766 uint16_t WNc;
767 /// PRN number of the SBAS satellite from which the message has been received.
768 uint8_t PRN;
769 /// Band number.
770 uint8_t BandNbr;
771 /// Issue of data – ionosphere.
772 uint8_t IODI;
773 /// Number of ionospheric delay corrections in this message. This is the number of IDC sub-blocks. <b>N is always 15.</b>
774 uint8_t N;
775 /// Length of the IDC sub-blocks in bytes
776 uint8_t SBLength;
777 /// See IDC definition below.
778 SbfDataIDC IDC[15];
779} SbfDataGEOIonoDelay;
780
781/// decoded service level message for a geostationary SBAS satellite
782/// a decoded service level message for a geostationary SBAS satellite as sent in message type 27. To go with SbfDataGEOServiceLevel
783typedef struct
784{
785 /// Coordinate 1 latitude, from –90 to +90
786 int8_t Latitude1;
787 /// Coordinate 2 latitude, from –90 to +90
788 int8_t Latitude2;
789 /// Coordinate 1 longitude, from –180 to +180
790 int32_t Longitude1;
791 /// Coordinate 2 longitude, from –180 to +180
792 int32_t Longitude2;
793 /// Region Shape: 0=triangular, 1=square
794 uint8_t RegionShape;
795
796} SbfDataServiceRegion;
797
798/// decoded service level message for a geostationary SBAS satellite
799/// a decoded service level message for a geostationary SBAS satellite as sent in message type 27.
800typedef struct
801{
802 /// Transmission time of the end of the message, in milliseconds from the beginning of the current GPS week (to go with WNc). TOW is always a multiple of 1000.
803 float TOW;
804 /// Week number associated with TOW (see D.1.5)
805 uint16_t WNc;
806 /// PRN number of the SBAS satellite from which the message has been received.
807 uint8_t PRN;
808 /// Issue of Data Service level, ranging from 0 to 7
809 uint8_t IODS;
810 /// Number of service messages (MT27), from 1 to 8
811 uint8_t NrMessages;
812 /// Service message number, from 1 to 8
813 uint8_t MessageNR;
814 /// Priority Code, from 0 to 3
815 uint8_t PriorityCode;
816 /// δUDRE Indicator for users inside the service region, from 0 to 15
817 uint8_t dUDREI_In;
818 /// δUDRE Indicator for users outside the service region, from 0 to 15
819 uint8_t dUDREI_Out;
820 /// Number of Regions in this message. This is the number of ServiceRegion sub-blocks. Ranging from 0 to 7
821 uint8_t N;
822 /// Length of the ServiceRegion sub-blocks in bytes
823 uint8_t SBLength;
824 /// See ServiceRegion definition below
825 SbfDataServiceRegion ServiceRegion[8];
826} SbfDataGEOServiceLevel;
827
828/// decoded clock-ephemeris covariance Cholesky factor matrix
829/// Decoded clock-ephemeris covariance Cholesky factor matrix transmitted in SBAS message type 28. To go with SbfDataGEOServiceLevel.
830typedef struct
831{
832 /// Sequence number in the PRN mask, from 1 to 51. Note that if the PRN mask No. from the original message is 0, the corresponding matrix is ignored, and hence not included in the GEOClockEphCovMatrix block.
833 uint8_t PRNMaskNo;
834 /// Scale exponent; scale factor ( = 2^(scale exponent – 5))
835 uint8_t ScaleExp;
836 /// E(1,1)
837 uint16_t E11;
838 /// E(2,2)
839 uint16_t E22;
840 /// E(3,3)
841 uint16_t E33;
842 /// E(4,4)
843 uint16_t E44;
844 /// E(1,2)
845 int32_t E12;
846 /// E(1,3)
847 int32_t E13;
848 /// E(1,4)
849 int32_t E14;
850 /// E(2,3)
851 int32_t E23;
852 /// E(2,4)
853 int32_t E24;
854 /// E(3,4)
855 int32_t E34;
856
857} SbfDataCovMatrix;
858
859/// decoded clock-ephemeris covariance Cholesky factor matrix
860/// Decoded clock-ephemeris covariance Cholesky factor matrix transmitted in SBAS message type 28
861typedef struct
862{
863 /// Transmission time of the end of the message, in milliseconds from the beginning of the current GPS week (to go with WNc). TOW is always a multiple of 1000.
864 float TOW;
865 /// Week number associated with TOW (see D.1.5)
866 uint16_t WNc;
867 /// PRN number of the SBAS satellite from which the message has been received.
868 uint8_t PRN;
869 /// Issue of data – PRN.
870 uint8_t IODP;
871 /// Number of covariance matrices in this message. This is the number of CovMatrix sub-blocks. N can be 1 or 2.
872 uint8_t N;
873 /// Length of the CovMatrix sub-blocks in bytes
874 uint8_t SBLength;
875 /// See CovMatrix definition below
876 SbfDataCovMatrix CovMatrix[2];
877} SbfDataGEOClockEphCovMatrix;
878
879/// raw 250 bits of a navigation message from a geostationary SBAS satellite
880/// This block contains the raw 250 bits of a navigation message from a geostationary SBAS satellite.
881/// The 250 bits are stored in 8 successive 32-bit integers. The 6 unused bits are set to 0.
882typedef struct
883{
884 /// Transmission time of the end of the message, in milliseconds from the beginning of the current GPS week (to go with WNc). TOW is always a multiple of 1000.
885 float TOW;
886 /// Week number associated with TOW (see D.1.5)
887 uint16_t WNc;
888 /// PRN number of the SBAS satellite from which the message has been received.
889 uint8_t PRN;
890 /// Signal source flag: 0 = SIS; 1 = SISNeT
891 uint8_t SignalSource;
892 /// Raw 250 bits of the message.
893 /// The first received bit is stored as bit 31 (MSB) of RawMessageBits[0], the 250-th bit is stored at bit position 6 in RawMessageBits[7].
894 /// The 6 LSBs of RawMessageBits[7] are not used, and set to 0.
895 /// The 24-bit CRC contained in the last 24 bits of the 250-bit message is always valid and ought not be checked.
896 uint32_t RawMessageBits[8];
897} SbfDataGEORaw;
898
899/////////////////////////////////////////
900// POSITION, VELOCITY & TIME BLOCKS: //
901// - PVTCartesian //
902// - PVTGeodetic //
903// - PosCovCartesian //
904// - PosCovGeodetic //
905// - VelCovCartesian //
906// - VelCovGeodetic //
907// - XDOP //
908// - PVTResiduals //
909// - RAIMStatistics //
910// - GEOCorrections //
911// - BaseLine //
912// - EndOfPVT //
913/////////////////////////////////////////
914typedef struct
915{
916 float TOW; // in s of week
917 uint16_t WNc; // GPS week
918 uint8_t nrSV; // number of satellites used in the PVT computation
919 uint8_t error;
920 uint8_t mode;
921 uint8_t system;
922 bool gpsUsed; // depends on system
923 bool glonassUsed; // depends on system
924 bool galileoUsed; // depends on system (N/A)
925 bool otherGnssUsed; // depends on system (N/A)
926 uint8_t sbas; // 0(no) 1(egnos) 2(waas) 3(msas) 15(unknown)
927 uint8_t info;
928 bool PVTFix3D; // true = 3D PVT fix; false = 2D PVT Fix
929 bool L1SignalUsed;
930 bool L2SignalUsed;
931 bool sbasLTC; // Long Term Corerctions used
932 bool sbasFC; // Fast Corrections used
933 bool sbasIono; // Ionospheric Model used
934 bool sbasPA; // Precision Approach used
935 uint8_t sbasPrn;
936 double x; // meter
937 double y;
938 double z;
939 float vx; // m/s
940 float vy;
941 float vz;
942 double rxClockBias; // sec
943 float rxClockDrift; // s/s
944 uint16_t meanCorrAge; // 1/100 sec
945 uint16_t refBaseId; // Base station for differential corrections
946} SbfDataPVTCartesian;
947
948typedef struct
949{
950 float TOW; // in s of week
951 uint16_t WNc; // GPS week
952 uint8_t nrSV; // number of satellites used in the PVT computation
953 uint8_t error;
954 uint8_t mode;
955 uint8_t system;
956 bool gpsUsed; // depends on system
957 bool glonassUsed; // depends on system
958 bool galileoUsed; // depends on system (N/A)
959 bool otherGnssUsed; // depends on system (N/A)
960 uint8_t sbas; // 0(no) 1(egnos) 2(waas) 3(msas) 15(unknown)
961 uint8_t info;
962 bool PVTFix3D; // true = 3D PVT fix; false = 2D PVT Fix
963 bool L1SignalUsed;
964 bool L2SignalUsed;
965 bool sbasLTC; // Long Term Corerctions used
966 bool sbasFC; // Fast Corrections used
967 bool sbasIono; // Ionospheric Model used
968 bool sbasPA; // Precision Approach used
969 uint8_t sbasPrn;
970 double lat; // North Latitude: -pi/2 -> pi/2 (rad)
971 double lon; // East Longitude: -pi -> pi (rad)
972 double h; // WGS84 Ellipsoidal heigth
973 float Vn; // North Velocity
974 float Ve; // East Velocity
975 float Vu; // Up Velocity
976 float GeoidUndulation;// Local Geoid Undulation
977 double rxClockBias; // sec
978 float rxClockDrift; // s/s
979 uint16_t meanCorrAge; // 1/100 sec
980 uint16_t refBaseId; // Base station for differential corrections
981 float COG; // Course Over Ground (degree true)
982} SbfDataPVTGeodetic;
983
984typedef struct
985{
986 float TOW; // in s of week
987 uint16_t WNc; // GPS week
988 // uint8_t Reserved
989 uint8_t error;
990 float Cov_xx;
991 float Cov_yy;
992 float Cov_zz;
993 float Cov_bb;
994 float Cov_xy;
995 float Cov_xz;
996 float Cov_xb;
997 float Cov_yz;
998 float Cov_yb;
999 float Cov_zb;
1000} SbfDataPosCovCartesian;
1001
1002typedef struct
1003{
1004 float TOW; // in s of week
1005 uint16_t WNc; // GPS week
1006 // uint8_t Reserved
1007 uint8_t error;
1008 float Cov_LL; // variance de la latitude estimee
1009 float Cov_ll; // variance de la longitude estimee.
1010 float Cov_hh;
1011 float Cov_bb;
1012 float Cov_Ll;
1013 float Cov_Lh;
1014 float Cov_Lb;
1015 float Cov_lh;
1016 float Cov_lb;
1017 float Cov_hb;
1018} SbfDataPosCovGeodetic;
1019
1020typedef struct
1021{
1022 float TOW; // in s of week
1023 uint16_t WNc; // GPS week
1024 // uint8_t Reserved
1025 uint8_t error;
1026 float Cov_VxVx;
1027 float Cov_VyVy;
1028 float Cov_VzVz;
1029 float Cov_dd;
1030 float Cov_VxVy;
1031 float Cov_VxVz;
1032 float Cov_Vxd;
1033 float Cov_VyVz;
1034 float Cov_Vyd;
1035 float Cov_Vzd;
1036} SbfDataVelCovCartesian;
1037
1038typedef struct
1039{
1040 float TOW; // in s of week
1041 uint16_t WNc; // GPS week
1042 // uint8_t Reserved
1043 uint8_t error;
1044 float Cov_VnVn; // variance de la latitude estimee
1045 float Cov_VeVe; // variance de la longitude estimee.
1046 float Cov_VuVu;
1047 float Cov_dd;
1048 float Cov_VnVe;
1049 float Cov_VnVu;
1050 float Cov_Vnd;
1051 float Cov_VeVu;
1052 float Cov_Ved;
1053 float Cov_Vud;
1054} SbfDataVelCovGeodetic;
1055
1056typedef struct
1057{
1058 float TOW; // in s of week
1059 uint16_t WNc; // GPS week
1060 uint8_t nrSV; // number of satellites used in the Dop computation
1061 uint8_t error;
1062 uint16_t PDOP;
1063 uint16_t TDOP;
1064 uint16_t HDOP;
1065 uint16_t VDOP;
1066 float HPL;
1067 float VPL;
1068} SbfDataXDOP;
1069
1070typedef struct
1071{
1072 float CACode_Res;
1073 float P1Code_Res;
1074 float P2Code_Res;
1075 float DopL1_Res;
1076 float DopL2_Res;
1077 uint8_t SVID;
1078} SbfDataPVTResidualsChannelData;
1079
1080typedef struct
1081{
1082 float TOW; // in s of week
1083 uint16_t WNc; // GPS week
1084 uint8_t N; // Number of Subblock
1085 uint8_t SBLength; // Length of a Sub-Block
1086 SbfDataPVTResidualsChannelData ResidualsSatData[16];
1087} SbfDataPVTResiduals;
1088
1089typedef struct
1090{
1091 uint8_t SVID;
1092 uint8_t AntennaID;
1093 uint8_t TestResult;
1094 // uint8_t Reserved
1095 float Wtest_range;
1096 float Wtest_rangerate;
1097 float MDB_range;
1098 float MDB_rangerate;
1099} SbfDataRAIMStatisticsSatData;
1100
1101typedef struct
1102{
1103 float TOW; // in s of week
1104 uint16_t WNc; // GPS week
1105 uint8_t IntegrityFlag;
1106 // uint8_t Reserved;
1107 float HERL_position;
1108 float VERL_position;
1109 float HERL_velocity;
1110 float VERL_velocity;
1111 uint16_t OverallModelPosition;
1112 uint16_t OverallModelVelocity;
1113 // uint16_t Reserved;
1114 uint8_t N; // Number of Subblock
1115 uint8_t SBLength; // Length of a Sub-Block
1116 SbfDataRAIMStatisticsSatData RAIMSatData[16];
1117} SbfDataRAIMStatistics;
1118
1119typedef struct
1120{
1121 uint8_t SVID;
1122 uint8_t IODE;
1123 // uint8_t Reserved[2];
1124 float PR_Corr;
1125 float CorrAgeFC;
1126 float DeltaX;
1127 float DeltaY;
1128 float DeltaZ;
1129 float DeltaClock;
1130 float CorrAgeLT;
1131 float IonoPPLat;
1132 float IonoPPLon;
1133 float SlantIono;
1134 float CorrAgeIono;
1135} SbfDataGEOCorrectionsSatCorr;
1136
1137typedef struct
1138{
1139 float TOW; // in s of week
1140 uint16_t WNc; // GPS week
1141 uint8_t N; // Number of Subblock
1142 uint8_t SBLength; // Length of a Sub-Block
1143 SbfDataGEOCorrectionsSatCorr GEOSatCorr[16];
1144} SbfDataGEOCorrections;
1145
1146typedef struct
1147{
1148 float TOW;
1149 uint16_t WNc;
1150 uint16_t BaseStationID;
1151 double East;
1152 double North;
1153 double Up;
1154} SbfDataBaseLine;
1155
1156typedef struct
1157{
1158 float TOW;
1159 uint16_t WNc;
1160} SbfDataEndOfPVT;
1161
1162////////////////////////////////
1163// ATTITUDE BLOCKS //
1164// - AttitudeEuler //
1165// - AttitudeCovEuler //
1166// - AttitudeQuat //
1167// - AttitudeCovQuat //
1168// - AuxAntPositions //
1169// - EndOfAttitude //
1170////////////////////////////////
1171
1172//////////////////////////
1173// TIME BLOCKS //
1174// - ReceiverTime //
1175// - XPPSOffset //
1176// - ExtEvent //
1177//////////////////////////
1178typedef struct
1179{
1180 float TOW; // GPS Time of Week (sec)
1181 uint16_t WNc; // GPS Week Number
1182 int8_t UTCyear;
1183 int8_t UTCmonth;
1184 int8_t UTCday;
1185 int8_t UTChour;
1186 int8_t UTCmin;
1187 int8_t UTCsec;
1188 int8_t DeltaGPS_UTC; // T_GPS - T_UTc (sec)
1189 bool WNSet; // Sync of receiver week nb with GPS Time
1190 bool TOWSet; // Sync of receiver time-of-week nb with GPS Time
1191 bool FineTime; // Receiver internal clock is within the limit specified
1192} SbfDataReceiverTime;
1193
1194/// offset between the true xPPS pulse and the actual pulse output.
1195typedef struct
1196{
1197 /// Time of week of the xPPS pulse to which this block refers.
1198 float TOW;
1199 /// Week number associated with TOW (see D.1.5)
1200 uint16_t WNc;
1201 /// Age of the last synchronization to GPS time. The xPPS pulse is regularly resynchronised with GPS time. This field indicates the number of seconds elapsed since the last resynchronisation. SyncAge is constrained to the 0-255s range. If the age is higher than 255s, SyncAge is set to 255.
1202 uint8_t SyncAge;
1203 /// Time reference to which the xPPS pulse is referenced. The following values are defined (see also the SetPPSParameters command):
1204 /// 1: GPS system time;
1205 /// 2: UTC;
1206 /// 3: receiver time.
1207 uint8_t Timescale;
1208 /// Offset of the xPPS output by the receiver with respect to its true position. Offset is negative when the xPPS pulse is in advance with respect to its true position.
1209 float Offset;
1210} SbfDataxPPSOffset;
1211
1212/// time tag of a voltage transition on one of the TIMERx input pins.
1213/// time tag of a voltage transition on one of the TIMERx input pins.
1214typedef struct
1215{
1216 /// Time of week of the external event, in the receiver time scale.
1217 float TOW;
1218 /// Week number associated with TOW (see D.1.5)
1219 uint16_t WNc;
1220 /// Input pin where this external event has been detected. The following values are defined:
1221 /// 1: TIMERA;
1222 /// 2: TIMERB.
1223 uint8_t Source;
1224 /// Sub-millisecond part of the external event time tag. The time of week of the external event is given by:
1225 /// t_ext,rx [s] = TOW/1000 + Offset
1226 /// t_ext,rx refers to the GPS receiver scale, use the following field (RxClkBias) to convert this time to the GPS time scale.
1227 float Offset;
1228 /// Receiver clock bias relative to GPS time. To get the time of week of
1229 /// the external event in the GPS time scale, use: t_ext,GPS [s] = TOW/1000 + Offset – RxClkBias
1230 double RxClkBias;
1231} SbfDataExtEvent;
1232
1233//////////////////////////////////////
1234// DIFFERENTIAL CORRECTIONS BLOCK //
1235// - DiffCorrIn //
1236// - BaseStation //
1237// - BaseLink //
1238//////////////////////////////////////
1239
1240/////////////////////////////
1241// STATUS BLOCKS //
1242// - TrackingStatus //
1243// - ReceiverStatus //
1244// - ReceiverSetup //
1245/////////////////////////////
1246
1247/// tracking status of the active receiver channels.
1248/// tracking status of the active receiver channels. tog with SbfDataTrackingStatusChannelData;
1249typedef struct
1250{
1251 /// Receiver logical channel number.
1252 uint8_t RxChannel;
1253
1254 /// Satellite ID tracked by this channel: the following ranges are defined
1255 /// 1-37 : SVID is a PRN number for a GPS satellite
1256 /// 120-138: SVID is a PRN number for an SBAS satellite
1257 uint8_t SVID;
1258
1259 /// Tracking status on the auxiliary antennas, as follows.
1260 /// The lowest four bits (bits 0 to 3) indicate the tracking status on the Aux1 antenna.
1261 /// They can take any of the following values:
1262 /// • 0: antenna not used by this channel;
1263 /// • 1: channel searching a satellite signal;
1264 /// • 2: signal found, channel synchronization in progress;
1265 /// • 3: signal tracking ongoing, single frequency mode: the channel delivers CA-code and carrier phase data on L1 frequency;
1266 /// • 4: signal tracking ongoing, dual-frequency mode: the channel delivers CA and P-code an carrier phase data on both L1 and L2 frequencies.
1267 uint8_t aux1_tracking;
1268 /// The highest four bits (bits 4 to 7) indicate the tracking status on the Aux2 antenna with the same definition as above.
1269 uint8_t aux2_tracking;
1270
1271 /// Tracking status on the main antenna.
1272 /// The lowest four bits indicate the tracking status. They can take any of the following values:
1273 /// • 1: channel searching a satellite signal;
1274 /// • 2: signal found, channel synchronization in progress;
1275 /// • 3: signal tracking in single frequency mode: C/A code only.
1276 /// • 4: signal tracking in dual-frequency mode: C/A + P(Y) codes.
1277 /// • 5: signal tracking in dual-frequency mode: C/A + L2C codes.
1278 /// • 6: signal tracking in dual-frequency mode: C/A + P(Y) + L2C codes.
1279 uint8_t main_tracking;
1280
1281 /// The highest four bits indicate the PVT usage of the channel:
1282 /// • 0: channel not used in the PVT;
1283 /// • 1: channel used in the PVT;
1284 /// • 2: channel rejected from the PVT;
1285 uint8_t PVT_usage;
1286
1287 /// satellite azimuth from 0 to 359 (0 is North, 90 East, 180 South and 270 West). If the azimuth is not known, Azimuth is set to –32768.
1288 int32_t Azimuth;
1289 /// satellite elevation above horizon (90 is for a satellite at zenith). If the elevation is not known, Elevation is set to –128.
1290 int8_t Elevation;
1291
1292
1293 /// Health code:
1294 /// • 0: satellite healthy;
1295 /// • 1: satellite not healthy;
1296 /// • 2: health currently unknown by the receiver.
1297 uint8_t Health;
1298
1299 /// Rise/Set indicator:
1300 /// • +1: the satellite rises (the elevation increases);
1301 /// • –1: the satellite sets (the elevation decreases);
1302 /// • 0: elevation change unknown.
1303 int8_t ElevChange;
1304} SbfDataTrackingStatusChannelData;
1305
1306/// tracking status of the active receiver channels.
1307/// tracking status of the active receiver channels.
1308typedef struct
1309{
1310 /// Current GPS time of week.
1311 float TOW;
1312 /// Week number associated with TOW (see D.1.5)
1313 uint16_t WNc;
1314 /// number of active channels for which information is provided in this SBF block, i.e. number of ChannelData sub-blocks
1315 uint8_t N;
1316 /// Length of one sub-block in bytes
1317 uint8_t SBLength;
1318 /// See ChannelData definition below
1319 SbfDataTrackingStatusChannelData ChannelData[16];
1320} SbfDataTrackingStatus;
1321
1322/// The ReceiverStatus block provides general information on the status of the receiver.
1323typedef struct
1324{
1325 /// Time of week, in milliseconds from the beginning of the current GPS week.
1326 float TOW;
1327 /// Week number associated with TOW (see D.1.5)
1328 uint16_t WNc;
1329 /// Load on the receiver’s CPU. The load should stay below 80% in normal operation. Higher loads might result in data loss.
1330 uint8_t CPULoad;
1331 /// Number of seconds elapsed since the start-up of the receiver, or since the last reset.
1332 uint32_t UpTime;
1333 /// Bit field indicating the status of key components of the receiver.
1334 uint32_t RxState;
1335 /// Bit field containing the settings of the Automatic Gain Control (AGC).
1336 uint32_t AGCSettings;
1337} SbfDataReceiverStatus;
1338
1339/// parameters related to the receiver set-up.
1340typedef struct
1341{
1342 /// Current time of week in milliseconds
1343 float TOW;
1344 /// Week number associated with TOW (see D.1.5)
1345 uint16_t WNc;
1346 /// Name of the marker, this is a 60-character string, padded with zeros.
1347 int8_t MarkerName[60];
1348 /// Marker identification, this is a 20-character string, padded with zeros
1349 int8_t MarkerNumber[20];
1350 /// Observer description, this is a 20-character string, padded with zeros.
1351 int8_t Observer[20];
1352 /// Observer’s agency description, this is a 40-character string, padded with zeros
1353 int8_t Agency[40];
1354 /// Receiver serial number, this is a 20-character string, padded with zeros.
1355 int8_t RxSerialNumber[20];
1356 /// Receiver name, this is a 20-character string, padded with zeros.
1357 int8_t RxName[20];
1358 /// Receiver version, this is a 20-character string, padded with zeros.
1359 int8_t RxVersion[20];
1360 /// Serial number of the main antenna, this is a 20-character string, padded with zeros.
1361 int8_t AntSerialNbr[20];
1362 /// Type of the main antenna, this is a 20-character string, padded with zeros
1363 int8_t AntType[20];
1364 /// δH offset of the main antenna
1365 float DeltaH;
1366 /// δE offset of the main antenna
1367 float DeltaE;
1368 /// δN offset of the main antenna
1369 float DeltaN;
1370} SbfDataReceiverSetup;
1371
1372///////////////////////
1373// MISC BLOCKS //
1374// - comment //
1375///////////////////////
1376typedef struct
1377{
1378 float TOW;
1379 uint16_t WNc;
1380 uint16_t CommentLn;
1381 int8_t Comment[480];
1382} SbfDataComment;
1383
1384#endif // STRUCTURE_SEPTENTRIO_H
Note: See TracBrowser for help on using the repository browser.