Unknown changes...
authorBenoit Papillault <benoit.papillault@free.fr>
Wed, 21 Dec 2011 21:59:57 +0000 (22:59 +0100)
committerBenoit Papillault <benoit.papillault@free.fr>
Wed, 21 Dec 2011 21:59:57 +0000 (22:59 +0100)
mygps.c

diff --git a/mygps.c b/mygps.c
index 1ce0479..9202823 100644 (file)
--- a/mygps.c
+++ b/mygps.c
@@ -199,148 +199,148 @@ struct gps_handler_t {
 #define sizetab(tab) (sizeof(tab)/sizeof(tab[0]))
 
 void usage() {
-       printf("usage: mygps [-set longitude,latitude] [-get|-log]\n");
+       printf("usage: mygps [-set longitude,latitude] [-get|-log] [-debug]\n");
        exit (-1);
 }
 
 int main(int argc, const char *argv[]) {
-       int i;
-       struct gps_data_t gpsdata, *gps = &gpsdata;
-       int get_mode = 0, get_mode_done = 0;
-       int log_mode = 0;
-       int set_mode = 0;
-       double ref_longitude, ref_latitude;
-       int debug_mode = 0;
-
-       for (i=1; i<argc; i++) {
-         if (strcmp(argv[i],"-get")==0) {
-           get_mode = 1;
-         } else if (strcmp(argv[i],"-log")==0) {
-           log_mode = 1;
-         } else if (strcmp(argv[i],"-set")==0 && i+1<argc) {
-           set_mode = 1;
-           if (sscanf(argv[i+1],"%lf,%lf", &ref_longitude, &ref_latitude) != 2)
-             usage();
-           i++;
-         } else if (strcmp(argv[i],"-debug")==0) {
-           debug_mode = 1;
-         } else {
-           usage();
-         }
-       }
-
-       if (!get_mode && !log_mode)
-         usage();
-
-       if (debug_mode) {
-         printf("Compiled libgps API version %d.%d\n",
-                GPSD_API_MAJOR_VERSION, GPSD_API_MINOR_VERSION);
-       }
-
-       do {
-         
-         /* NULL, NULL matches localhost and the default GPSD port */
+  int i;
+  struct gps_data_t gpsdata, *gps = &gpsdata;
+  int get_mode = 0, get_mode_done = 0;
+  int log_mode = 0;
+  int set_mode = 0;
+  double ref_longitude, ref_latitude;
+  int debug_mode = 0;
+  
+  for (i=1; i<argc; i++) {
+    if (strcmp(argv[i],"-get")==0) {
+      get_mode = 1;
+    } else if (strcmp(argv[i],"-log")==0) {
+      log_mode = 1;
+    } else if (strcmp(argv[i],"-set")==0 && i+1<argc) {
+      set_mode = 1;
+      if (sscanf(argv[i+1],"%lf,%lf", &ref_longitude, &ref_latitude) != 2)
+       usage();
+      i++;
+    } else if (strcmp(argv[i],"-debug")==0) {
+      debug_mode = 1;
+    } else {
+      usage();
+    }
+  }
+  
+  if (!get_mode && !log_mode)
+    usage();
+  
+  if (debug_mode) {
+    printf("Compiled libgps API version %d.%d\n",
+          GPSD_API_MAJOR_VERSION, GPSD_API_MINOR_VERSION);
+  }
+  
+  do {
+    
+    /* NULL, NULL matches localhost and the default GPSD port */
 #if GPS_API_MAJOR_VERSION < 5
-         if ((gps = gps_open(NULL, NULL)) == NULL) {
+    if ((gps = gps_open("192.168.38.2", NULL)) == NULL) {
 #endif
 #if GPSD_API_MAJOR_VERSION == 5
-         if (gps_open(NULL, NULL, &gpsdata) != 0) {
+      if (gps_open(NULL, NULL, &gpsdata) != 0) {
 #endif
-           fprintf(stderr, "gps_open: %s\n", gps_errstr(errno));
-           return -1;
-         }
-         
-         if (gps_stream(gps, WATCH_ENABLE, NULL) != 0) {
-           fprintf(stderr, "gps_stream() failed\n");
-           return -1;
-         }
+       fprintf(stderr, "gps_open: %s\n", gps_errstr(errno));
+       return -1;
+      }
+      
+      if (gps_stream(gps, WATCH_ENABLE, NULL) != 0) {
+       fprintf(stderr, "gps_stream() failed\n");
+       return -1;
+      }
+      
+      do {
+       int i, r;
+       fd_set fdr;
+       struct timeval tv = { 10, 0 };
+       gps_mask_t set;
+       
+       /* wait for data of gps->gps_fd */
+       
+       FD_ZERO(&fdr);
+       FD_SET(gps->gps_fd, &fdr);
+       
+       r = select(FD_SETSIZE, &fdr, NULL, NULL, &tv);
+       if (r == 0) {
+         fprintf(stderr,"Time-out reading from GPS daemon\n");
+         break;
+       }
+       
+       /* Depending on the version of libgps, you need to
+          call gps_read() or gps_poll() */
+       if (gps_read(gps) < 0) {
+         perror("gps_read");
+         break;
+       }
+       
+       gettimeofday(&tv_now, NULL);
+       
+       if (debug_mode) {
+         printf("--- %lu.%06lu ---\n", 
+                tv_now.tv_sec, tv_now.tv_usec);
          
-         do {
-           int i, r;
-           fd_set fdr;
-           struct timeval tv = { 10, 0 };
-           gps_mask_t set;
-           
-           /* wait for data of gps->gps_fd */
-           
-           FD_ZERO(&fdr);
-           FD_SET(gps->gps_fd, &fdr);
-           
-           r = select(FD_SETSIZE, &fdr, NULL, NULL, &tv);
-           if (r == 0) {
-             fprintf(stderr,"Time-out reading from GPS daemon\n");
-             break;
-           }
-           
-           /* Depending on the version of libgps, you need to
-              call gps_read() or gps_poll() */
-           if (gps_read(gps) < 0) {
-             perror("gps_read");
-             break;
-           }
-           
-           gettimeofday(&tv_now, NULL);
-           
-           if (debug_mode) {
-             printf("--- %lu.%06lu ---\n", 
-                    tv_now.tv_sec, tv_now.tv_usec);
-             
-             set = gps->set;
-             for (i=0; i<sizetab(gps_handlers); i++) {
-               if (set & gps_handlers[i].set &&
-                   gps_handlers[i].handler) {
-                 set &= ~gps_handlers[i].set;
-                 gps_handlers[i].handler(gps);
-               }
-             }
-             if (set) {
-               printf("=> gps->set not decoded : 0x%x\n",
-                      set);
-             }
+         set = gps->set;
+         for (i=0; i<sizetab(gps_handlers); i++) {
+           if (set & gps_handlers[i].set &&
+               gps_handlers[i].handler) {
+             set &= ~gps_handlers[i].set;
+             gps_handlers[i].handler(gps);
            }
-           
-           if ((log_mode || get_mode) &&
-               (gps->set & LATLON_SET) &&
-               (gps->set & ALTITUDE_SET) &&
-               (gps->set & HERR_SET) &&
-               (gps->set & VERR_SET)) {
-
-             /* <time recv>
-                <longitude in °> <latitude in °> <altitude in m>
-                <distance with reference point or 0 >
-                <longitude error in m> <latitude error in m> 
-                <altitude error in m>
-                <horizontal speed in m/s> <vertical speed in m/s>
-                <horizontal speed error in m/s>
-                <vertical speed error in m/s>
-             */
-             printf("%u.%06lu-%f %10f %10f %10f %10f %10f %10f %10f %10f %10f %10f %10f\n",
-                    /* time recv */
-                    tv_now.tv_sec, tv_now.tv_usec, gps->fix.time,
-                    /* longitude in °, latitude in °, altitude in m */
-                    gps->fix.longitude, gps->fix.latitude, gps->fix.altitude,
-                    /* distance with ref point */
-                    set_mode ? earth_distance(gps->fix.latitude, gps->fix.longitude,
-                                              ref_latitude, ref_longitude) : 0.0,
-                    /* longitude error in m, latitude error in m, altitude error in m */
-                    gps->fix.epx, gps->fix.epy, gps->fix.epv,
-                    /* horizontal speed in m/s */
-                    gps->set & SPEED_SET ? gps->fix.speed : 0.0,
-                    /* vertical speed in m/s */
-                    gps->set & CLIMB_SET ? gps->fix.climb : 0.0,
-                    /* horizontal speed error in m/s */
-                    gps->set & SPEEDERR_SET ? gps->fix.eps : 0.0,
-                    /* vertical speed error in m/s */
-                    gps->set & CLIMBERR_SET ? gps->fix.epc : 0.0);
-             fflush(stdout);
-             if (get_mode)
-               get_mode_done = 1;
-           }
-         } while (!get_mode_done);
-           
-         gps_close(gps);
-
-       } while (!get_mode_done);
+         }
+         if (set) {
+           printf("=> gps->set not decoded : 0x%x\n",
+                  set);
+         }
+       }
        
-       return 0;
+       if ((log_mode || get_mode) &&
+           (gps->set & LATLON_SET) &&
+           (gps->set & ALTITUDE_SET) &&
+           (gps->set & HERR_SET) &&
+           (gps->set & VERR_SET)) {
+         
+         /* <time recv>
+            <longitude in °> <latitude in °> <altitude in m>
+            <distance with reference point or 0 >
+            <longitude error in m> <latitude error in m> 
+            <altitude error in m>
+            <horizontal speed in m/s> <vertical speed in m/s>
+            <horizontal speed error in m/s>
+            <vertical speed error in m/s>
+         */
+         printf("%u.%06lu-%f %10f %10f %10f %10f %10f %10f %10f %10f %10f %10f %10f\n",
+                /* time recv */
+                tv_now.tv_sec, tv_now.tv_usec, gps->fix.time,
+                /* longitude in °, latitude in °, altitude in m */
+                gps->fix.longitude, gps->fix.latitude, gps->fix.altitude,
+                /* distance with ref point */
+                set_mode ? earth_distance(gps->fix.latitude, gps->fix.longitude,
+                                          ref_latitude, ref_longitude) : 0.0,
+                /* longitude error in m, latitude error in m, altitude error in m */
+                gps->fix.epx, gps->fix.epy, gps->fix.epv,
+                /* horizontal speed in m/s */
+                gps->set & SPEED_SET ? gps->fix.speed : 0.0,
+                /* vertical speed in m/s */
+                gps->set & CLIMB_SET ? gps->fix.climb : 0.0,
+                /* horizontal speed error in m/s */
+                gps->set & SPEEDERR_SET ? gps->fix.eps : 0.0,
+                /* vertical speed error in m/s */
+                gps->set & CLIMBERR_SET ? gps->fix.epc : 0.0);
+         fflush(stdout);
+         if (get_mode)
+           get_mode_done = 1;
+       }
+      } while (!get_mode_done);
+      
+      gps_close(gps);
+      
+    } while (!get_mode_done);
+    
+    return 0;
 }