diff options
Diffstat (limited to 'libgps_sock.c')
-rw-r--r-- | libgps_sock.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/libgps_sock.c b/libgps_sock.c index 5a5b425c..ae4d45c3 100644 --- a/libgps_sock.c +++ b/libgps_sock.c @@ -565,6 +565,22 @@ int gps_sock_stream(struct gps_data_t *gpsdata, unsigned int flags, } } +int gps_sock_mainloop(struct gps_data_t *gpsdata, int timeout, + void (*hook)(struct gps_data_t *gpsdata)) +/* run a socket main loop with a specified handler */ +{ + for (;;) { + if (!gps_waiting(gpsdata, timeout)) { + return -1; + } else { + (void)gps_read(gpsdata); + (*hook)(gpsdata); + } + } + (void)gps_close(gpsdata); + return 0; +} + #endif /* SOCKET_EXPORT_ENABLE */ /* end */ |