00001 /** 00002 \file gnss_types.h 00003 \brief Basic gnss types. 00004 00005 \author Glenn D. MacGougan (GDM) 00006 \date 2007-12-05 00007 \since 2006-11-13 00008 00009 \b "LICENSE INFORMATION" \n 00010 Copyright (c) 2007, refer to 'author' doxygen tags \n 00011 All rights reserved. \n 00012 00013 Redistribution and use in source and binary forms, with or without 00014 modification, are permitted provided the following conditions are met: \n 00015 00016 - Redistributions of source code must retain the above copyright 00017 notice, this list of conditions and the following disclaimer. \n 00018 - Redistributions in binary form must reproduce the above copyright 00019 notice, this list of conditions and the following disclaimer in the 00020 documentation and/or other materials provided with the distribution. \n 00021 - The name(s) of the contributor(s) may not be used to endorse or promote 00022 products derived from this software without specific prior written 00023 permission. \n 00024 00025 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS 00026 OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00027 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00028 DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 00029 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00030 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00031 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00032 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00033 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00034 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00035 SUCH DAMAGE. 00036 */ 00037 00038 #ifndef _GNSS_TYPES_H_ 00039 #define _GNSS_TYPES_H_ 00040 00041 #ifdef __cplusplus 00042 extern "C" { 00043 #endif 00044 00045 00046 00047 /// \brief These are the supported receiver data types. 00048 typedef enum GNSS_enumRxDataType 00049 { 00050 GNSS_RXDATA_RINEX21 = 1, //!< RINEX version 2.1 00051 GNSS_RXDATA_RINEX211 = 2, //!< RINEX version 2.11 00052 GNSS_RXDATA_NOVATELOEM3 = 3, //!< NovAtel OEM4 data. 00053 GNSS_RXDATA_NOVATELOEM4 = 4, //!< NovAtel OEM4 data. 00054 GNSS_RXDATA_UNKNOWN 00055 }; 00056 00057 00058 /// A 32 bit bit-field for GNSS measurement associated flags (all are boolean indicators). 00059 typedef struct 00060 { 00061 unsigned isActive:1; //!< This flag indicates that the channel is active for use. If this is not set, no other flags are valid for use. 00062 unsigned isCodeLocked:1; //!< Indicates if the code tracking is locked. 00063 unsigned isPhaseLocked:1; //!< Indicates if the phase tracking is locked. 00064 unsigned isParityValid:1; //!< Indicates if the phase parity if valid. 00065 unsigned isPsrValid:1; //!< Indicates if the pseudorange valid for use. 00066 unsigned isAdrValid:1; //!< Indicates if the ADR is valid for use. 00067 unsigned isDopplerValid:1; //!< Indicates if the Doppler if valid for use. 00068 unsigned isGrouped:1; //!< Indicates if this channel has another associated channel. eg. L1 and L2 measurements. 00069 unsigned isAutoAssigned:1; //!< Indicates if the channel was receiver assigned (otherwise, the user forced this channel assignment). 00070 unsigned isCarrierSmoothed:1; //!< Indicates if the pseudorange has carrier smoothing enabled. 00071 unsigned isEphemerisValid:1; //!< Indicates if this channel has valid associated ephemeris information. 00072 unsigned isAlmanacValid:1; //!< Indicates if this channel has valid associated almanac information. 00073 unsigned isAboveElevationMask:1; //!< Indicates if the satellite tracked is above the elevation mask. 00074 unsigned isAboveCNoMask:1; //!< Indciates if the channel's C/No is above a threshold value. 00075 unsigned isAboveLockTimeMask:1; //!< Indicates if the channel's locktime is above a treshold value. 00076 unsigned isNotUserRejected:1; //!< Indicates if the user has not forced the rejection of this channel or PRN. 00077 unsigned isNotPsrRejected:1; //!< Indicates if the pseudorange was not rejetced (ie Fault Detection and Exclusion). 00078 unsigned isNotAdrRejected:1; //!< Indicates if the ADR was not rejetced (ie Fault Detection and Exclusion). 00079 unsigned isNotDopplerRejected:1; //!< Indicates if the Doppler was not rejected (ie Fault Detection and Exclusion). 00080 unsigned isNoCycleSlipDetected:1; //!< Indicates that no cycle slip has occurred at this epoch. 00081 unsigned isPsrUsedInSolution:1; //!< Indicates if some part (pseudorange) of this channel's measurement was used in the position solution. 00082 unsigned isDopplerUsedInSolution:1; //!< Indicates if some part (Doppler) of this channel's measurement was used in the velocity solution. 00083 unsigned isAdrUsedInSolution:1; //!< Indicates if the the ADR is used in the solution. 00084 00085 unsigned isDifferentialPsrAvailable:1; //!< Indicates if a matching pseudrange observation is available from another receiver. 00086 unsigned isDifferentialDopplerAvailable:1; //!< Indicates if a matching Doppler observation is available from another receiver. 00087 unsigned isDifferentialAdrAvailable:1; //!< Indicates if a matching ADR observation is available from another receiver. 00088 00089 unsigned useTropoCorrection:1; //!< Indicates that the tropospheric correction should be applied. 00090 unsigned useBroadcastIonoCorrection:1; //!< Indicates that the broadcast ionospheric correction should be applied. 00091 00092 unsigned isBaseSatellite:1; //!< Indicates if this channel corresponds to a base satellite used in double differencing. 00093 00094 unsigned isNotPsrDeweighted:1; 00095 unsigned isNotDopplerDeweighted:1; 00096 unsigned isNotAdrDeweighted:1; 00097 00098 } GNSS_structFlagsBitField; 00099 00100 /// \brief An enumerated for a GNSS code modulation type. 00101 /// 00102 /// This enumerated uses the NovAtel OEM4 convention. 00103 typedef enum 00104 { 00105 GNSS_CACode = 0, 00106 GNSS_PCode = 1, 00107 GNSS_PCodeless = 2, 00108 GNSS_UWBCodeType = 1614, 00109 GNSS_ReservedCodeType 00110 } GNSS_enumCodeType; 00111 00112 /// \brief An enumeration for a GNSS frequency type. 00113 /// 00114 /// This enumerated uses the NovAtel OEM4 convention. 00115 typedef enum 00116 { 00117 GNSS_GPSL1 = 0, 00118 GNSS_GPSL2 = 1, 00119 GNSS_UWBFrequency = 1615, 00120 GNSS_ReservedFrequency 00121 } GNSS_enumFrequency; 00122 00123 /// \brief An enumeration for a GNSS system type. 00124 /// 00125 /// This enumerated uses the NovAtel OEM4 convention. 00126 typedef enum 00127 { 00128 GNSS_GPS = 0, 00129 GNSS_GLONASS = 1, 00130 GNSS_WAAS = 2, 00131 GNSS_Pseudolite = 3, 00132 GNSS_UWBSystem = 1616, 00133 GNSS_ReservedSystem 00134 } GNSS_enumSystem; 00135 00136 00137 /// \brief An enumeration for a GNSS measurement type. 00138 typedef enum 00139 { 00140 GNSS_INVALID_MEASUREMENT = 0, 00141 GNSS_PSR_MEASUREMENT = 1, 00142 GNSS_DOPPLER_MEASUREMENT = 2, 00143 GNSS_ADR_MEASUREMENT = 3, 00144 GNSS_LAT_CONSTRAINT = 4, 00145 GNSS_LON_CONSTRAINT = 5, 00146 GNSS_HGT_CONSTRAINT = 6, 00147 GNSS_VN_CONSTRAINT = 7, 00148 GNSS_VE_CONSTRAINT = 8, 00149 GNSS_VUP_CONSTRAINT = 9, 00150 GNSS_RESERVED_MEASUREMENT_TYPE 00151 } GNSS_enumMeasurementType; 00152 00153 00154 00155 /// \brief Correction data associated with a single receiver measurement channel. 00156 /// PRC is PseudRange Correction, RRC is RangeRate Correction. 00157 /// 00158 /// This struct is 4 and 8 byte struct member packing compatible. 00159 typedef struct 00160 { 00161 float prcTropoDry; //!< Tropospheric dry delay correction (+ve is a delay) [m]. 00162 float prcTropoWet; //!< Tropospheric wet delay correction (+ve is a delay) [m]. 00163 float prcIono; //!< Ionospheric correction (+ve is a delay) [m]. 00164 float prcSatClk; //!< The satellite clock correction (+ve is a delay) [m]. 00165 float prcReserved1; //!< A reserved range correction for the pseudorange [m]. 00166 float prcReserved2; //!< A reserved range correction for the pseudorange [m]. 00167 float rrcSatClkDrift; //!< The satellite clock drift rate correction (+ve is a rate delay) [m/s]. 00168 float rrcReserved1; //!< A reserved range rate correction [m/s]. 00169 float rrcReserved2; //!< A reserved range rate correction [m/s]. 00170 float dX; //!< This channel's associated satellite orbital correction X (ECEF) [m]. 00171 float dY; //!< This channel's associated satellite orbital correction X (ECEF) [m]. 00172 float dZ; //!< This channel's associated satellite orbital correction X (ECEF) [m]. 00173 } GNSS_structCorrections; 00174 00175 /// \brief Residuals data associated with a single receiver measurement channel. 00176 /// 00177 /// This struct is 4 and 8 byte struct member packing compatible. 00178 typedef struct 00179 { 00180 float psrResidual; //!< The pseudorange residual [m]. 00181 float adrResidual; //!< The accumulated Doppler range residual [cycles]. 00182 float dopplerResidual; //!< The Doppler residual [Hz]. 00183 float reserved; //!< Reserved value. 00184 } GNSS_structResiduals; 00185 00186 /// \brief A struct for satelite data. 00187 /// 00188 /// This struct is 4 and 8 byte struct member packing compatible. 00189 typedef struct 00190 { 00191 int isValid; //!< This indicates if the pvt information is valid [1=valid, 0=invalid]. 00192 int ageOfEph; //!< The difference between the current measurement time and the time of ephemeris. 00193 double x; //!< The satellite position ECEF, x [m]. 00194 double y; //!< The satellite position ECEF, y [m]. 00195 double z; //!< The satellite position ECEF, z [m]. 00196 double vx; //!< The satellite velocity ECEF, vx [m]. 00197 double vy; //!< The satellite velocity ECEF, vy [m]. 00198 double vz; //!< The satellite velocity ECEF, vz [m]. 00199 double clk; //!< The satellite clock correction [m]. 00200 double clkdrift; //!< The satellite clock drift correction [m/s]. 00201 double elevation; //!< The elevation angle between the user and the satellite [rad]. 00202 double azimuth; //!< The azimuth angle between the user and the satellite, measured clockwise positive from the true North [rad]. 00203 double doppler; //!< The satellite doppler with respect to the user position [m/s], Note: User must convert to Hz. 00204 } GNSS_structSatellitePVT; 00205 00206 00207 /// \brief A container for klobuchar sytle ionospheric parameters. 00208 /// 00209 /// This struct is 4 and 8 byte struct member packing compatible. 00210 typedef struct 00211 { 00212 unsigned short isValid; //!< Is this structure valid for use 1=YES, 0=NO. 00213 unsigned short week; //!< The GPS week corresponding to the correction parameters [weeks]. 00214 unsigned tow; //!< The GPS time of week corresponding to the correction parameters [s]. 00215 double alpha0; //!< coefficients of a cubic equation representing the amplitude of the vertical delay [s] 00216 double alpha1; //!< coefficients of a cubic equation representing the amplitude of the vertical delay [s/semi-circle] 00217 double alpha2; //!< coefficients of a cubic equation representing the amplitude of the vertical delay [s/semi-circle^2] 00218 double alpha3; //!< coefficients of a cubic equation representing the amplitude of the vertical delay [s/semi-circle^3] 00219 double beta0; //!< coefficients of a cubic equation representing the period of the model [s] 00220 double beta1; //!< coefficients of a cubic equation representing the period of the model [s/semi-circle] 00221 double beta2; //!< coefficients of a cubic equation representing the period of the model [s/semi-circle^2] 00222 double beta3; //!< coefficients of a cubic equation representing the period of the model [s/semi-circle^3] 00223 } GNSS_structKlobuchar; 00224 00225 /// \brief Measurement data associated with a single receiver measurement channel. 00226 /// 00227 /// This struct is 4 and 8 byte struct member packing compatible. 00228 typedef struct 00229 { 00230 unsigned short channel; //!< The channel number associated with this measurement. 00231 unsigned short id; //!< The unique id for this channel (eg PRN for GPS). 00232 GNSS_enumSystem system; //!< The satellite system associated with this channel. 00233 GNSS_enumCodeType codeType; //!< The code type for this channel. 00234 GNSS_enumFrequency freqType; //!< The frequency type for this channel. 00235 GNSS_structFlagsBitField flags; //!< The flags associated with this channel. ie Validity flags, etc. 00236 short reserved1; 00237 unsigned short week; //!< The measurement gps week (at 'transmit' time) [weeks]. 00238 double tow; //!< The measurement gps time of week (at 'transmit' time) [s]. 00239 00240 // The actual measurements. 00241 double psr; //!< The pseudorange measurement [m]. 00242 double adr; //!< The carrier phase or accumulated Doppler range measurement [cycles]. 00243 float doppler; //!< The Doppler measurement for this channel [Hz]. 00244 float cno; //!< The carrier to noise density ratio for this channel [dB-Hz] 00245 float locktime; //!< The number of seconds of continous phase tracking (no known cycle slips) [s]. 00246 00247 // The variance information associated with the actual measurements. 00248 float stdev_psr; //!< The estimated pseudorange measurement standard deviation [m]. 00249 float stdev_adr; //!< The estimated accumulated Doppler range measurement standard deviation [cycles]. 00250 float stdev_doppler; //!< The estimated Doppler measurement standard deviation [Hz]. 00251 00252 // Derived information. 00253 double psr_misclosure; //!< The measured psr minus the computed psr estimate [m]. 00254 double doppler_misclosure; //!< The measured Doppler minus the computed Doppler estimate [m/s]. 00255 double range; //!< The best estimate of the geometric range between the antenna and the satellite [m]. 00256 double rangerate; //!< The best estimate of the geometric range rate between the antenna and the satellite [m/s]. 00257 double psr_smoothed; //!< The carrier smoothed pseudorange if available [m]. 00258 double psr_predicted; //!< The predicted pseudorange based on the satellite position, user position, and current clock offset [m]. 00259 double sd_ambiguity; //!< The estimated single difference float ambiguity [m]. 00260 double dd_ambiguity; //!< The estimated double difference float ambiguity [m]. 00261 double dd_ambiguity_fixed; //!< The estimated double difference fixed ambiguity [m]. 00262 float doppler_predicted; //!< The predicted Doppler based on user position, velocity, satellite position, velocity and clock rate [Hz]. 00263 00264 double psr_misclosure_lsq; //!< The measured psr minus the computed psr estimate using least squares [m]. 00265 double doppler_misclosure_lsq; //!< The measured Doppler minus the computed Doppler estimate using least squares [m/s]. 00266 00267 short index_differential; //!< The channel index of a matching differential observation. -1 means there is no matching channel. 00268 short index_time_differential; //!< The channel index of a matching time differential observation. -1 means there is no matching channel. 00269 00270 short index_between_satellite_differential; //!< The channel index for between satellite difference of the satellite that is substracted from this one. -1 means there is no matching channel. 00271 short index_ambiguity_state; //!< The index into the state vector for the float ambiguity state. -1 not estimated. 00272 short index_ambiguity_state_dd; //!< The index into the state vector for the double difference ambiguity state. -1 not estimated. 00273 short index_psr_B; //!< A very convenient index into the B matrix used in double differencing. -1 if not valid. 00274 short index_Doppler_B; //!< A very convenient index into the B matrix used in double differencing. -1 if not valid. 00275 short index_adr_B; //!< A very convenient index into the B matrix used in double differencing. -1 if not valid. 00276 00277 double adr_misclosure; //!< The measured ADR minus the computed ADR estimate [m]. This is the between receiver differential adr misclosure. 00278 00279 double adr_residual_sd; //!< The measured single difference ADR minus the computed single difference ADR estimate after full sequential update. 00280 double adr_residual_dd; //!< The measured double difference ADR minus the computed double difference ADR estimate after full sequential update (float solution). 00281 double adr_residual_dd_fixed; //!< The measured double difference ADR minus the computed double difference ADR estimate after full sequential update and ambiguity fixing. 00282 double adr_misclosure_temp; //!< A temporary variable used to compute adr_misclosure_dd above/ 00283 00284 double sd_doppler_covar; //!< Single difference doppler covariance. 00285 double sd_doppler_innovation; //!< Single difference doppler innovation. 00286 double sd_doppler_innovation_standardized; //!< A standardized single difference doppler innovation. 00287 00288 double sd_psr_covar; //!< Single difference psr covariance. 00289 double sd_psr_innovation; //!< Single difference psr innovation. 00290 double sd_psr_innovation_standardized; //!< A standardized single difference psr innovation. 00291 00292 double sd_adr_covar; //!< Single difference adr covariance. 00293 double sd_adr_innovation; //!< Single difference adr innovation. 00294 double sd_adr_innovation_standardized; //!< A standardized single difference adr innovation. 00295 00296 unsigned uwb_pair; // 0 or 1 or 2, UWB range pairs are given fixed id's this way for indexing the state vector and the design matrix. 00297 double uwb_bias; 00298 double uwb_scale_factor; 00299 double uwb_bias_std; 00300 double uwb_scale_factor_std; 00301 00302 double H_p[3]; //!< The design matrix row relating the pseudorange measurements to the position solution. dP/d(lat), dP/d(lon), dP/d(hgt). 00303 double H_a[3]; //!< The design matrix row relating the adr measurements to the position solution. dP/d(lat), dP/d(lon), dP/d(hgt). 00304 double H_v[3]; //!< The design matrix row relating the Doppler measurements to the velocity solution. dD/d(lat), dD/d(lon), dD/d(hgt). 00305 00306 GNSS_structCorrections corrections; //!< The corrections associated with this channel. 00307 GNSS_structResiduals residuals; //!< The post-adjustment (filtering) measurement residual associated with this channel. 00308 00309 GNSS_structSatellitePVT satellite; //!< Each channel has an associated satellite pvt struct evaluated at the transmit time. 00310 } GNSS_structMeasurement; 00311 00312 00313 00314 00315 /// \brief A struct for holding dilution of precision information. 00316 /// 00317 /// This struct is 4 and 8 byte struct member packing compatible. 00318 typedef struct 00319 { 00320 float gdop; //!< geometric dilution of precision []. 00321 float pdop; //!< position dilution of precision []. 00322 float ndop; //!< northing dilution of precision []. 00323 float edop; //!< easting dilution of precision []. 00324 float hdop; //!< horizontal dilution of precision []. 00325 float vdop; //!< vertical dilution of precision []. 00326 float tdop; //!< time dilution of precision []. 00327 float reserved; //!< reserved dilution of precision []. 00328 } GNSS_structDOP; 00329 00330 /// \brief A container for time information. 00331 /// 00332 /// This struct is 4 and 8 byte struct member packing compatible. 00333 typedef struct 00334 { 00335 unsigned short day_of_year; //!< The number of days into the year (1-366) [days]. 00336 unsigned short utc_year; //!< Universal Time Coordinated [year] 00337 unsigned char utc_month; //!< Universal Time Coordinated [1-12 months] 00338 unsigned char utc_day; //!< Universal Time Coordinated [1-31 days] 00339 unsigned char utc_hour; //!< Universal Time Coordinated [hours] 00340 unsigned char utc_minute; //!< Universal Time Coordinated [minutes] 00341 float utc_seconds; //!< Universal Time Coordinated [s] 00342 unsigned int gps_week; //!< The current GPS week associated with the observations [weeks]. 00343 double gps_tow; //!< The GPS time of week (0-604800.0) (receiver time of observation) [s]. 00344 } GNSS_structReceiverTime; 00345 00346 00347 00348 /// \brief A struct for degrees, minutes, seconds, and a string. 00349 /// 00350 /// This struct is 4 and 8 byte struct member packing compatible. 00351 typedef struct 00352 { 00353 short degrees; //!< The degrees component [deg]. 00354 short minutes; //!< The minutes component [min]. 00355 float seconds; //!< The seconds component [s] 00356 char dms_str[24]; //!< A DMS string e.g. dms_str = "-180'59'59.9999\"" 00357 } GNSS_structDMS; 00358 00359 00360 /// \brief A struct for holding position, velocity and time. 00361 /// 00362 /// This struct is 4 and 8 byte struct member packing compatible. 00363 typedef struct 00364 { 00365 GNSS_structReceiverTime time; // The receiver time information. 00366 00367 double pos_apvf; //!< The a-posteriori variance factor for the position solution. 00368 00369 double latitude; //!< The user latitude [rad]. 00370 double longitude; //!< The user longitude [rad]. 00371 double height; //!< The user orthometric height [m]. 00372 double undulation; //!< The undulation [m]. 00373 00374 double latitudeDegs; //!< The user latitude [degrees]. 00375 double longitudeDegs; //!< The user longitude [degrees]. 00376 GNSS_structDMS lat_dms; //!< The user latitude [dms]. 00377 GNSS_structDMS lon_dms; //!< The user longitude [dms]. 00378 00379 double x; //!< The user's ECEF position, X [m]. 00380 double y; //!< The user's ECEF position, Y [m]. 00381 double z; //!< The user's ECEF position, Z [m]. 00382 00383 double vel_apvf; //!< The a-posteriori variance factor for the velocity solution. 00384 00385 double vn; //!< The user's local geodetic velocity, velocity North [m/s]. 00386 double ve; //!< The user's local geodetic velocity, velocity East [m/s]. 00387 double vup; //!< The user's local geodetic velocity, velocity Up [m/s]. 00388 00389 double vx; //!< The user's ECEF velocity, vx [m/s]. 00390 double vy; //!< The user's ECEF velocity, vy [m/s]. 00391 double vz; //!< The user's ECEF velocity, vz [m/s]. 00392 00393 double clockOffset; //!< The receiver clock offset [m]. 00394 double clockDrift; //!< the receiver clock drift [m/s]. 00395 00396 GNSS_structDOP dop; //!< All the associated DOP information for this solution. 00397 00398 double std_lat; //!< The standard deviation uncertainty in the latitude [m]. 00399 double std_lon; //!< The standard deviation uncertainty in the longitude [m]. 00400 double std_hgt; //!< The standard deviation uncertainty in the height [m]. 00401 double std_vn; //!< The standard deviation uncertainty in the northing velocity [m/s]. 00402 double std_ve; //!< The standard deviation uncertainty in the easting velocity [m/s]. 00403 double std_vup; //!< The standard deviation uncertainty in the up velocity [m/s]. 00404 double std_clk; //!< The standard deviation uncertainty in the clock offset [m]. 00405 double std_clkdrift; //!< The standard deviation uncertainty in the clock drift [m/s]. 00406 00407 unsigned char didGlobalTestPassForPosition; //!< Does the position solution pass the Chi^2 goodness of fit test [TRUE(1),FALSE(0)]. 00408 unsigned char didGlobalTestPassForVelocity; //!< Does the velocity solution pass the Chi^2 goodness of fit test [TRUE(1),FALSE(0)]. 00409 00410 unsigned char isPositionFixed; //!< Is this a position solution fully constrained to a fixed point [TRUE(1),FALSE(0)]. 00411 unsigned char isHeightConstrained; //!< Is this a height constrained solution [TRUE(1),FALSE(0)]. 00412 unsigned char isClockConstrained; //!< Is this a clock constrained solution [TRUE(1),FALSE(0)]. 00413 unsigned char isSolutionBasedOnEphemeris; //!< Is the solution based on valid ephemeris information [TRUE(1),FALSE(0)]. 00414 00415 unsigned char nrPsrObsAvailable; //!< This indicates the number of valid pseudorange observations valid before adjustment. 00416 unsigned char nrPsrObsUsed; //!< This indicates the number of valid pseudorange observations valid after adjustment. 00417 unsigned char nrPsrObsRejected; //!< This indicates the number of valid pseudorange observations rejected during adjustment. 00418 00419 unsigned char nrAdrObsAvailable; //!< This indicates the number of valid ADR observations valid before adjustment. 00420 unsigned char nrAdrObsUsed; //!< This indicates the number of valid ADR observations valid after adjustment. 00421 unsigned char nrAdrObsRejected; //!< This indicates the number of valid ADR observations rejected during adjustment. 00422 00423 unsigned char nrDopplerObsAvailable; //!< This indicates the number of valid Doppler observations valid before adjustment. 00424 unsigned char nrDopplerObsUsed; //!< This indicates the number of valid Doppler observations valid after adjustment. 00425 unsigned char nrDopplerObsRejected; //!< This indicates the number of valid Doppler observations rejected during adjustment. 00426 00427 unsigned char reserved[1]; //!< Space for reserved flags. 00428 00429 } GNSS_structPVT; 00430 00431 #ifdef __cplusplus 00432 } 00433 #endif 00434 00435 00436 #endif // _GNSS_TYPES_H_ 00437 00438