/* ---------------------------------------------------------------------------- * Copyright (c) Huawei Technologies Co., Ltd. 2013-2021. All rights reserved. * Description: Usb Init Head File * Author: Huawei LiteOS Team * Create: 2013-01-01 * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * 1. Redistributions of source code must retain the above copyright notice, this list of * conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, this list * of conditions and the following disclaimer in the documentation and/or other materials * provided with the distribution. * 3. Neither the name of the copyright holder nor the names of its contributors may be used * to endorse or promote products derived from this software without specific prior written * permission. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * --------------------------------------------------------------------------- */ #ifndef _USB_INIT_H #define _USB_INIT_H #include "stdint.h" #include "stdbool.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* Controller type */ typedef enum controller_type { HOST = 0, DEVICE } controller_type; /* device type */ typedef enum device_type { DEV_START, /* start value of the device type */ DEV_SERIAL, /* used for serial */ DEV_ETHERNET, /* used for rndis */ DEV_SER_ETH, /* used for serial and rndis */ DEV_DFU, /* used for DFU */ DEV_MASS, /* used for mass */ DEV_UVC, /* used for USB video */ DEV_UAC, /* used for USB audio */ DEV_CAMERA, /* used for USB camera */ DEV_HID, /* used for USB hid */ DEV_END /* end value of the device type */ } device_type; struct device_string { const char *str; /* string descriptor */ uint32_t len; /* String descriptor length */ }; struct device_id { uint16_t vendor_id; /* Vendor id */ uint16_t product_id; /* Product id */ uint16_t release_num; /* Device release number */ }; /* * Function:usb_init * Description: initialize the controller of usb, attach the usb protocol. * Input: ctype ------ the type of usb's controller, the legal value is one of 'controller_type'; * if it is HOST , 'dtype' can be any value of 'device_type'; * if it is DEVICE, 'dtype' must be one of 'device_type' that user needs. * dtype ------ the type of device, the legal value is one of 'device_type'; * if 'ctype' is DEVICE, it is determined by the use requirements. * Output: None * Return: success is LOS_OK, failure is LOS_NOK. */ uint32_t usb_init(controller_type ctype, device_type dtype); /* * Function:usb_deinit * Description: uninitialize the controller of usb, detach the usb protocol. * Input: None * Output: None * Return: success is LOS_OK, failure is LOS_NOK. */ uint32_t usb_deinit(void); /* * Function:usb_is_devicemode * Description: check usb device mode. * Input: None * Output: None * Return: true is usb device mode, false is not linked or not usb device mode. */ bool usb_is_devicemode(void); /* * Function:usbd_set_device_info * Description: Set device VID, PID and string descriptor information. * Input:dtype ------ the type of device, the legal value is one of 'device_type'; * str_manufacturer ------ manufacturer string information. * str_product ------ product string information. * str_serial_number ------ serial number string information. * dev_id ------ VID, PID and device release number. * Output: None * Return: success is LOS_OK, failure is LOS_NOK. */ uint32_t usbd_set_device_info(device_type dtype, const struct device_string *str_manufacturer, const struct device_string *str_product, const struct device_string *str_serial_number, struct device_id dev_id); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* _USB_INIT_H */