1/* ---------------------------------------------------------------------------- 2 * Copyright (c) Huawei Technologies Co., Ltd. 2021-2021. All rights reserved. 3 * Description: LiteOS USB Driver Config Data Stream HeadFile 4 * Author: Yannik Li 5 * Create: 2021-02-21 6 * Redistribution and use in source and binary forms, with or without modification, 7 * are permitted provided that the following conditions are met: 8 * 1. Redistributions of source code must retain the above copyright notice, this list of 9 * conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 11 * of conditions and the following disclaimer in the documentation and/or other materials 12 * provided with the distribution. 13 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 14 * to endorse or promote products derived from this software without specific prior written 15 * permission. 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 18 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * --------------------------------------------------------------------------- */ 28/* ---------------------------------------------------------------------------- 29 * Notice of Export Control Law 30 * =============================================== 31 * Huawei LiteOS may be subject to applicable export control laws and regulations, which might 32 * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. 33 * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such 34 * applicable export control laws and regulations. 35 * --------------------------------------------------------------------------- */ 36 37#ifndef LITEOS_USB_HANDLE_H 38#define LITEOS_USB_HANDLE_H 39 40/************************************************************************************ 41 * Included Files 42 ************************************************************************************/ 43 44#include "gadget/usbdev.h" 45#include "usb_obj.h" 46/************************************************************************************ 47 * Public Functions 48 ************************************************************************************/ 49 50#ifdef __cplusplus 51#if __cplusplus 52//extern "C" { 53#endif /* __cplusplus */ 54#endif /* __cplusplus */ 55 56struct usb_handle { 57 char *name; 58 int fd; 59 struct list_head entry; 60 struct UsbHandleOps *ops; 61 struct usb_obj *obj; 62 void *priv; 63}; 64 65struct UsbHandleOps { 66 int (*open)(struct usb_handle *handle); 67 int (*close)(struct usb_handle *handle); 68 int (*read)(struct usb_handle *handle, void *buffer, size_t len); 69 int (*write)(struct usb_handle *handle, void *buffer, size_t len); 70 int (*ioctl)(struct usb_handle *handle, int cmd, void *arg); 71 void *(*mmap)(struct usb_handle *handle, uint32_t size); 72 int (*poll)(struct usb_handle *handle, int timeout); 73}; 74 75extern int register_handle(char *devName, struct UsbHandleOps *ops, void *priv, struct usb_obj *obj); 76extern int unregister_handle(const char *devName); 77extern int alloc_fd_for_handle(void); 78extern int handle_open(const char *name); 79extern int handle_close(int fd); 80extern int handle_read(int fd, void *buffer, size_t len); 81extern int handle_write(int fd, void *buffer, size_t len); 82extern int handle_ioctl(int fd, int cmd, void *arg); 83extern void *handle_mmap(int fd, uint32_t size); 84extern int handle_poll(int fd, int timeout); 85 86#ifdef __cplusplus 87#if __cplusplus 88//} 89#endif /* __cplusplus */ 90#endif /* __cplusplus */ 91 92#endif /* LITEOS_USB_OBJ_H */ 93