Subversion Repositories DashDisplay

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    usbd_cdc.h
4
  * @author  MCD Application Team
5
  * @version V2.4.1
6
  * @date    19-June-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****/