00001 /** 00002 \file rinex.h 00003 \brief GNSS core 'c' function library: RINEX VERSION 2.11 related functions. 00004 \author Glenn D. MacGougan (GDM) 00005 \date 2007-12-02 00006 \since 2007-12-02 00007 00008 \b REFERENCES \n 00009 - - http://www.aiub-download.unibe.ch/rinex/rinex211.txt 00010 00011 \b "LICENSE INFORMATION" \n 00012 Copyright (c) 2007, refer to 'author' doxygen tags \n 00013 All rights reserved. \n 00014 00015 Redistribution and use in source and binary forms, with or without 00016 modification, are permitted provided the following conditions are met: \n 00017 00018 - Redistributions of source code must retain the above copyright 00019 notice, this list of conditions and the following disclaimer. \n 00020 - Redistributions in binary form must reproduce the above copyright 00021 notice, this list of conditions and the following disclaimer in the 00022 documentation and/or other materials provided with the distribution. \n 00023 - The name(s) of the contributor(s) may not be used to endorse or promote 00024 products derived from this software without specific prior written 00025 permission. \n 00026 00027 THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS 00028 OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 00029 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00030 DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 00031 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 00032 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00033 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00034 CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 00035 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 00036 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 00037 SUCH DAMAGE. 00038 */ 00039 00040 #ifndef _RINEX_H_ 00041 #define _RINEX_H_ 00042 00043 #ifdef __cplusplus 00044 extern "C" { 00045 #endif 00046 00047 #include "basictypes.h" 00048 #include "gnss_types.h" 00049 #include "gps.h" 00050 00051 00052 /** 00053 \brief NOT USED - A container for RINEX observation file header data. 00054 Each parameter is the string (multiline is some cases) of columns 00055 1-60 that corresponds to a record descriptor from columns 61-80. 00056 */ 00057 typedef struct 00058 { 00059 char version_type[64]; //!< RINEX VERSION / TYPE - File type: O for Observation Data - Satellite System: G: GPS, R: GLONASS, E: Galileo, S: SBAS payload, M: Mixed. 00060 char pgm_run_by_date[64]; //!< Name of program creating current file - Name of agency creating current file - Date and time of file creation, Format: yyyymmdd hhmmss zone, zone: 3-4 char. code for time zone. UTC recommended! LCL if local time with unknown local time system code. 00061 char comments[1024]; //!< (Optional-multiline) Comment line(s). Enough space for 16 lines of comments. 00062 char marker_name[64]; //!< Name of antenna marker. 00063 char marker_nr[64]; //!< (Optional) Number of antenna marker . 00064 char marker_type[64]; //!< Type of the marker: GEODETIC : Earth-fixed, high-precision monumentation, NON_GEODETIC : Earth-fixed, low-precision monumentation, NON_PHYSICAL : Generated from network processing, SPACEBORNE : Orbiting space vehicle, AIRBORNE : Aircraft, balloon, etc. WATER_CRAFT : Mobile water craft, GROUND_CRAFT : Mobile terrestrial vehicle, FIXED_BUOY : "Fixed" on water surface, FLOATING_BUOY: Floating on water surface, FLOATING_ICE : Floating ice sheet, etc., GLACIER : "Fixed" on a glacier, BALLISTIC : Rockets, shells, etc, ANIMAL : Animal carrying a receiver, HUMAN : Human being, Record required except for GEODETIC and NON_GEODETIC marker types. Users may define other project-dependent keywords. 00065 char observer_agency[64]; //!< Name of observer / agency. 00066 char receiver_nr_type_version[64]; //!< Receiver number, type, and version (Version: e.g. Internal Software Version). 00067 char antenna_nr_type[64]; //!< Antenna number and type. 00068 char approx_position_xyz[64]; //!< Geocentric approximate marker position (Units: Meters, System: ITRS recommended) Optional for moving platforms. 00069 char antenna_delta_h_e_n[64]; //!< Antenna height: Height of the antenna reference point (ARP) above the marker - Horizontal eccentricity of ARP relative to the marker (east/north). All units in meters. 00070 char antenna_delta_xyz[64]; //!< (Optional) Position of antenna reference point for antenna on vehicle (m). XYZ vector in body-fixed coord. system. 00071 char antenna_phasecenter[64]; //!< (Optional) Average phase center position w/r to antenna reference point (m) - satellite system (g/r/e/s), - observation code - north/east/up (fixed station) or x/y/z in body-fixed system (vehicle). 00072 char antenna_b_sight_xyz[64]; //!< (Optional) Direction of the “vertical” antenna axis towards the gnss satellites. Antenna on vehicle: unit vector in body-fixed coord. system tilted antenna on fixed station: unit vector in n/e/up left-handed system. 00073 char antenna_zerodir_azi[64]; //!< (Optional) Azimuth of the zero-direction of a fixed antenna (degrees, from north). 00074 char antenna_zerodir_xyz[64]; //!< (Optional) Zero-direction of antenna antenna on vehicle: Unit vector in body-fixed coord. system tilted antenna on fixed station: Unit vector in n/e/up left-handed system. 00075 char center_of_mass_xyz[64]; //!< (Optional) Current center of mass (x,y,z, meters) of vehicle in body-fixed coordinate system. Same system as used for attitude. 00076 char system_nrobs_obstypes[64]; //!< Satellite system - Number of observation types - List of observation types. Varies with RINEX version. 00077 char signal_strength_unit[64]; //!< (Optional) The Unit of the signal strengt observables Snn (if present) DBHZ : s/n given in dB-Hz. 00078 char interval[64]; //!< (Optional) Observation interval in seconds. 00079 char time_of_first_obs[64]; //!< The time of first observation record (4-digit-year, month,day,hour,min,sec)- Time system: GPS=GPS time system, GLO=UTC time system, GAL=Galileo System Time. Compulsory in mixed GPS/GLONASS files, Defaults: GPS for pure GPS files, GLO for pure GLONASS files, GAL for pure Galileo files. 00080 char time_of_last_obs[64]; //!< (Optional) The time of last observation record (4-digit-year, month,day,hour,min,sec)- time system: same value as in time_of_first_obs record. 00081 char rcv_clock_offs_appl[64]; //!< (Optional) Epoch, code, and phase are corrected by applying the realtime-derived receiver clock offset: 1=yes, 0=no; default: 0=no. Record required if clock offsets are reported in the EPOCH/SAT records. 00082 char sys_dcbs_applied[64]; //!< (Optional) Satellite system (G/R/E/S) - Program name used to apply differential code bias corrections - Source of corrections (URL). Repeat for each satellite system. No corrections applied: Blank fields or record not present. 00083 char sys_pcvs_applied[64]; //!< (Optional) Satellite system (G/R/E/S) - Program name used to apply phase center variation corrections - Source of corrections (URL). Repeat for each satellite system. No corrections applied: Blank fields or record not present. 00084 char sys_scale_factor[512]; //!< (Optional-multiline) Satellite system (G/R/E/S) - Factor to divide stored observations with before use (1,10,100,1000) - Number of observation types involved. 0 or blank: All observation types - List of observation types. Use continuation line(s) for more than 12 observation types. Repeat record if different factors are applied to different observation types. A value of 1 is assumed if record is missing. 00085 char leap_seconds[64]; //!< (Optional) Number of leap seconds since 6-Jan-1980. Recommended for mixed GPS/GLONASS files. 00086 char nr_satellites[64]; //!< (Optional) Number of satellites, for which observations are stored in the file. 00087 char prn_nr_of_obs[1024]; //!< (Optional-multiline) Satellite numbers, number of observations for each observation type indicated in the SYS / # / OBS TYPES record. If more than 9 observation types: Use continuation line(s). This record is (these records are) repeated for each satellite present in the data file. 00088 00089 } RINEX_structRawHeader; 00090 00091 00092 00093 /// RINEX VERSION 2.11: An enumeration for RINEX file types. 00094 typedef enum 00095 { 00096 RINEX_FILE_TYPE_OBS = 'O', //!< 'O' - Observation file. 00097 RINEX_FILE_TYPE_GPS_NAV = 'N', //!< 'N' - GPS navigation file. 00098 RINEX_FILE_TYPE_MET = 'M', //!< 'M' - Meteorological data file. 00099 RINEX_FILE_TYPE_GLO_NAV = 'G', //!< 'G' - GLONASS navigation file. 00100 RINEX_FILE_TYPE_GEO_NAV = 'H', //!< 'H' - Geostationary Navigation nile. 00101 RINEX_FILE_TYPE_GAL_NAV = 'L', //!< 'L' - Galileo navigation message file. 00102 RINEX_FILE_TYPE_MIXED_NAV = 'P', //!< 'P' - Mixed GNSS navigation message file. 00103 RINEX_FILE_TYPE_SBAS = 'B', //!< 'B' - SBAS broadcast data file (separate documentation). 00104 RINEX_FILE_TYPE_CLK = 'C', //!< 'C' - Clock file (separate documentation). 00105 RINEX_FILE_TYPE_SUMMARY = 'S', //!< 'S' - Summary file (used e.g., by IGS, not a standard!). 00106 RINEX_FILE_TYPE_UNKNOWN 00107 00108 } RINEX_enumFileType; 00109 00110 /// RINEX VERSION 2.11: An enumeration for the letter denoting the GPS satellite system. Used when determining which satellite observations are present. 00111 typedef enum 00112 { 00113 RINEX_SATELLITE_SYSTEM_GPS = 'G', //!< 'G' GPS satellite. 00114 RINEX_SATELLITE_SYSTEM_GLO = 'R', //!< 'R' GLONASS satellite. 00115 RINEX_SATELLITE_SYSTEM_GEO = 'S', //!< 'S' Geostationary satellite (SBAS). 00116 RINEX_SATELLITE_SYSTEM_GAL = 'E', //!< 'E' Galileo satellite 00117 RINEX_SATELLITE_SYSTEM_NSS = 'T', //!< 'T' NNSS Transit. 00118 RINEX_SATELLITE_SYSTEM_MIXED = 'M', //!< 'M' Mixed. 00119 RINEX_SATELLITE_SYSTEM_UNKNOWN 00120 00121 } RINEX_enumSatelliteSystemType; 00122 00123 /// RINEX VERSION 2.11: An enumeration for the various types of obsevations allowed. 00124 typedef enum 00125 { 00126 RINEX_OBS_TYPE_L1, //!< Phase on L1 [cycles]. 00127 RINEX_OBS_TYPE_L2, //!< Phase on L2 [cycles]. 00128 RINEX_OBS_TYPE_L5, //!< Phase on L5 [cycles]. 00129 RINEX_OBS_TYPE_L6, //!< Phase on L6 [cycles]. 00130 RINEX_OBS_TYPE_L7, //!< Phase on L7 [cycles]. 00131 RINEX_OBS_TYPE_L8, //!< Phase on L8 [cycles]. 00132 RINEX_OBS_TYPE_C1, //!< Pseudorange using Civil code on L1 [m]. 00133 RINEX_OBS_TYPE_C2, //!< Pseudorange using Civil code on L2 [m]. 00134 RINEX_OBS_TYPE_C5, //!< Pseudorange using Civil code on L5 [m]. 00135 RINEX_OBS_TYPE_C6, //!< Pseudorange using Civil code on L6 [m]. 00136 RINEX_OBS_TYPE_C7, //!< Pseudorange using Civil code on L7 [m]. 00137 RINEX_OBS_TYPE_C8, //!< Pseudorange using Civil code on L8 [m]. 00138 RINEX_OBS_TYPE_P1, //!< Pseudorange using P-Code on L1 [m]. 00139 RINEX_OBS_TYPE_P2, //!< Pseudorange using P-Code on L2 [m]. 00140 RINEX_OBS_TYPE_P5, //!< Pseudorange using P-Code on L5 [m]. 00141 RINEX_OBS_TYPE_P6, //!< Pseudorange using P-Code on L6 [m]. 00142 RINEX_OBS_TYPE_P7, //!< Pseudorange using P-Code on L7 [m]. 00143 RINEX_OBS_TYPE_P8, //!< Pseudorange using P-Code on L8 [m]. 00144 RINEX_OBS_TYPE_D1, //!< Doppler frequency on L1 [Hz]. 00145 RINEX_OBS_TYPE_D2, //!< Doppler frequency on L2 [Hz]. 00146 RINEX_OBS_TYPE_D5, //!< Doppler frequency on L5 [Hz]. 00147 RINEX_OBS_TYPE_D6, //!< Doppler frequency on L6 [Hz]. 00148 RINEX_OBS_TYPE_D7, //!< Doppler frequency on L7 [Hz]. 00149 RINEX_OBS_TYPE_D8, //!< Doppler frequency on L8 [Hz]. 00150 RINEX_OBS_TYPE_T1, //!< Transit Integrated Doppler on 150 (T1) [cycles]. 00151 RINEX_OBS_TYPE_T2, //!< Transit Integrated Doppler on 400 MHz (T2) [cycles]. 00152 RINEX_OBS_TYPE_S1, //!< Raw signal strengths or SNR values as given by the receiver for the L1 phase observations [receiver-dependent]. 00153 RINEX_OBS_TYPE_S2, //!< Raw signal strengths or SNR values as given by the receiver for the L2 phase observations [receiver-dependent]. 00154 RINEX_OBS_TYPE_S5, //!< Raw signal strengths or SNR values as given by the receiver for the L1 phase observations [receiver-dependent]. 00155 RINEX_OBS_TYPE_S6, //!< Raw signal strengths or SNR values as given by the receiver for the L2 phase observations [receiver-dependent]. 00156 RINEX_OBS_TYPE_S7, //!< Raw signal strengths or SNR values as given by the receiver for the L1 phase observations [receiver-dependent]. 00157 RINEX_OBS_TYPE_S8, //!< Raw signal strengths or SNR values as given by the receiver for the L2 phase observations [receiver-dependent]. 00158 00159 RINEX_OBS_TYPE_UNKNOWN 00160 00161 } RINEX_enumObservationType; 00162 00163 /// RINEX VERSION 2.11: An enumeration for wavelength factors. 00164 typedef enum 00165 { 00166 RINEX_WAVELENTH_FACTOR_SINGLE_FREQ = 0, 00167 RINEX_WAVELENTH_FACTOR_FULL_AMB = 1, 00168 RINEX_WAVELENTH_FACTOR_HALF_CYCLE = 2, 00169 RINEX_WAVELENTH_FACTOR_UNKOWN 00170 00171 } RINEX_enumWavelenthFactorL1_L2; 00172 00173 /// RINEX VERSION 2.11: An enumeration for the GNSS time system. 00174 typedef enum 00175 { 00176 RINEX_TIME_SYSTEM_GPS = 0, //!< GPS time system. 00177 RINEX_TIME_SYSTEM_GLO = 1, //!< GLONASS time system. 00178 RINEX_TIME_SYSTEM_GAL = 1, //!< GALILEO time system. 00179 RINEX_TIME_SYSTEM_UNKNOWN 00180 00181 } RINEX_enumTimeSystem; 00182 00183 00184 /// RINEX VERSION 2.11: A container for a RINEX time. 00185 typedef struct 00186 { 00187 unsigned short year; 00188 unsigned char month; 00189 unsigned char day; 00190 unsigned char hour; 00191 unsigned char minute; 00192 float seconds; 00193 RINEX_enumTimeSystem time_system; 00194 00195 } RINEX_TIME; 00196 00197 00198 /// RINEX VERSION 2.11: An enumeration for the epoch flag. 00199 typedef enum 00200 { 00201 RINEX_EPOCH_FLAG_OK = 0, //!< OK 00202 RINEX_EPOCH_FLAG_PWR_FAIL = 1, //!< power failure between previous and current epoch. 00203 RINEX_EPOCH_FLAG_MOVING_ANT = 2, //!< start moving antenna. 00204 RINEX_EPOCH_FLAG_NEW_SITE = 3, //!< new site occupation (end of kinem. data) (at least MARKER NAME record follows) 00205 RINEX_EPOCH_FLAG_HEADER_FOLLOWS = 4, //!< header information follows 00206 RINEX_EPOCH_FLAG_EXTERNAL_EVENT = 5, //!< external event (epoch is significant, same time frame as observation time tags). 00207 RINEX_EPOCH_FLAG_CYCLE_SLIP = 6, //!< cycle slip records follow to optionally report detected and repaired cycle slips (same format as OBSERVATIONS records; slip instead of observation; LLI and signal strength blank or zero) 00208 RINEX_EPOCH_FLAG_EVENT 00209 00210 } RINEX_enumEpochFlag; 00211 00212 00213 /// RINEX VERSION 2.11: A container required information from a decode RINEX header. 00214 typedef struct 00215 { 00216 double version; //!< RINEX version. 00217 RINEX_enumFileType type; //!< RINEX file type. 00218 char marker_name[64]; //!< The site marker name. 00219 double x; //!< Geocentric approximate marker position (Units: Meters, System: ITRS recommended) Optional for moving platforms. 00220 double y; //!< Geocentric approximate marker position (Units: Meters, System: ITRS recommended) Optional for moving platforms. 00221 double z; //!< Geocentric approximate marker position (Units: Meters, System: ITRS recommended) Optional for moving platforms. 00222 double antenna_delta_h; //!< Antenna height: Height of the antenna reference point (ARP) above the marker 00223 double antenna_ecc_e; //!< Horizontal eccentricity of ARP relative to the marker (east). All units in meters. 00224 double antenna_ecc_n; //!< Horizontal eccentricity of ARP relative to the marker (north). All units in meters. 00225 unsigned nr_obs_types; //!< The number of valid observation types. 00226 RINEX_enumObservationType obs_types[12]; //!< The observation types. 00227 00228 RINEX_enumWavelenthFactorL1_L2 default_wavefactor_L1; //!< The default wavelenth factor for L1. 00229 RINEX_enumWavelenthFactorL1_L2 default_wavefactor_L2; //!< The default wavelenth factor for L2. 00230 00231 char wavelength_factors[1024]; //!< A string containing any satellite specific wavelength factors. 00232 00233 double interval; //!< The interval between observatons. -1 if not present. 00234 RINEX_TIME time_of_first_obs; //!< The time of the first observation record. 00235 00236 } RINEX_structDecodedHeader; 00237 00238 00239 00240 00241 00242 /** 00243 \brief RINEX VERSION 2.11: Get the RINEX header, as a buffer, 00244 from the specified file path. Determine the RINEX version and file type. 00245 00246 \author Glenn D. MacGougan 00247 \date 2007-12-03 00248 \since 2007-12-03 00249 00250 remarks 00251 - The "RINEX VERSION / TYPE" record must be the first record in a file. 00252 00253 \return TRUE(1) if successful, FALSE(0) otherwise. 00254 */ 00255 BOOL RINEX_GetHeader( 00256 const char* filepath, //!< Path to the RINEX file. 00257 char* buffer, //!< (input/output) A character buffer in which to place the RINEX header. 00258 const unsigned buffer_max_size, //!< (input) The maximum size of the buffer [bytes]. This value should be large enough to hold the entire header, (8192 to 16384). 00259 unsigned *buffer_size, //!< (output) The length of the header data placed in the buffer [bytes]. 00260 double *version, //!< (output) The RINEX version number. e.g. 1.0, 2.0, 2.2, 3.0, etc. 00261 RINEX_enumFileType *file_type //!< (output) The RINEX file type. 00262 ); 00263 00264 00265 00266 /** 00267 \brief RINEX VERSION 2.11: Decode the parts of the RINEX Observation 00268 file header that are essential to 00269 00270 \author Glenn D. MacGougan 00271 \date 2007-12-03 00272 \since 2007-12-03 00273 00274 \return TRUE(1) if successful, FALSE(0) otherwise. 00275 */ 00276 BOOL RINEX_DecodeHeader_ObservationFile( 00277 const char* header_buffer, //!< (input) The character buffer containing the RINEX header. 00278 const unsigned header_buffer_size, //!< (input) The size of the character buffer containing the RINEX header [bytes]. Not the maximum size, the size of the valid data in the buffer. 00279 RINEX_structDecodedHeader* header //!< (output) The decoded header data. 00280 ); 00281 00282 00283 /** 00284 \brief RINEX VERSION 2.11: Decode the next set of observations 00285 from the RINEX Observation file. Deal with any header 00286 information changes that arise from special records. 00287 00288 \author Glenn D. MacGougan 00289 \date 2007-12-06 00290 \since 2007-12-03 00291 00292 \return TRUE(1) if successful, FALSE(0) otherwise. 00293 */ 00294 BOOL RINEX_GetNextObservationSet( 00295 FILE* fid, //!< (input) An open (not NULL) file pointer to the RINEX data. 00296 RINEX_structDecodedHeader* RINEX_header, //!< (input/output) The decoded RINEX header information. The wavelength markers can change as data is decoded. 00297 BOOL *wasEndOfFileReached, //!< Has the end of the file been reached (output). 00298 BOOL *wasObservationFound, //!< Was a valid observation found (output). 00299 unsigned *filePosition, //!< The file position for the start of the message found (output). 00300 GNSS_structMeasurement* obsArray, //!< A pointer to a user provided array of GNSS_structMeasurement (input/output). 00301 const unsigned char maxNrObs, //!< The maximum number of elements in the array provided (input). 00302 unsigned *nrObs, //!< The number of valid elements set in the array (output). 00303 unsigned short* rx_gps_week, //!< The receiver GPS week (0-1024+) [weeks]. 00304 double* rx_gps_tow //!< The receiver GPS time of week (0-603799.99999) [s]. 00305 ); 00306 00307 00308 00309 /** 00310 \brief RINEX VERSION 2.11: Completely decode a RINEX GPS 00311 Navigation file into an array of GPS ephemeris structs. 00312 00313 \author Glenn D. MacGougan 00314 \date 2007-12-06 00315 \since 2007-12-06 00316 00317 \return TRUE(1) if successful, FALSE(0) otherwise. 00318 */ 00319 BOOL RINEX_DecodeGPSNavigationFile( 00320 const char *filepath, //!< (input) The file path to the GPS Navigation message file. 00321 GNSS_structKlobuchar *iono_model, //!< (input/output) A pointer to the ionospheric parameters struct. 00322 GPS_structEphemeris *ephemeris_array, //!< (input/output) A pointer to the GPS ephemeris array. 00323 const unsigned int max_length_ephemeris_array, //!< (input) The maximum size of the GPS ephemeris array. 00324 unsigned int *length_ephemeris_array //!< (input/output) The length of the GPS ephemeris array after decoding. The number of valid items. 00325 ); 00326 00327 00328 /** 00329 \brief RINEX VERSION 2.11: Decode a RINEX file name. 00330 00331 \author Glenn D. MacGougan 00332 \date 2007-12-06 00333 \since 2007-12-06 00334 00335 \code 00336 char *filepath = "c:\\data\\CGIM3280.07N"; 00337 char station_name[5]; 00338 unsigned short dayofyear = 0; 00339 unsigned char file_sequence_nr = 0; 00340 unsigned short year = 0; 00341 RINEX_enumFileType filetype = RINEX_FILE_TYPE_UNKNOWN; 00342 BOOL result = FALSE; 00343 00344 result = RINEX_DecodeFileName( filepath, station_name, &dayofyear, &file_sequence_nr, &year, &filetype ); 00345 // The results are 00346 // station_name == CGIM 00347 // dayofyear == 328 00348 // file_sequence_nr == 0 00349 // year == 2007 00350 // filetype == RINEX_FILE_TYPE_OBS 00351 \endcode 00352 00353 \return TRUE(1) if successful, FALSE(0) otherwise. 00354 */ 00355 BOOL RINEX_DecodeFileName( 00356 const char *filepath, //!< (input) A full filepath. 00357 char *station_name, //!< (output) A 5 character C string. char station_name[5]. In which to place the 4-character station name designator. This must be at least 5 characters. 00358 unsigned short *dayofyear, //!< (output) The day of year. 00359 unsigned char *file_sequence_nr, //!< (output) file sequence number within day. 0: file contains all the existing data of the current day. 00360 unsigned short *year, //!< (output) The full year. e.g. 1999, 2001. 00361 RINEX_enumFileType *filetype //!< (output) The RINEX file type. 00362 ); 00363 00364 00365 00366 /** 00367 \brief RINEX VERSION 2.11: Decode the ionospheric parameters 00368 from a RINEX GPS Navigation file. 00369 00370 \author Glenn D. MacGougan 00371 \date 2007-12-07 00372 \since 2007-12-07 00373 00374 \code 00375 char *filepath = "c:\\data\\brdc3400.07n"; 00376 GNSS_structKlobuchar iono; 00377 BOOL result; 00378 00379 result = RINEX_GetKlobucharIonoParametersFromNavFile( filepath, &iono ); 00380 \endcode 00381 00382 \return TRUE(1) if successful, FALSE(0) otherwise. 00383 */ 00384 BOOL RINEX_GetKlobucharIonoParametersFromNavFile( 00385 const char *filepath, //!< (input) The file path to the GPS Navigation message file. 00386 GNSS_structKlobuchar *iono_model //!< (input/output) A pointer to the ionospheric parameters struct. 00387 ); 00388 00389 00390 00391 #ifdef __cplusplus 00392 } 00393 #endif 00394 00395 00396 #endif // _RINEX_H_ 00397