usb_gadget: apply next HAL architecture (hal api + backend) resf/for/tizen
authorINSUN PYO <insun.pyo@samsung.com>
Tue, 19 Jan 2021 05:35:05 +0000 (14:35 +0900)
committerINSUN PYO <insun.pyo@samsung.com>
Tue, 19 Jan 2021 05:35:05 +0000 (14:35 +0900)
Change-Id: I839eb4fd883facb066ab5730fda063f6032b3c0a

hw/usb_gadget/CMakeLists.txt
hw/usb_gadget/usb_gadget.c

index 039baa4eb3343c1874737267942dce78c76c924d..8a2b3291dbf4bc220803454a2785515302e77e45 100644 (file)
@@ -1,12 +1,14 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
-PROJECT(usb_gadget C)
+PROJECT(hal-backend-device-usb-gadget C)
 
 SET(PREFIX ${CMAKE_INSTALL_PREFIX})
 
+INCLUDE_DIRECTORIES(../common)
+
 INCLUDE(FindPkgConfig)
-pkg_check_modules(usb_gadget_pkgs REQUIRED hwcommon)
+pkg_check_modules(hal-backend-device-usb-gadget_pkgs REQUIRED dlog hwcommon)
 
-FOREACH(flag ${usb_gadget_pkgs_CFLAGS})
+FOREACH(flag ${hal-backend-device-usb-gadget_pkgs_CFLAGS})
        SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
 ENDFOREACH(flag)
 
@@ -14,6 +16,5 @@ SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden")
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS}")
 
 ADD_LIBRARY(${PROJECT_NAME} MODULE usb_gadget.c)
-TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${usb_gadget_pkgs_LDFLAGS})
-SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES PREFIX "")
-INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${LIB_INSTALL_DIR}/hw COMPONENT RuntimeLibraries)
+TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${hal-backend-device-usb-gadget_pkgs_LDFLAGS})
+INSTALL(TARGETS ${PROJECT_NAME} DESTINATION /hal/lib COMPONENT RuntimeLibraries)
index 2bf9d96ff5bae5b4f4ba777c69ef2d656719b9d3..f5abd72c26a9a1726c55b9e66125fad8b58015e0 100644 (file)
  */
 
 #include <hw/usb_gadget.h>
+#include <hal/hal-common-interface.h>
+#include <hal/device/hal-usb_gadget-interface.h>
 
-HARDWARE_MODULE_STRUCTURE = {
-       .magic = HARDWARE_INFO_TAG,
-       .hal_version = HARDWARE_INFO_VERSION,
-       .device_version = USB_GADGET_DEVICE_VERSION,
-       .id = USB_GADGET_DEVICE_ID,
-       .name = "simple_translator",
-       .open = simple_translator_open,
-       .close = simple_translator_close,
+#include "common.h"
+
+static int usb_gadget_init(void **data)
+{
+       hal_backend_usb_gadget_funcs *usb_gadget_funcs;
+
+       // TODO. Need reimplement ///////////////////////////////////////////
+       struct hw_info info;
+       struct hw_common *common;
+       struct usb_gadget_translator *gadget_translator;
+
+       // from deviced
+       if (simple_translator_open(&info, NULL, &common)) {
+               _E("No USB gadget translator.");
+               return -1;
+       }
+
+       gadget_translator = container_of(common, struct usb_gadget_translator, common);
+       if (!gadget_translator->id_to_gadget || !gadget_translator->cleanup_gadget) {
+               _E("Invalid USB gadget translator.");
+
+               if (gadget_translator->common.info)
+                       gadget_translator->common.info->close(&gadget_translator->common);
+
+               return -1;
+       }
+       //////////////////////////////////////////////////////////////////////
+
+       usb_gadget_funcs = calloc(1, sizeof(hal_backend_usb_gadget_funcs));
+       if (!usb_gadget_funcs)
+               return -ENOMEM;
+
+       usb_gadget_funcs->id_to_gadget = gadget_translator->id_to_gadget;
+       usb_gadget_funcs->cleanup_gadget = gadget_translator->cleanup_gadget;
+       usb_gadget_funcs->enable = NULL; // TODO
+       usb_gadget_funcs->disable = NULL; // TODO
+       usb_gadget_funcs->reconfigure_gadget = NULL; // TORO
+
+       *data = (void *)usb_gadget_funcs;
+
+       return 0;
+}
+
+static int usb_gadget_exit(void *data)
+{
+       // TODO free gadget
+
+       if (data)
+               free(data);
+
+       return 0;
+}
+
+hal_backend EXPORT hal_backend_device_usb_gadget_data = {
+       .name = "usb_gadget",
+       .vendor = "RPI",
+       .abi_version = HAL_ABI_VERSION_TIZEN_6_5,
+       .init = usb_gadget_init,
+       .exit = usb_gadget_exit,
 };