190-00266-01 GPS 15H & 15L Technical Specifications Rev. DPage 32An example function to complete the parsing is shown below. Note that the double data types are convertedby the function cnvt_ieee_double(). This function merely swaps the upper and lower words of thedouble. This is necessary on GPS 15, 16, 17 series sensors due to a compatibility issue with the IEEEfloating point standard): In this example, the array m_TempArray contains the data portion of theephemeris packet (with DLE stuffing removed)./****************************************************************************** PROCEDURE NAME:* copyData - ephemeris data unpacker** DESCRIPTION:* unpacks data from ephemeris packet DATA field after extraneous DLEs* have been removed. Note that sint16 refers to a signed 16-bit* integer type.*****************************************************************************/void GPM_ephList::copyData /* ephemeris data unpacker */(GPM_ephData* pTemp /* pointer to ephemeris data array */){pTemp->EphStruct.wn = *(sint16*)&m_TempArray[IDX_EPH_WN];pTemp->EphStruct.toc = *(float*)&m_TempArray[IDX_EPH_TOC];pTemp->EphStruct.toe = *(float*)&m_TempArray[IDX_EPH_TOE];pTemp->EphStruct.af0 = *(float*)&m_TempArray[IDX_EPH_AF0];pTemp->EphStruct.af1 = *(float*)&m_TempArray[IDX_EPH_AF1];pTemp->EphStruct.af2 = *(float*)&m_TempArray[IDX_EPH_AF2];pTemp->EphStruct.ura = *(float*)&m_TempArray[IDX_EPH_URA];cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_E]);pTemp->EphStruct.e = *(double*)&m_TempArray[IDX_EPH_E];cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_SQRTA]);pTemp->EphStruct.sqrta = *(double*)&m_TempArray[IDX_EPH_SQRTA];cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_DN]);pTemp->EphStruct.dn = *(double*)&m_TempArray[IDX_EPH_DN];cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_M0]);pTemp->EphStruct.m0 = *(double*)&m_TempArray[IDX_EPH_M0];cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_W]);pTemp->EphStruct.w = *(double*)&m_TempArray[IDX_EPH_W];cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_OMG0]);pTemp->EphStruct.omg0 = *(double*)&m_TempArray[IDX_EPH_OMG0];cnvt_ieee_double((long *)&m_TempArray[IDX_EPH_I0]);pTemp->EphStruct.i0 = *(double*)&m_TempArray[IDX_EPH_I0];pTemp->EphStruct.odot = *(float*)&m_TempArray[IDX_EPH_ODOT];pTemp->EphStruct.idot = *(float*)&m_TempArray[IDX_EPH_IDOT];pTemp->EphStruct.cus = *(float*)&m_TempArray[IDX_EPH_CUS];pTemp->EphStruct.cuc = *(float*)&m_TempArray[IDX_EPH_CUC];pTemp->EphStruct.cis = *(float*)&m_TempArray[IDX_EPH_CIS];pTemp->EphStruct.cic = *(float*)&m_TempArray[IDX_EPH_CIC];pTemp->EphStruct.crs = *(float*)&m_TempArray[IDX_EPH_CRS];pTemp->EphStruct.crc = *(float*)&m_TempArray[IDX_EPH_CRC];pTemp->EphStruct.iod = *(unsigned char*)&m_TempArray[IDX_EPH_IOD];return;} /* copyData */