summaryrefslogtreecommitdiff
path: root/driver_rtcm3.c
diff options
context:
space:
mode:
authorEric S. Raymond <esr@thyrsus.com>2009-03-04 18:03:32 +0000
committerEric S. Raymond <esr@thyrsus.com>2009-03-04 18:03:32 +0000
commitaf0806a57ae3e5a4c95f8429e0acc2c02664f519 (patch)
treef86dd6f73ffe6e6d55fc3311efbece645b09b81e /driver_rtcm3.c
parent56764b0b48fdcfbe32df1294306bd6982e274b75 (diff)
downloadgpsd-af0806a57ae3e5a4c95f8429e0acc2c02664f519.tar.gz
Another RTCM3 message (1013).
Diffstat (limited to 'driver_rtcm3.c')
-rw-r--r--driver_rtcm3.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/driver_rtcm3.c b/driver_rtcm3.c
index 19090b52..6a6202fe 100644
--- a/driver_rtcm3.c
+++ b/driver_rtcm3.c
@@ -349,7 +349,7 @@ void rtcm3_unpack(/*@out@*/struct rtcm3_t *rtcm, char *buf)
}
break;
- case 1012:
+ case 1012: /* GLONASS Extended RTK, L1 & L2 */
rtcm->rtcmtypes.rtcm3_1012.header.station_id = (unsigned short)ugrab(12);
rtcm->rtcmtypes.rtcm3_1012.header.tow = (time_t)ugrab(27);
rtcm->rtcmtypes.rtcm3_1012.header.sync = (bool)ugrab(1);
@@ -386,7 +386,17 @@ void rtcm3_unpack(/*@out@*/struct rtcm3_t *rtcm, char *buf)
}
break;
- case 1013:
+ case 1013: /* System Parameters */
+ rtcm->rtcmtypes.rtcm3_1013.station_id =(unsigned short)ugrab(12);
+ rtcm->rtcmtypes.rtcm3_1013.mjd = (unsigned short)ugrab(16);
+ rtcm->rtcmtypes.rtcm3_1013.sod = (unsigned short)ugrab(17);
+ rtcm->rtcmtypes.rtcm3_1013.ncount = (unsigned long)ugrab(5);
+ rtcm->rtcmtypes.rtcm3_1013.leapsecs = (unsigned char)ugrab(8);
+ for (i = 0; i < rtcm->rtcmtypes.rtcm3_1013.ncount; i++) {
+ rtcm->rtcmtypes.rtcm3_1013.announcements[i].id = (unsigned short)ugrab(12);
+ rtcm->rtcmtypes.rtcm3_1013.announcements[i].sync = (bool)ugrab(1);
+ rtcm->rtcmtypes.rtcm3_1013.announcements[i].interval = (unsigned short)ugrab(16);
+ }
break;
case 1014:
@@ -672,6 +682,19 @@ void rtcm3_dump(struct rtcm3_t *rtcm, FILE *fp)
break;
case 1013:
+ (void)fprintf(fp,
+ " station_id=%u, mjd=%u sec=%u leapsecs=%u ncount=%u\n",
+ rtcm->rtcmtypes.rtcm3_1013.station_id,
+ rtcm->rtcmtypes.rtcm3_1013.mjd,
+ rtcm->rtcmtypes.rtcm3_1013.sod,
+ rtcm->rtcmtypes.rtcm3_1013.leapsecs,
+ rtcm->rtcmtypes.rtcm3_1013.ncount);
+ for (i = 0; i < rtcm->rtcmtypes.rtcm3_1013.ncount; i++)
+ (void)fprintf(fp,
+ " id=%u sync=%c interval=%u\n",
+ rtcm->rtcmtypes.rtcm3_1013.announcements[i].id,
+ BOOL(rtcm->rtcmtypes.rtcm3_1013.announcements[i].sync),
+ rtcm->rtcmtypes.rtcm3_1013.announcements[i].interval);
break;
case 1014: