diff --git a/dongle.c b/dongle.c index beb4405b524cf100c38f8fdc9ed17725b95ef794..5fb9db9f2226944670c90da81bd47e56d005dbe8 100644 --- a/dongle.c +++ b/dongle.c @@ -426,9 +426,9 @@ int get_devices_from_path(char *input_path) perror("calloc"); goto fail_dev; } - dev->usb.product = get_usb_stat(input_path, de->d_name, "product"); - dev->usb.product_id = get_usb_stat(input_path, de->d_name, "idProduct"); - dev->usb.vendor_id = get_usb_stat(input_path, de->d_name, "idVendor"); + dev->usb.product = get_usb_stat(input_path, "", "product"); + dev->usb.product_id = get_usb_stat(input_path, "", "idProduct"); + dev->usb.vendor_id = get_usb_stat(input_path, "", "idVendor"); dev->usb.if_name = name; dev->ip = get_device_ip(dev->usb.if_name); @@ -650,6 +650,15 @@ int alert(struct ubus_context *ctx, struct ubus_object *obj, goto fail; usb_path = (char *)blobmsg_data(tb[USB_PATH]); + /* FIX THROUGH BASH SCRIPT INSTEAD... */ + if (strstr(usb_path, ":")) { + printf("contained :\n"); + goto fail; + } + + printf("did not contain :\n"); + printf("%s\n", usb_path); + get_devices_from_path(usb_path); return 0; fail: @@ -676,13 +685,25 @@ fail: return UBUS_STATUS_INVALID_ARGUMENT; } +int update(struct ubus_context *ctx, struct ubus_object *obj, + struct ubus_request_data *req, const char *method, + struct blob_attr *msg) +{ + printf("lets update!\n"); + get_devices(); + tag_missing_devices(); + + return 0; +} + struct ubus_method dongle_object_methods[] = { UBUS_METHOD_NOARG("test", test), UBUS_METHOD_NOARG("list", print_list), UBUS_METHOD_NOARG("clear", clear), UBUS_METHOD("remove_device", remove_device, dev_policy), - UBUS_METHOD("alert", alert, usb_policy) -}; + UBUS_METHOD("alert", alert, usb_policy), + UBUS_METHOD_NOARG("update", update) + }; struct ubus_object_type dongle_object_type = UBUS_OBJECT_TYPE("dongle", dongle_object_methods); @@ -695,7 +716,7 @@ struct ubus_object dongle_object = { void uloop_add_get_devices(struct uloop_timeout *t) { - uloop_timeout_set(t, 5000); + uloop_timeout_set(t, 60000); uloop_timeout_add(t); }