mcu_hi3321_watch/include/driver/usb/implementation/usb_init.h
2025-05-26 20:15:20 +08:00

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 */