The proposed below Binary Receiver Independent Exchange format has the same basic philosophy as RINEX-2 one, however three following modifications are suggested:
1. FLAG 1: Version (1 byte)
Binary exchange format version.
2. FLAG 2: Spare (1 byte)
3. FILE-HEADER (as in RINEX-2, variable length)
In order to make available variable length of the section, the RINEX-2 format for the header lines
is adopted. The header is composed of a number of maximum 80 characters long strings (vectors)
terminated with CR-character. The last line must contain the character sequence:
>>END OF HEADER<<
Any change of header information must be reported by inserting appropriate header lines into the data file. These
>>updating-lines<<
must follow the Event Flag
>>header information follows<<
(similary as in original RINEX).
The file-header must contain the following information (the keywords as in RINEX):
4. EPOCH-HEADER (Structure, 12 bytes)
Time tag long int, 4 bytes Floating part of the time tag long int, 4 bytes Receiver clock offset (fraction of second) long int, 4 bytesThe floating part of the time tag and receiver clock offset to be divided by 2^32.
typedef struct {
long int timeTag,
partOfSec,
clfOffset;
} EPOCH_HEADER;
There are different structure alignment rules on different computers. In order to assure
binary data exchange, the structure must be stored byte by byte.
5. NUMBER OF SATELLITES in the current epoch of event flag (1 byte)
Value greater than 0 means: number of observations in the current epoch, otherwise event flag.
Event flags according to the RINEX-2.
6. SATELLITE IDs (Variable length = number of satellites tracked)
Vector of bytes containing SV PRN ID:
bit 7 (MSB) - AS flag (1-on, 0-off) bits 0 - 6 - SV PR Number
7. CHANNEL NUMBERS (Variable length = number of satellites tracked)
Vector of unsigned character bytes containing receiver channel numbers, where:
bit 7 (MSB) - Loss of lock indicator bits 0 - 6 - Channel number
8. SIGNAL/NOISE COUNTS (Variable length = number of satellites tracked * Number of SNR-observations)
Vector of 2 bytes words with L1 S/N counts.
Length = Number of satellites * 2 bytes * Number of frequencies;
String of 2 bytes words with L2 S/N counts (Only for double frequency receivers).
Length = Number of satellites * 2 bytes * Number of frequencies;
9. SINGLE OBSERVATION (10 bytes)
Value double (8 bytes) Observation type char. (1 byte) System ID unsigned char. (1 byte) Bit 0 bis 2: system's ID; bits 3 bis 7: spare for a quality indicatorExample:
typedef struct {
double Value;
} singleObservation;
Observation types:
10. BROADCAST EPHEMERIS
Week Number and GPS seconds since Jan. 6, 1980 (transmission time) long integer seconds Code(s) on L2 Channel unsigned char N/A L2 P data flag unsigned char N/A SV Accuracy unsigned char (as in ICD-2000) SV Health unsigned char N/A Age of Data Clock, AODC long integer seconds L1-L2 correction, TGD double seconds Age of Data Ephemeris, AODE long integer seconds Clock correction: toc integer seconds af0 double seconds af1 double sec./sec. af2 double sec./sec.^2 Mean anomaly at reference time, M0 double radians Mean motion, Dn double rad./sec. Eccentricity, e double N/A Square root of the semi-major axis, sq.A double 1/m^2 Right ascension at reference time, OMEGA0 double radians Inclination angle at reference time, i0 double radians Argument of perigee, omega double radians Rate of right ascension, OMEGADOT double rad./sec. Rate of inclination angle, IDOT double rad./sec. Amplitudes of the cos. Harmonic correction term to the: argument of latitude Cuc double radians orbit radius Crc double meters angle of inclination Cic double radians Amplitudes of the cos. Harmonic correction term to the: argument of latitude Cus double radians orbit radius Crs double meters angle of inclination Cis double radians Reference time ephemeris, toe integer seconds
Last modified Friday, 21-Jul-2006 23:21:07 UTC