125 lines
4.6 KiB
C
125 lines
4.6 KiB
C
/* ----------------------------------------------------------------------------
|
|
* 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 */
|