190-00266-01
GPS 15H & 15L Technical Specifications
Rev. D
Page 31
Next, the unit sends 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;