Next, the unit will send the specified number of packets containing the ephemeris information. An example packet is shown below. Each packet should be acknowledged as before (be sure to modify the ACK packet to indicate what type of packet being acknowledged. For ephemeris data, the ID is 0x35).
RX Packet: Ephemeris Data |
|
|
Byte Description | Name | HEX Value |
Delimiter | DLE | 0x10 |
Ephemeris data ID | IOP_SPC_EPH_DATA | 0x35 |
Number of bytes in data | SIZE | 0x78 |
Ephemeris data | DATA | |
. | . | . |
. | . | . |
. | . | . |
Checksum calculation | CHKSUM | |
Delimiter | DLE | 0x10 |
End of packet | ETX | 0x03 |
The data portion of each packet can then be parsed into an instance of the following structure. Each of these structures represents data from a single satellite.
typedef | struct | /* ephemeris data record for SPC |
|
| */ | |
{ | wn; | /* week number | (weeks) |
|
| */ |
sint16 |
|
| ||||
float | toc; | /* reference time of clock parameters (s) |
| */ | ||
float | toe; | /* reference time of ephemeris parameters (s) | */ | |||
float | af0; | /* clock correction coefficient - group delay (s) | */ | |||
float | af1; | /* clock correction coefficient |
| (s/s) | */ | |
float | af2; | /* clock correction coefficient | (s/s/s) | */ | ||
float | ura; | /* user range accuracy |
| (m) | */ | |
double | e; | /* eccentricity | of |
| */ | |
double | sqrta; | /* square root | (m**1/2) | */ | ||
double | dn; | /* mean motion | correction |
| (r/s) | */ |
double | m0; | /* mean anomaly at reference time |
| (r) | */ | |
double | w; | /* argument of | perigee |
| (r) | */ |
double | omg0; | /* right ascension |
| (r) | */ | |
double | i0; | /* inclination | angle at reference time |
| (r) | */ |
float | odot; | /* rate of right ascension |
| (r/s) | */ | |
float | idot; | /* rate of inclination angle |
| (r/s) | */ | |
float | cus; | /* argument of | latitude correction, sine | (r) | */ | |
float | cuc; | /* argument of | latitude correction, cosine | (r) | */ | |
float | cis; | /* inclination | correction, sine |
| (r) | */ |
float | cic; | /* inclination | correction, cosine |
| (r) | */ |
float | crs; | /* radius correction, sine |
| (m) | */ | |
float | crc; | /* radius correction, cosine |
| (m) | */ | |
unsigned char iod; | /* issue of data |
|
| */ | ||
} SDM_spc_eph_type; |
|
|
|
|
|
GPS 16x Technical Specifications | Rev. A | |
| Page 27 |
|