Add usb_client HAL API 76/83576/6 accepted/tizen/3.0/ivi/20161011.044351 accepted/tizen/3.0/mobile/20161015.033528 accepted/tizen/3.0/tv/20161016.005029 accepted/tizen/3.0/wearable/20161015.083243 accepted/tizen/common/20160920.132114 accepted/tizen/ivi/20160920.231845 accepted/tizen/mobile/20160920.231811 accepted/tizen/tv/20160920.231824 accepted/tizen/wearable/20160920.231835 submit/tizen/20160920.044232 submit/tizen_3.0_ivi/20161010.000003 submit/tizen_3.0_mobile/20161015.000003 submit/tizen_3.0_tv/20161015.000003 submit/tizen_3.0_wearable/20161015.000003
authorKrzysztof Opasiak <k.opasiak@samsung.com>
Thu, 11 Aug 2016 17:39:10 +0000 (19:39 +0200)
committerKrzysztof Opasiak <k.opasiak@samsung.com>
Mon, 5 Sep 2016 13:27:11 +0000 (15:27 +0200)
This API allows to apply abstract gadget description
received from USB gadget HAL to usb gadget subsystem in Kernel
via system infrastructure available on this particular device.

Change-Id: Ibf05b3ec7c8abfed357f886eada5864dca514051
Signed-off-by: Krzysztof Opasiak <k.opasiak@samsung.com>
hw/usb_client.h [new file with mode: 0644]

diff --git a/hw/usb_client.h b/hw/usb_client.h
new file mode 100644 (file)
index 0000000..4b4ffae
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * libdevice-node
+ *
+ * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the License);
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef __HW_USB_CLIENT_H__
+#define __HW_USB_CLIENT_H__
+
+#include <hw/common.h>
+#include <hw/usb_gadget.h>
+
+#include <stdbool.h>
+
+/**
+ * The id of this device
+ */
+#define USB_CLIENT_HARDWARE_DEVICE_ID  "usb_client"
+
+/**
+ * The version of this device
+ */
+#define USB_CLIENT_HARDWARE_DEVICE_VERSION     MAKE_VERSION(0,1)
+
+struct usb_client {
+       struct hw_common common;
+
+       int (*get_current_gadget)(struct usb_client *usb,
+                                 struct usb_gadget **gadget);
+
+       int (*reconfigure_gadget)(struct usb_client *usb,
+                                 struct usb_gadget *gadget);
+
+       bool (*is_gadget_supported)(struct usb_client *usb,
+                                 struct usb_gadget *gadget);
+
+       bool (*is_function_supported)(struct usb_client *usb,
+                                 struct usb_function *func);
+
+       int (*enable)(struct usb_client *usb);
+       int (*disable)(struct usb_client *usb);
+
+       void (*free_gadget)(struct usb_gadget *gadget);
+};
+
+#endif