190-00228-08 GPS 16x Technical Specifications Rev. B
Page 27
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 */
{
sint16 wn; /* week number (weeks) */
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 (-) */
double sqrta; /* square root of semi-major axis (a) (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;