#ifdef WITH_GPSBT
#include <gpsbt.h>
-static gpsbt_t ctx = {0};
+static gpsbt_t ctx;
#endif
static gboolean gps_channel_cb_error(GIOChannel *src, GIOCondition condition, gpointer data);
return FALSE;
}
e=errno;
-g_debug("GPS: Error %d", e);
+g_debug("GPS: Error %d (%s)", e, strerror(e));
/* The socket is non blocking so handle it */
if (r != 0) {
#endif
return FALSE;
break;
+ case ECONNREFUSED:
+ g_printerr("*** Connection refused.\n");
+ gps_disconnect(gps);
+ return FALSE;
+ break;
default:
/* Connection failed. Disconnect and try again later. */
g_printerr("### Connect failed, retrying... %d %d\n", e, r);
g_assert(gps);
if (g_random_double()<0.5) {
- slat=g_random_double_range(-0.0003, 0.0003);
- slon=g_random_double_range(-0.0003, 0.0003);
+ slat=g_random_double_range(-0.0008, 0.0008);
+ slon=g_random_double_range(-0.0008, 0.0008);
}
plat=gps->data.lat;
plon=gps->data.lon;
}
#ifdef WITH_GPSBT
if (gps->io.type==GPS_IO_GPSD) {
- gint r;
- gchar ebuf[128];
- r=gpsbt_start(NULL, 0, 0, 0, ebuf, 128, 0, &ctx);
- if (r!=0) {
- g_warning("Failed to start gpsd");
+ gchar errbuf[255];
+
+ /* Force correct gpsd binary */
+ setenv ("GPSD_PROG", "/usr/sbin/gpsd", 1);
+
+ memset(&ctx, 0, sizeof(ctx))
+ memset(&errbuf, 0, sizeof(errbuf))
+ errno=0;
+
+ if (gpsbt_start(NULL, 0, 0, 0, errbuf, sizeof(errbuf), 0, &ctx)!=0)
+ g_warning("Failed to start gpsd: %d (%s) %s\n", errno, strerror(errno), errbuff);
return FALSE;
} else {
- /* */
+ g_debug("Waiting for gpsd");
+ sleep(2);
+ g_debug("Done wating");
}
}
#endif