summaryrefslogtreecommitdiffstats
path: root/usr.sbin/xntpd
diff options
context:
space:
mode:
authorn_hibma <n_hibma@FreeBSD.org>1999-08-23 14:49:22 +0000
committern_hibma <n_hibma@FreeBSD.org>1999-08-23 14:49:22 +0000
commiteb943b47e00fe575463c1cf41339776ba2e8b371 (patch)
tree654e75ed1a2f4ec4925246f80a650c247dc2b1c6 /usr.sbin/xntpd
parent51b48f5bf42d1d712b5950e7f13372f743a6e62a (diff)
downloadFreeBSD-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/xntpd')
-rw-r--r--usr.sbin/xntpd/xntpd/refclock_nmea.c15
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);
OpenPOWER on IntegriCloud