From: INSUN PYO Date: Thu, 28 Jan 2021 11:17:44 +0000 (+0900) Subject: usb_gadget: get board serial and set it to usb serial X-Git-Tag: submit/tizen/20210201.022214^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7d5fdd7e3a11941cb61e8c901109cb060c60a34c;p=platform%2Fhal%2Fapi%2Fdevice.git usb_gadget: get board serial and set it to usb serial --------------------------------------------------- $ sdb devices List of devices attached 530MWC2R10400764 device artik --------------------------------------------------- Change-Id: I73bd104585dc04407c9ab7d19bea9a7e3cd75f98 --- diff --git a/include/backend/hal-usb_gadget-interface.h b/include/backend/hal-usb_gadget-interface.h index 5d95f2e..27e9830 100644 --- a/include/backend/hal-usb_gadget-interface.h +++ b/include/backend/hal-usb_gadget-interface.h @@ -116,7 +116,9 @@ struct usb_gadget_id { ///////////////////////////////////////////////////////////////////////////////////////// typedef struct _hal_backend_usb_gadget_funcs { - int (*id_to_gadget)(struct usb_gadget_id *gadget_id, struct usb_gadget **gadget); + char *board_serial; + + int (*id_to_gadget)(struct usb_gadget_id *gadget_id, char *serial, struct usb_gadget **gadget); void (*cleanup_gadget)(struct usb_gadget *gadget); int (*enable)(void); diff --git a/src/usb_gadget.c b/src/usb_gadget.c index 3b0262d..b07af00 100644 --- a/src/usb_gadget.c +++ b/src/usb_gadget.c @@ -14,26 +14,61 @@ * limitations under the License. */ +#include +#include #include #include "common.h" +#include "hal-board.h" #include "hal-usb_gadget-interface.h" hal_backend_usb_gadget_funcs *g_usb_gadget_funcs; -static int usb_gadget_is_valid(void) +static int usb_gadget_is_valid(hal_backend_usb_gadget_funcs *usb_gadget_funcs) { - if(g_usb_gadget_funcs && - g_usb_gadget_funcs->id_to_gadget && - g_usb_gadget_funcs->cleanup_gadget && - g_usb_gadget_funcs->enable && - g_usb_gadget_funcs->disable && - g_usb_gadget_funcs->reconfigure_gadget) + if(usb_gadget_funcs && + usb_gadget_funcs->board_serial && + usb_gadget_funcs->id_to_gadget && + usb_gadget_funcs->cleanup_gadget && + usb_gadget_funcs->enable && + usb_gadget_funcs->disable && + usb_gadget_funcs->reconfigure_gadget) return 1; return 0; } +static int get_board_serial(hal_backend_usb_gadget_funcs *usb_gadget_funcs) +{ + char *board_serial = NULL; + + if (!usb_gadget_funcs) + return -EINVAL; + + if (hal_device_board_get_backend()) { + _E("Failed to get board backend for USB"); + goto no_board; + } + + if (hal_device_board_get_device_serial(&board_serial)) { + _E("Failed to get board serial for USB"); + goto no_serial; + } + +no_serial: + /* hal_device_board_put_backend(); // Hack. continue to use board hal */ + +no_board: + if (!board_serial) + board_serial = strdup(DEFAULT_SERIAL); + + usb_gadget_funcs->board_serial = board_serial; + if (!usb_gadget_funcs->board_serial) + return -ENOMEM; + + return 0; +} + int hal_device_usb_gadget_get_backend(void) { int ret; @@ -47,7 +82,9 @@ int hal_device_usb_gadget_get_backend(void) return -EINVAL; } - if(!usb_gadget_is_valid()) { + (void) get_board_serial(g_usb_gadget_funcs); + + if(!usb_gadget_is_valid(g_usb_gadget_funcs)) { _E("USB gadget backend is not valid"); hal_common_put_backend(HAL_MODULE_DEVICE_USB_GADGET, (void *)g_usb_gadget_funcs); return -ENODEV; @@ -61,10 +98,12 @@ int hal_device_usb_gadget_put_backend(void) if (!g_usb_gadget_funcs) return 0; - if(!usb_gadget_is_valid()) + if(!usb_gadget_is_valid(g_usb_gadget_funcs)) return -ENODEV; hal_common_put_backend(HAL_MODULE_DEVICE_USB_GADGET, (void *)g_usb_gadget_funcs); + + free(g_usb_gadget_funcs->board_serial); g_usb_gadget_funcs = NULL; return 0; @@ -72,7 +111,7 @@ int hal_device_usb_gadget_put_backend(void) int hal_device_usb_gadget_enable(void) { - if(!usb_gadget_is_valid()) + if(!usb_gadget_is_valid(g_usb_gadget_funcs)) return -ENODEV; return g_usb_gadget_funcs->enable(); @@ -80,7 +119,7 @@ int hal_device_usb_gadget_enable(void) int hal_device_usb_gadget_disable(void) { - if(!usb_gadget_is_valid()) + if(!usb_gadget_is_valid(g_usb_gadget_funcs)) return -ENODEV; return g_usb_gadget_funcs->disable(); @@ -92,13 +131,13 @@ int hal_device_usb_gadget_change_mode(unsigned mode) struct usb_gadget *gadget; struct usb_gadget_id gadget_id; - if(!usb_gadget_is_valid()) + if(!usb_gadget_is_valid(g_usb_gadget_funcs)) return -ENODEV; memset(&gadget_id, 0, sizeof(gadget_id)); gadget_id.function_mask = mode; - ret = g_usb_gadget_funcs->id_to_gadget(&gadget_id, &gadget); + ret = g_usb_gadget_funcs->id_to_gadget(&gadget_id, g_usb_gadget_funcs->board_serial, &gadget); if (ret) { _E("Unable to translate USB mode id into gadget: %d", ret); return ret;