]> git.itanic.dy.fi Git - glucose/blobdiff - main.c
If no suitable devices are found, wait until one is found
[glucose] / main.c
diff --git a/main.c b/main.c
index a97f6fa75fed1dea3542fb1df635abeba0aa4ac5..bfa15454d4aab570bac39006bd3d88539b0f4aa4 100644 (file)
--- a/main.c
+++ b/main.c
@@ -282,6 +282,27 @@ int communicate(int fd, int uc)
        return 0;
 }
 
+int wait_for_device(int vendor, int product, int *usage_code)
+{
+       int fd;
+
+       fd = hiddev_open_by_id(vendor, product, usage_code);
+
+       if (fd > 0)
+               return fd;
+
+       trace(0,
+              "No suitable device found. Please plug in your glucose meter\n");
+       do {
+               usleep(500 * 1000);
+               fd = hiddev_open_by_id(vendor, product, usage_code);
+       } while(fd < 0);
+
+       usleep(2000 * 1000);
+
+       return fd;
+}
+
 int main(int argc, char *argv[])
 {
        int fd, usage_code;
@@ -291,7 +312,7 @@ int main(int argc, char *argv[])
        trace_level = opts.trace_level;
 
        if (opts.usbdev == NULL)
-               fd = hiddev_open_by_id(CONTOUR_USB_VENDOR_ID,
+               fd = wait_for_device(CONTOUR_USB_VENDOR_ID,
                                CONTOUR_USB_PRODUCT_ID, &usage_code);
        else
                fd = hiddev_open(opts.usbdev, &usage_code);