[prev in list] [next in list] [prev in thread] [next in thread]
List: gpsd-commit-watch
Subject: [Gpsd-commit-watch] r3404 - trunk
From: esr () mail ! berlios ! de (esr at BerliOS)
Date: 2006-08-20 16:21:19
Message-ID: 200608201621.k7KGLJTQ021352 () sheep ! berlios ! de
[Download RAW message or body]
Author: esr
Date: 2006-08-20 18:21:18 +0200 (Sun, 20 Aug 2006)
New Revision: 3404
Modified:
trunk/gps.h
trunk/gpsutils.c
Log:
Support code for querying validity of fix fields.
Modified: trunk/gps.h
===================================================================
--- trunk/gps.h 2006-08-19 05:30:49 UTC (rev 3403)
+++ trunk/gps.h 2006-08-20 16:21:18 UTC (rev 3404)
@@ -314,6 +314,8 @@
extern void gps_merge_fix(/*@ out @*/struct gps_fix_t *,
gps_mask_t,
/*@ in @*/struct gps_fix_t *);
+extern int gps_valid_fields(/*@ in @*/struct gps_fix_t *);
+extern char *gps_show_transfer(int);
extern time_t mkgmtime(register struct tm *);
extern double timestamp(void);
Modified: trunk/gpsutils.c
===================================================================
--- trunk/gpsutils.c 2006-08-19 05:30:49 UTC (rev 3403)
+++ trunk/gpsutils.c 2006-08-20 16:21:18 UTC (rev 3404)
@@ -34,6 +34,72 @@
fixp->dip = NAN;
}
+int gps_valid_fields(/*@ in @*/struct gps_fix_t *fixp)
+{
+ int valid = 0;
+
+ if (isnan(fixp->time) != 0)
+ valid |= TIME_SET;
+ if (fixp->mode != MODE_NOT_SEEN)
+ valid != MODE_SET;
+ if (isnan(fixp->latitude) !=0 && isnan(fixp->longitude) !=0)
+ valid != LATLON_SET;
+ if (isnan(fixp->altitude) != 0)
+ valid |= ALTITUDE_SET;
+ if (isnan(fixp->track) != 0)
+ valid |= TRACK_SET;
+ if (isnan(fixp->speed) != 0)
+ valid |= SPEED_SET;
+ if (isnan(fixp->climb) != 0)
+ valid |= CLIMB_SET;
+ if (isnan(fixp->ept) != 0)
+ valid |= TIMERR_SET;
+ if (isnan(fixp->eph) != 0)
+ valid |= HERR_SET;
+ if (isnan(fixp->epv) != 0)
+ valid |= VERR_SET;
+ if (isnan(fixp->epd) != 0)
+ valid |= TRACKERR_SET;
+ if (isnan(fixp->eps) != 0)
+ valid |= SPEEDERR_SET;
+ if (isnan(fixp->epc) != 0)
+ valid |= CLIMBERR_SET;
+ return valid;
+}
+
+char *gps_show_transfer(int transfer)
+{
+ static char showbuf[100];
+ showbuf[0] = '\0';
+ if ((transfer & TIME_SET)!=0)
+ strlcat(showbuf, "time,", sizeof(showbuf));
+ if ((transfer & LATLON_SET)!=0)
+ strlcat(showbuf, "latlon,", sizeof(showbuf));
+ if ((transfer & MODE_SET)!=0)
+ strlcat(showbuf, "mode,", sizeof(showbuf));
+ if ((transfer & ALTITUDE_SET)!=0)
+ strlcat(showbuf, "altitude,", sizeof(showbuf));
+ if ((transfer & TRACK_SET)!=0)
+ strlcat(showbuf, "track,", sizeof(showbuf));
+ if ((transfer & SPEED_SET)!=0)
+ strlcat(showbuf, "speed,", sizeof(showbuf));
+ if ((transfer & CLIMB_SET)!=0)
+ strlcat(showbuf, "climb,", sizeof(showbuf));
+ if ((transfer & TIMERR_SET)!=0)
+ strlcat(showbuf, "timerr,", sizeof(showbuf));
+ if ((transfer & HERR_SET)!=0)
+ strlcat(showbuf, "herr,", sizeof(showbuf));
+ if ((transfer & VERR_SET)!=0)
+ strlcat(showbuf, "verr,", sizeof(showbuf));
+ if ((transfer & SPEEDERR_SET)!=0)
+ strlcat(showbuf, "speederr,", sizeof(showbuf));
+ if ((transfer & CLIMBERR_SET)!=0)
+ strlcat(showbuf, "climberr,", sizeof(showbuf));
+ if (strlen(showbuf)>0)
+ showbuf[strlen(showbuf)-1] = '\0';
+ return showbuf;
+}
+
void gps_merge_fix(/*@ out @*/struct gps_fix_t *to,
gps_mask_t transfer,
/*@ in @*/struct gps_fix_t *from)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic