Garmin GPS 16 Series Spécifications techniques - Page 36

Parcourez en ligne ou téléchargez le pdf Spécifications techniques pour {nom_de_la_catégorie} Garmin GPS 16 Series. Garmin GPS 16 Series 40 pages. Gps receiver / antenna
Également pour Garmin GPS 16 Series : Déclaration de conformité (1 pages), Spécifications techniques (37 pages), Manuel de démarrage rapide (16 pages)

Garmin GPS 16 Series Spécifications techniques
An example function to do the parsing is shown below. Note that the double data types are converted by the
function cnvt_ieee_double(). This function merely swaps the upper and lower words of the double.
This is necessary on GPS 15, 16, 17 series sensors due to a compatibility issue with the IEEE floating point
standard): In this example, the array m_TempArray contains the data portion of the ephemeris 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.
*
integer type.
*
****************************************************************************/
void GPM_ephList::copyData
(
GPM_ephData* pTemp
)
{
pTemp->EphStruct.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 */
190-00228-20
Note that sint16 refers to a signed 16-bit
/* ephemeris data unpacker
/* pointer to ephemeris data array
= *(sint16*)&m_TempArray[IDX_EPH_WN];
GPS 16/17 Technical Specifications
Page 32
*/
*/
Rev. C