Add usb_client HAL API
[platform/core/system/libdevice-node.git] / hw / usb_client.h
1 /*
2  * libdevice-node
3  *
4  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
5  *
6  * Licensed under the Apache License, Version 2.0 (the License);
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *     http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18
19 #ifndef __HW_USB_CLIENT_H__
20 #define __HW_USB_CLIENT_H__
21
22 #include <hw/common.h>
23 #include <hw/usb_gadget.h>
24
25 #include <stdbool.h>
26
27 /**
28  * The id of this device
29  */
30 #define USB_CLIENT_HARDWARE_DEVICE_ID   "usb_client"
31
32 /**
33  * The version of this device
34  */
35 #define USB_CLIENT_HARDWARE_DEVICE_VERSION      MAKE_VERSION(0,1)
36
37 struct usb_client {
38         struct hw_common common;
39
40         int (*get_current_gadget)(struct usb_client *usb,
41                                   struct usb_gadget **gadget);
42
43         int (*reconfigure_gadget)(struct usb_client *usb,
44                                   struct usb_gadget *gadget);
45
46         bool (*is_gadget_supported)(struct usb_client *usb,
47                                   struct usb_gadget *gadget);
48
49         bool (*is_function_supported)(struct usb_client *usb,
50                                   struct usb_function *func);
51
52         int (*enable)(struct usb_client *usb);
53         int (*disable)(struct usb_client *usb);
54
55         void (*free_gadget)(struct usb_gadget *gadget);
56 };
57
58 #endif