Csr location class shows location and satellite information, which supports H13467 + ST F103RB/NXP LCP1549 boards now.
Dependents: CsrLocationDemo CsrLocationDemo
Fork of CsrLocation by
Diff: CsrLocation.cpp
- Revision:
- 17:05033198f8f3
- Parent:
- 14:bb86a6ca6662
- Child:
- 18:5d72465991f5
diff -r bb86a6ca6662 -r 05033198f8f3 CsrLocation.cpp
--- a/CsrLocation.cpp Wed Nov 05 02:26:49 2014 +0000
+++ b/CsrLocation.cpp Tue Nov 18 02:43:19 2014 +0000
@@ -77,6 +77,9 @@
const tLocPosResp *pPosRsp = (const tLocPosResp *)pMsgData;
lastLocation.version = 1;
lastLocation.valid = true;
+ lastLocation.gpsTime.gps_week = pPosRsp->gpsTime.gps_week;
+ lastLocation.gpsTime.tow = pPosRsp->gpsTime.tow;
+ lastLocation.utcTime = pPosRsp->utcTime;
lastLocation.lat = pPosRsp->lat;
lastLocation.lon = pPosRsp->lon;
lastLocation.altitude = pPosRsp->alt;
@@ -92,8 +95,6 @@
lastLocation.valid = true;
lastLocation.numGPSSVs = pSvStatus->numOfSVs;
lastLocation.numGLOSVs = pSvStatus->numOfGloSVs;
- lastLocation.u.gpsTime.gps_week = pSvStatus->gps_week;
- lastLocation.u.gpsTime.tow = pSvStatus->tow;
break;
}
@@ -606,7 +607,7 @@
/* Parse GPGGA and output position information */
memset(&pos, 0, sizeof(tLocPosResp));
- if (sscanf((char *)serialPkt, "GPGGA,%f,%lf,%c,%lf,%c,%d,%d,%f,%lf", &pos.u.utcTime, &pos.lat, &ns, &pos.lon, &ew, &valid, &svUsed, &horDop,
+ if (sscanf((char *)serialPkt, "GPGGA,%f,%lf,%c,%lf,%c,%d,%d,%f,%lf", &pos.utcTime, &pos.lat, &ns, &pos.lon, &ew, &valid, &svUsed, &horDop,
&pos.alt) >= 1) {
if (ns == 'S') {
pos.lat *= -1.0;
@@ -745,8 +746,9 @@
*pMsgLen = sizeof(*pPos);
ptr += 2;
- pPos->u.gpsTime.gps_week = BINARY_IMPORT_UINT16(ptr);
- pPos->u.gpsTime.tow = BINARY_IMPORT_UINT32(ptr);
+ pPos->gpsTime.gps_week = BINARY_IMPORT_UINT16(ptr);
+ pPos->gpsTime.tow = BINARY_IMPORT_UINT32(ptr);
+ pPos->utcTime = (float)CSR_ULOC_UTC_GPS_OFFSET_MS + (float)pPos->gpsTime.gps_week * CSR_ULOC_SEC_IN_WEEK_MS + pPos->gpsTime.tow - CSR_ULOC_UTC_LEAP_OFFSET_MS;
ptr += 12;
pPos->lat = (double)BINARY_IMPORT_SINT32(ptr);
pPos->lat *= 1e-7;

GPS mbed Shield