From 6e23e477012f9103c62754ea347395afe8e7c580 Mon Sep 17 00:00:00 2001 From: Rob Norris Date: Sat, 23 Apr 2016 12:19:27 +0100 Subject: [PATCH] Trap some errors reported by gpsbabel --- src/datasource_gps.c | 20 ++++++++++++++++++++ src/vikgpslayer.c | 22 ++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/src/datasource_gps.c b/src/datasource_gps.c index e051f133..7fd7ff90 100644 --- a/src/datasource_gps.c +++ b/src/datasource_gps.c @@ -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; diff --git a/src/vikgpslayer.c b/src/vikgpslayer.c index f30e1a7f..98ad9e1e 100644 --- a/src/vikgpslayer.c +++ b/src/vikgpslayer.c @@ -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); -- 2.39.5