* viking -- GPS Data and Topo Analyzer, Explorer, and Manager
*
* Copyright (C) 2003-2005, Evan Battaglia <gtoevan@gmx.net>
+ * Copyright (C) 2006, Alex Foobarian <foobarian@gmail.com>
+ * Copyright (C) 2010, Rob Norris <rw_norris@hotmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
#include "config.h"
#endif
#include <string.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#include <glib/gstdio.h>
#include <glib/gprintf.h>
#include <glib/gi18n.h>
VIK_DATASOURCE_CREATENEWLAYER,
VIK_DATASOURCE_INPUTTYPE_NONE,
TRUE,
+ TRUE,
(VikDataSourceInitFunc) datasource_gps_init_func,
(VikDataSourceCheckExistenceFunc) NULL,
(VikDataSourceAddSetupWidgetsFunc) datasource_gps_add_setup_widgets,
#endif
if (!strcmp(proto, "Garmin")) {
device = "garmin";
- } else {
+ } else if (!strcmp(proto, "Magellan")) {
device = "magellan";
}
+ else if (!strcmp(proto, "DeLorme")) {
+ device = "delbin";
+ }
+ else {
+ device = "navilink";
+ }
*babelargs = g_strdup_printf("-D 9 -t -w -i %s", device);
/* device points to static content => no free */
#endif
if (!strcmp(proto, "Garmin")) {
device = "garmin,power_off";
- } else {
+ }
+ else if (!strcmp(proto, "NAViLink")) {
+ device = "navilink,power_off";
+ }
+ else {
return;
}
}
g_strfreev(tokens);
}
+ /* eg: "Unit:\teTrex Legend HCx Software Version 2.90\n" */
+ if (strstr(line, "Unit:")) {
+ gchar **tokens = g_strsplit(line, "\t", 0);
+ int n_tokens = 0;
+ while (tokens[n_tokens])
+ n_tokens++;
+
+ if (n_tokens > 1) {
+ set_gps_info(tokens[1], w);
+ }
+ g_strfreev(tokens);
+ }
if (strstr(line, "RECORD")) {
int lsb, msb, cnt;
w->proto_b = GTK_COMBO_BOX(gtk_combo_box_new_text ());
gtk_combo_box_append_text (w->proto_b, "Garmin");
gtk_combo_box_append_text (w->proto_b, "Magellan");
+ gtk_combo_box_append_text (w->proto_b, "DeLorme");
+ gtk_combo_box_append_text (w->proto_b, "NAViLink");
gtk_combo_box_set_active (w->proto_b, 0);
g_object_ref(w->proto_b);
#ifdef WINDOWS
gtk_combo_box_append_text (w->ser_b, "com1");
#else
- gtk_combo_box_append_text (w->ser_b, "/dev/ttyS0");
- gtk_combo_box_append_text (w->ser_b, "/dev/ttyS1");
- gtk_combo_box_append_text (w->ser_b, "/dev/ttyUSB0");
- gtk_combo_box_append_text (w->ser_b, "/dev/ttyUSB1");
+ /* Here just try to see if the device is available which gets passed onto gpsbabel
+ List USB devices first as these will generally only be present if autogenerated by udev or similar
+ User is still able to set their own free text entry */
+ if (g_access ("/dev/ttyUSB0", R_OK) == 0)
+ gtk_combo_box_append_text (w->ser_b, "/dev/ttyUSB0");
+ if (g_access ("/dev/ttyUSB1", R_OK) == 0)
+ gtk_combo_box_append_text (w->ser_b, "/dev/ttyUSB1");
+ if (g_access ("/dev/ttyS0", R_OK) == 0)
+ gtk_combo_box_append_text (w->ser_b, "/dev/ttyS0");
+ if (g_access ("/dev/ttyS1", R_OK) == 0)
+ gtk_combo_box_append_text (w->ser_b, "/dev/ttyS1");
#endif
gtk_combo_box_append_text (w->ser_b, "usb:");
gtk_combo_box_set_active (w->ser_b, 0);
g_object_ref(w->ser_b);
- w->off_request_l = gtk_label_new (_("Turn Off After Transfer\n(Garmin Only)"));
+ w->off_request_l = gtk_label_new (_("Turn Off After Transfer\n(Garmin/NAViLink Only)"));
w->off_request_b = GTK_CHECK_BUTTON ( gtk_check_button_new () );
box = GTK_TABLE(gtk_table_new(2, 3, FALSE));