gadget: Add gadget disable on libusbg backend
authorPawel Szewczyk <p.szewczyk@samsung.com>
Fri, 3 Jul 2015 09:58:36 +0000 (11:58 +0200)
committerPawel Szewczyk <p.szewczyk@samsung.com>
Tue, 7 Jul 2015 12:26:28 +0000 (14:26 +0200)
Change-Id: I6a42e3b11e50b365cac1af4b872ba693b0c02017
Signed-off-by: Pawel Szewczyk <p.szewczyk@samsung.com>
source/gadget/src/gadget_libusbg.c

index c2c651c..6253527 100644 (file)
@@ -155,13 +155,57 @@ static int enable_func(void *data)
        return 0;
 }
 
+static int disable_func(void *data)
+{
+       struct gt_gadget_disable_data *dt;
+
+       usbg_gadget *g;
+       usbg_udc *u;
+       int usbg_ret;
+
+       dt = (struct gt_gadget_disable_data *)data;
+
+       if (dt->gadget) {
+               g = usbg_get_gadget(backend_ctx.libusbg_state, dt->gadget);
+               if (g == NULL) {
+                       fprintf(stderr, "Gadget '%s' not found\n", dt->gadget);
+                       return -1;
+               }
+       } else if (dt->udc) {
+               u = usbg_get_udc(backend_ctx.libusbg_state, dt->udc);
+               if (u == NULL) {
+                       fprintf(stderr, "UDC '%s' not found\n", dt->udc);
+                       return -1;
+               }
+
+               g = usbg_get_udc_gadget(u);
+               if (g == NULL) {
+                       fprintf(stderr, "No gadget enabled on this UDC\n");
+                       return -1;
+               }
+       } else {
+               /*TODO disabling default gadget */
+               fprintf(stderr, "Gadget not specified\n");
+               return -1;
+       }
+
+       usbg_ret = usbg_disable_gadget(g);
+       if (usbg_ret != USBG_SUCCESS) {
+               fprintf(stderr, "Error on disable gadget: %s : %s\n",
+                       usbg_error_name(usbg_ret), usbg_strerror(usbg_ret));
+               return -1;
+       }
+
+       return 0;
+}
+
 struct gt_gadget_backend gt_gadget_backend_libusbg = {
        .create = create_func,
        .rm = rm_func,
        .get = NULL,
        .set = NULL,
        .enable = enable_func,
-       .disable = NULL,
+       .disable = disable_func,
        .gadget = NULL,
        .load = NULL,
        .save = NULL,