MCU driver/HAL for the Picocell Gateway concentrator board. The firmware implements either a USB CDC protocol or a UART protocol to bridge commands coming from host to the SX1308 SPI interface.

Committer:
dgabino
Date:
Wed Apr 11 14:42:47 2018 +0000
Revision:
0:c76361bd82e8
Initial commit

Who changed what in which revision?

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