USB CDC library for MBED on STM32

Dependents:   PushToGo-F429

Committer:
caoyuan9642
Date:
Sun Sep 09 19:03:18 2018 +0000
Revision:
0:7cf972f622d3
usb

Who changed what in which revision?

UserRevisionLine numberNew contents of line
caoyuan9642 0:7cf972f622d3 1 /**
caoyuan9642 0:7cf972f622d3 2 ******************************************************************************
caoyuan9642 0:7cf972f622d3 3 * @file usbd_cdc.h
caoyuan9642 0:7cf972f622d3 4 * @author MCD Application Team
caoyuan9642 0:7cf972f622d3 5 * @version V2.4.2
caoyuan9642 0:7cf972f622d3 6 * @date 11-December-2015
caoyuan9642 0:7cf972f622d3 7 * @brief header file for the usbd_cdc.c file.
caoyuan9642 0:7cf972f622d3 8 ******************************************************************************
caoyuan9642 0:7cf972f622d3 9 * @attention
caoyuan9642 0:7cf972f622d3 10 *
caoyuan9642 0:7cf972f622d3 11 * <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2>
caoyuan9642 0:7cf972f622d3 12 *
caoyuan9642 0:7cf972f622d3 13 * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
caoyuan9642 0:7cf972f622d3 14 * You may not use this file except in compliance with the License.
caoyuan9642 0:7cf972f622d3 15 * You may obtain a copy of the License at:
caoyuan9642 0:7cf972f622d3 16 *
caoyuan9642 0:7cf972f622d3 17 * http://www.st.com/software_license_agreement_liberty_v2
caoyuan9642 0:7cf972f622d3 18 *
caoyuan9642 0:7cf972f622d3 19 * Unless required by applicable law or agreed to in writing, software
caoyuan9642 0:7cf972f622d3 20 * distributed under the License is distributed on an "AS IS" BASIS,
caoyuan9642 0:7cf972f622d3 21 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
caoyuan9642 0:7cf972f622d3 22 * See the License for the specific language governing permissions and
caoyuan9642 0:7cf972f622d3 23 * limitations under the License.
caoyuan9642 0:7cf972f622d3 24 *
caoyuan9642 0:7cf972f622d3 25 ******************************************************************************
caoyuan9642 0:7cf972f622d3 26 */
caoyuan9642 0:7cf972f622d3 27
caoyuan9642 0:7cf972f622d3 28 /* Define to prevent recursive inclusion -------------------------------------*/
caoyuan9642 0:7cf972f622d3 29 #ifndef __USB_CDC_H
caoyuan9642 0:7cf972f622d3 30 #define __USB_CDC_H
caoyuan9642 0:7cf972f622d3 31
caoyuan9642 0:7cf972f622d3 32 #ifdef __cplusplus
caoyuan9642 0:7cf972f622d3 33 extern "C" {
caoyuan9642 0:7cf972f622d3 34 #endif
caoyuan9642 0:7cf972f622d3 35
caoyuan9642 0:7cf972f622d3 36 /* Includes ------------------------------------------------------------------*/
caoyuan9642 0:7cf972f622d3 37 #include "usbd_ioreq.h"
caoyuan9642 0:7cf972f622d3 38 #include "usbd_desc.h"
caoyuan9642 0:7cf972f622d3 39
caoyuan9642 0:7cf972f622d3 40 /** @addtogroup STM32_USB_DEVICE_LIBRARY
caoyuan9642 0:7cf972f622d3 41 * @{
caoyuan9642 0:7cf972f622d3 42 */
caoyuan9642 0:7cf972f622d3 43
caoyuan9642 0:7cf972f622d3 44 /** @defgroup usbd_cdc
caoyuan9642 0:7cf972f622d3 45 * @brief This file is the Header file for usbd_cdc.c
caoyuan9642 0:7cf972f622d3 46 * @{
caoyuan9642 0:7cf972f622d3 47 */
caoyuan9642 0:7cf972f622d3 48
caoyuan9642 0:7cf972f622d3 49
caoyuan9642 0:7cf972f622d3 50 /** @defgroup usbd_cdc_Exported_Defines
caoyuan9642 0:7cf972f622d3 51 * @{
caoyuan9642 0:7cf972f622d3 52 */
caoyuan9642 0:7cf972f622d3 53 #define CDC_IN_EP 0x81 /* EP1 for data IN */
caoyuan9642 0:7cf972f622d3 54 #define CDC_OUT_EP 0x01 /* EP1 for data OUT */
caoyuan9642 0:7cf972f622d3 55 #define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
caoyuan9642 0:7cf972f622d3 56
caoyuan9642 0:7cf972f622d3 57 /* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrates and performance. */
caoyuan9642 0:7cf972f622d3 58 #define CDC_DATA_HS_MAX_PACKET_SIZE 512 /* Endpoint IN & OUT Packet size */
caoyuan9642 0:7cf972f622d3 59 #define CDC_DATA_FS_MAX_PACKET_SIZE 64 /* Endpoint IN & OUT Packet size */
caoyuan9642 0:7cf972f622d3 60 #define CDC_CMD_PACKET_SIZE 8 /* Control Endpoint Packet size */
caoyuan9642 0:7cf972f622d3 61
caoyuan9642 0:7cf972f622d3 62 #define USB_CDC_CONFIG_DESC_SIZ 75
caoyuan9642 0:7cf972f622d3 63 #define CDC_DATA_HS_IN_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE
caoyuan9642 0:7cf972f622d3 64 #define CDC_DATA_HS_OUT_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE
caoyuan9642 0:7cf972f622d3 65
caoyuan9642 0:7cf972f622d3 66 #define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
caoyuan9642 0:7cf972f622d3 67 #define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
caoyuan9642 0:7cf972f622d3 68
caoyuan9642 0:7cf972f622d3 69 /*---------------------------------------------------------------------*/
caoyuan9642 0:7cf972f622d3 70 /* CDC definitions */
caoyuan9642 0:7cf972f622d3 71 /*---------------------------------------------------------------------*/
caoyuan9642 0:7cf972f622d3 72 #define CDC_SEND_ENCAPSULATED_COMMAND 0x00
caoyuan9642 0:7cf972f622d3 73 #define CDC_GET_ENCAPSULATED_RESPONSE 0x01
caoyuan9642 0:7cf972f622d3 74 #define CDC_SET_COMM_FEATURE 0x02
caoyuan9642 0:7cf972f622d3 75 #define CDC_GET_COMM_FEATURE 0x03
caoyuan9642 0:7cf972f622d3 76 #define CDC_CLEAR_COMM_FEATURE 0x04
caoyuan9642 0:7cf972f622d3 77 #define CDC_SET_LINE_CODING 0x20
caoyuan9642 0:7cf972f622d3 78 #define CDC_GET_LINE_CODING 0x21
caoyuan9642 0:7cf972f622d3 79 #define CDC_SET_CONTROL_LINE_STATE 0x22
caoyuan9642 0:7cf972f622d3 80 #define CDC_SEND_BREAK 0x23
caoyuan9642 0:7cf972f622d3 81
caoyuan9642 0:7cf972f622d3 82 /**
caoyuan9642 0:7cf972f622d3 83 * @}
caoyuan9642 0:7cf972f622d3 84 */
caoyuan9642 0:7cf972f622d3 85
caoyuan9642 0:7cf972f622d3 86
caoyuan9642 0:7cf972f622d3 87 /** @defgroup USBD_CORE_Exported_TypesDefinitions
caoyuan9642 0:7cf972f622d3 88 * @{
caoyuan9642 0:7cf972f622d3 89 */
caoyuan9642 0:7cf972f622d3 90
caoyuan9642 0:7cf972f622d3 91 /**
caoyuan9642 0:7cf972f622d3 92 * @}
caoyuan9642 0:7cf972f622d3 93 */
caoyuan9642 0:7cf972f622d3 94 typedef struct
caoyuan9642 0:7cf972f622d3 95 {
caoyuan9642 0:7cf972f622d3 96 uint32_t bitrate;
caoyuan9642 0:7cf972f622d3 97 uint8_t format;
caoyuan9642 0:7cf972f622d3 98 uint8_t paritytype;
caoyuan9642 0:7cf972f622d3 99 uint8_t datatype;
caoyuan9642 0:7cf972f622d3 100 }USBD_CDC_LineCodingTypeDef;
caoyuan9642 0:7cf972f622d3 101
caoyuan9642 0:7cf972f622d3 102 typedef struct _USBD_CDC_Itf
caoyuan9642 0:7cf972f622d3 103 {
caoyuan9642 0:7cf972f622d3 104 int8_t (* Init) (void);
caoyuan9642 0:7cf972f622d3 105 int8_t (* DeInit) (void);
caoyuan9642 0:7cf972f622d3 106 int8_t (* Control) (uint8_t, uint8_t * , uint16_t);
caoyuan9642 0:7cf972f622d3 107 int8_t (* Received) (uint8_t *, uint32_t *);
caoyuan9642 0:7cf972f622d3 108 int8_t (* Transmitted) (uint8_t *, uint32_t *);
caoyuan9642 0:7cf972f622d3 109
caoyuan9642 0:7cf972f622d3 110 }USBD_CDC_ItfTypeDef;
caoyuan9642 0:7cf972f622d3 111
caoyuan9642 0:7cf972f622d3 112
caoyuan9642 0:7cf972f622d3 113 typedef struct
caoyuan9642 0:7cf972f622d3 114 {
caoyuan9642 0:7cf972f622d3 115 uint32_t data[CDC_DATA_HS_MAX_PACKET_SIZE/4]; /* Force 32bits alignment */
caoyuan9642 0:7cf972f622d3 116 uint8_t CmdOpCode;
caoyuan9642 0:7cf972f622d3 117 uint8_t CmdLength;
caoyuan9642 0:7cf972f622d3 118 uint8_t *RxBuffer;
caoyuan9642 0:7cf972f622d3 119 uint8_t *TxBuffer;
caoyuan9642 0:7cf972f622d3 120 uint32_t RxLength;
caoyuan9642 0:7cf972f622d3 121 uint32_t TxLength;
caoyuan9642 0:7cf972f622d3 122
caoyuan9642 0:7cf972f622d3 123 __IO uint32_t TxState;
caoyuan9642 0:7cf972f622d3 124 __IO uint32_t RxState;
caoyuan9642 0:7cf972f622d3 125 }
caoyuan9642 0:7cf972f622d3 126 USBD_CDC_HandleTypeDef;
caoyuan9642 0:7cf972f622d3 127
caoyuan9642 0:7cf972f622d3 128
caoyuan9642 0:7cf972f622d3 129
caoyuan9642 0:7cf972f622d3 130 /** @defgroup USBD_CORE_Exported_Macros
caoyuan9642 0:7cf972f622d3 131 * @{
caoyuan9642 0:7cf972f622d3 132 */
caoyuan9642 0:7cf972f622d3 133
caoyuan9642 0:7cf972f622d3 134 /**
caoyuan9642 0:7cf972f622d3 135 * @}
caoyuan9642 0:7cf972f622d3 136 */
caoyuan9642 0:7cf972f622d3 137
caoyuan9642 0:7cf972f622d3 138 /** @defgroup USBD_CORE_Exported_Variables
caoyuan9642 0:7cf972f622d3 139 * @{
caoyuan9642 0:7cf972f622d3 140 */
caoyuan9642 0:7cf972f622d3 141
caoyuan9642 0:7cf972f622d3 142 extern USBD_ClassTypeDef USBD_CDC;
caoyuan9642 0:7cf972f622d3 143 #define USBD_CDC_CLASS &USBD_CDC
caoyuan9642 0:7cf972f622d3 144 /**
caoyuan9642 0:7cf972f622d3 145 * @}
caoyuan9642 0:7cf972f622d3 146 */
caoyuan9642 0:7cf972f622d3 147
caoyuan9642 0:7cf972f622d3 148 /** @defgroup USB_CORE_Exported_Functions
caoyuan9642 0:7cf972f622d3 149 * @{
caoyuan9642 0:7cf972f622d3 150 */
caoyuan9642 0:7cf972f622d3 151 uint8_t USBD_CDC_RegisterInterface (USBD_HandleTypeDef *pdev,
caoyuan9642 0:7cf972f622d3 152 USBD_CDC_ItfTypeDef *fops);
caoyuan9642 0:7cf972f622d3 153
caoyuan9642 0:7cf972f622d3 154 uint8_t USBD_CDC_SetTxBuffer (USBD_HandleTypeDef *pdev,
caoyuan9642 0:7cf972f622d3 155 uint8_t *pbuff,
caoyuan9642 0:7cf972f622d3 156 uint16_t length);
caoyuan9642 0:7cf972f622d3 157
caoyuan9642 0:7cf972f622d3 158 uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev,
caoyuan9642 0:7cf972f622d3 159 uint8_t *pbuff);
caoyuan9642 0:7cf972f622d3 160
caoyuan9642 0:7cf972f622d3 161 uint8_t USBD_CDC_ReceivePacket (USBD_HandleTypeDef *pdev);
caoyuan9642 0:7cf972f622d3 162
caoyuan9642 0:7cf972f622d3 163 uint8_t USBD_CDC_TransmitPacket (USBD_HandleTypeDef *pdev);
caoyuan9642 0:7cf972f622d3 164 /**
caoyuan9642 0:7cf972f622d3 165 * @}
caoyuan9642 0:7cf972f622d3 166 */
caoyuan9642 0:7cf972f622d3 167
caoyuan9642 0:7cf972f622d3 168 #ifdef __cplusplus
caoyuan9642 0:7cf972f622d3 169 }
caoyuan9642 0:7cf972f622d3 170 #endif
caoyuan9642 0:7cf972f622d3 171
caoyuan9642 0:7cf972f622d3 172 #endif /* __USB_CDC_H */
caoyuan9642 0:7cf972f622d3 173 /**
caoyuan9642 0:7cf972f622d3 174 * @}
caoyuan9642 0:7cf972f622d3 175 */
caoyuan9642 0:7cf972f622d3 176
caoyuan9642 0:7cf972f622d3 177 /**
caoyuan9642 0:7cf972f622d3 178 * @}
caoyuan9642 0:7cf972f622d3 179 */
caoyuan9642 0:7cf972f622d3 180
caoyuan9642 0:7cf972f622d3 181 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
caoyuan9642 0:7cf972f622d3 182