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