gnss_types.h

Go to the documentation of this file.
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 
SourceForge.net Logo