diff options
author | n_hibma <n_hibma@FreeBSD.org> | 1999-08-23 14:49:22 +0000 |
---|---|---|
committer | n_hibma <n_hibma@FreeBSD.org> | 1999-08-23 14:49:22 +0000 |
commit | eb943b47e00fe575463c1cf41339776ba2e8b371 (patch) | |
tree | 654e75ed1a2f4ec4925246f80a650c247dc2b1c6 /usr.sbin | |
parent | 51b48f5bf42d1d712b5950e7f13372f743a6e62a (diff) | |
download | FreeBSD-src-eb943b47e00fe575463c1cf41339776ba2e8b371.zip FreeBSD-src-eb943b47e00fe575463c1cf41339776ba2e8b371.tar.gz |
Recognise the GPS receiver from Trimble
in NMEA mode (without date).
Trimble OEM Ace-II receiver. Low cost PCB with single
voltage input, external active antenna and two serial
ports with either NMEA and ITAPs output. Programmable
to be tuned for 'time' accuracy in fixed station config.
Author of tool notified.
Submitted by: Dirk van Gulik <dirk.vangulik@jrc.it>
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/xntpd/xntpd/refclock_nmea.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/usr.sbin/xntpd/xntpd/refclock_nmea.c b/usr.sbin/xntpd/xntpd/refclock_nmea.c index f8ae4bc..b7be01d 100644 --- a/usr.sbin/xntpd/xntpd/refclock_nmea.c +++ b/usr.sbin/xntpd/xntpd/refclock_nmea.c @@ -210,15 +210,20 @@ nmea_receive(rbufp) * we only care about a few of them. The most important being * the $GPRMC format * $GPRMC,hhmmss,a,fddmm.xx,n,dddmmm.xx,w,zz.z,yyy.,ddmmyy,dd,v*CC + * $GPGGA,162617.0,4548.339,N,00837.719,E,1,07,0.97,00262,M,048,M,,*5D */ #define GPRMC 0 #define GPXXX 1 +#define GPGCA 2 cp = pp->lastcode; pp->leap = 0; cmdtype=0; if(strncmp(cp,"$GPRMC",6)==0) { cmdtype=GPRMC; } + else if(strncmp(cp,"$GPGGA",6)==0) { + cmdtype=GPGCA; + } else if(strncmp(cp,"$GPXXX",6)==0) { cmdtype=GPXXX; } @@ -227,6 +232,7 @@ nmea_receive(rbufp) switch( cmdtype ) { case GPRMC: + case GPGCA: /* * Check time code format of NMEA */ @@ -250,6 +256,14 @@ nmea_receive(rbufp) } + if (cmdtype ==GPGCA) { + /* only time */ + time_t tt = time(NULL); + struct tm * t = gmtime(&tt); + day = t->tm_mday; + month = t->tm_mon + 1; + pp->year= t->tm_year; + } else { dp = field_parse(cp,9); /* * Convert date and check values. @@ -260,6 +274,7 @@ nmea_receive(rbufp) month = (month * 10) + dp[3] - '0'; pp->year = dp[4] - '0'; pp->year = (pp->year * 10) + dp[5] - '0'; + } if (month < 1 || month > 12 || day < 1) { refclock_report(peer, CEVNT_BADTIME); |