summaryrefslogtreecommitdiff
path: root/libgps_sock.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgps_sock.c')
-rw-r--r--libgps_sock.c16
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 */