]> git.street.me.uk Git - andy/viking.git/commitdiff
Trap some errors reported by gpsbabel
authorRob Norris <rw_norris@hotmail.com>
Sat, 23 Apr 2016 11:19:27 +0000 (12:19 +0100)
committerRob Norris <rw_norris@hotmail.com>
Mon, 13 Mar 2017 23:39:12 +0000 (23:39 +0000)
src/datasource_gps.c
src/vikgpslayer.c

index e051f133c69023e29f9a0ea5e25cdeaae95eeb3e..7fd7ff90ab1a63d7fae90c9edd8b2b0d9d27a44a 100644 (file)
@@ -493,6 +493,26 @@ static void datasource_gps_progress ( BabelProgressCode c, gpointer data, acq_di
       }
       g_strfreev(tokens);
     }
+    /* Capture some potential errors */
+    if (strstr(line, "[ERROR] GPS")) {
+      gchar **tokens = g_strsplit(line, "\n", 0);
+      gps_data->info = g_strdup(tokens[0]);
+      gps_data->id_info = gdk_threads_add_idle ( (GSourceFunc)show_gps_info, w );
+      g_strfreev(tokens);
+    }
+    if (strstr(line, "an't in")) {
+      gchar **tokens = g_strsplit(line, "\n", 0);
+      gps_data->info = g_strdup(tokens[0]);
+      gps_data->id_info = gdk_threads_add_idle ( (GSourceFunc)show_gps_info, w );
+      g_strfreev(tokens);
+    }
+
+    if (strstr(line, "Can't get waypoint")) {
+      gchar **tokens = g_strsplit(line, "\n", 0);
+      gps_data->info = g_strdup(tokens[0]);
+      gps_data->id_info = gdk_threads_add_idle ( (GSourceFunc)show_gps_info, w );
+      g_strfreev(tokens);
+    }
     /* tells us how many items there will be */
     if (strstr(line, "RECORD")) {
       int lsb, msb, cnt;
index f30e1a7fd2fc9b90b2712c47cfe3dc09b8f2101b..98ad9e1ed537a0ab00db153a014efbc0c8ffae2d 100644 (file)
@@ -1176,6 +1176,28 @@ static void process_line_for_gps_info ( const gchar *line, GpsSession *sess )
     g_strfreev(tokens);
   }
 
+  if (strstr(line, "[ERROR] GPS")) {
+    gchar **tokens = g_strsplit(line, "\n", 0);
+    sess->info = g_strdup(tokens[0]);
+    sess->id_info = gdk_threads_add_idle ( (GSourceFunc)show_gps_info, sess );
+    g_strfreev(tokens);
+  }
+
+  if (strstr(line, "an't in")) {
+    gchar **tokens = g_strsplit(line, "\n", 0);
+    sess->info = g_strdup(tokens[0]);
+    sess->id_info = gdk_threads_add_idle ( (GSourceFunc)show_gps_info, sess );
+    g_strfreev(tokens);
+  }
+
+  if (strstr(line, "Can't get waypoint")) {
+    gchar **tokens = g_strsplit(line, "\n", 0);
+    sess->info = g_strdup(tokens[0]);
+    sess->id_info = gdk_threads_add_idle ( (GSourceFunc)show_gps_info, sess );
+    g_strfreev(tokens);
+  }
+}
+
 static gboolean show_gps_status_working ( GpsSession *sess )
 {
   g_mutex_lock(sess->mutex);