diff options
-rw-r--r-- | binding/afm-gps-binding.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/binding/afm-gps-binding.c b/binding/afm-gps-binding.c index ffc787b..7fbd907 100644 --- a/binding/afm-gps-binding.c +++ b/binding/afm-gps-binding.c @@ -183,7 +183,7 @@ static void *data_poll(void *ptr) static int init() { const char *host, *port; - int ret; + int ret, tries = 5; location_event = afb_daemon_make_event("location"); @@ -196,6 +196,11 @@ static int init() gps_stream(&data, WATCH_ENABLE | WATCH_JSON, NULL); + // due to the gpsd.socket race condition need to loop till initial event + do { + gps_read(&data); + } while (!gps_waiting(&data, MSECS_TO_USECS(2500)) && tries--); + return pthread_create(&thread, NULL, &data_poll, NULL); } |