+1999-08-23 Harlan Stenn <stenn@whimsy.udel.edu>
+
+ * ntpd/refclock_nmea.c: Patches for:
+ 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.
+ From: Nick Hibma <nick.hibma@jrc.it>
+
1999-08-21 Harlan Stenn <stenn@whimsy.udel.edu>
* ntpd/ntp_config.c: Added listen_to_virtual_ips support (-L flag)
* 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->a_lastcode;
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;
}
switch( cmdtype ) {
case GPRMC:
+ case GPGCA:
/*
* Check time code format of NMEA
*/
}
+ 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.
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);