update usb device library to STM32CubeF0-1.11.0

This commit is contained in:
Hubert Denkmair 2019-10-26 20:59:50 +02:00 committed by fenugrec
parent 7f9a0ea331
commit f3d86a7e73
8 changed files with 2479 additions and 2322 deletions

View File

@ -1,167 +1,161 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_core.h * @file usbd_core.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.4.2 * @brief Header file for usbd_core.c file
* @date 11-December-2015 ******************************************************************************
* @brief Header file for usbd_core.c file * @attention
****************************************************************************** *
* @attention * <h2><center>&copy; Copyright (c) 2015 STMicroelectronics.
* * All rights reserved.</center></h2>
* <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2> *
* * This software component is licensed by ST under Ultimate Liberty license
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * SLA0044, the "License"; You may not use this file except in compliance with
* You may not use this file except in compliance with the License. * the License. You may obtain a copy of the License at:
* You may obtain a copy of the License at: * www.st.com/SLA0044
* *
* http://www.st.com/software_license_agreement_liberty_v2 ******************************************************************************
* */
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, /* Define to prevent recursive inclusion -------------------------------------*/
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #ifndef __USBD_CORE_H
* See the License for the specific language governing permissions and #define __USBD_CORE_H
* limitations under the License.
* #ifdef __cplusplus
****************************************************************************** extern "C" {
*/ #endif
/* Define to prevent recursive inclusion -------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#ifndef __USBD_CORE_H #include "usbd_conf.h"
#define __USBD_CORE_H #include "usbd_def.h"
#include "usbd_ioreq.h"
#ifdef __cplusplus #include "usbd_ctlreq.h"
extern "C" {
#endif /** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{
/* Includes ------------------------------------------------------------------*/ */
#include "usbd_conf.h"
#include "usbd_def.h" /** @defgroup USBD_CORE
#include "usbd_ioreq.h" * @brief This file is the Header file for usbd_core.c file
#include "usbd_ctlreq.h" * @{
*/
/** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{
*/ /** @defgroup USBD_CORE_Exported_Defines
* @{
/** @defgroup USBD_CORE */
* @brief This file is the Header file for usbd_core.c file #ifndef USBD_DEBUG_LEVEL
* @{ #define USBD_DEBUG_LEVEL 0U
*/ #endif /* USBD_DEBUG_LEVEL */
/**
* @}
/** @defgroup USBD_CORE_Exported_Defines */
* @{
*/
/** @defgroup USBD_CORE_Exported_TypesDefinitions
/** * @{
* @} */
*/
/**
/** @defgroup USBD_CORE_Exported_TypesDefinitions * @}
* @{ */
*/
/** /** @defgroup USBD_CORE_Exported_Macros
* @} * @{
*/ */
/**
* @}
/** @defgroup USBD_CORE_Exported_Macros */
* @{
*/ /** @defgroup USBD_CORE_Exported_Variables
* @{
/** */
* @} #define USBD_SOF USBD_LL_SOF
*/ /**
* @}
/** @defgroup USBD_CORE_Exported_Variables */
* @{
*/ /** @defgroup USBD_CORE_Exported_FunctionsPrototype
#define USBD_SOF USBD_LL_SOF * @{
/** */
* @} USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id);
*/ USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev);
/** @defgroup USBD_CORE_Exported_FunctionsPrototype USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev);
* @{ USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass);
*/
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id); USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass); USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup);
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata);
USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata);
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx); USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed);
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup); USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata); USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed); USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); /* USBD Low Level Driver */
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum); USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev,
/* USBD Low Level Driver */ uint8_t ep_addr,
USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev); uint8_t ep_type,
USBD_StatusTypeDef USBD_LL_DeInit (USBD_HandleTypeDef *pdev); uint16_t ep_mps);
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_LL_Stop (USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_OpenEP (USBD_HandleTypeDef *pdev, USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
uint8_t ep_addr, USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
uint8_t ep_type, USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
uint16_t ep_mps); uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr);
USBD_StatusTypeDef USBD_LL_CloseEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr); USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev,
USBD_StatusTypeDef USBD_LL_FlushEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr); uint8_t ep_addr,
USBD_StatusTypeDef USBD_LL_StallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr); uint8_t *pbuf,
USBD_StatusTypeDef USBD_LL_ClearStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr); uint16_t size);
uint8_t USBD_LL_IsStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_SetUSBAddress (USBD_HandleTypeDef *pdev, uint8_t dev_addr); USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev,
USBD_StatusTypeDef USBD_LL_Transmit (USBD_HandleTypeDef *pdev, uint8_t ep_addr,
uint8_t ep_addr, uint8_t *pbuf,
uint8_t *pbuf, uint16_t size);
uint16_t size);
uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, void USBD_LL_Delay(uint32_t Delay);
uint8_t ep_addr,
uint8_t *pbuf, /**
uint16_t size); * @}
*/
uint32_t USBD_LL_GetRxDataSize (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
void USBD_LL_Delay (uint32_t Delay); #ifdef __cplusplus
}
/** #endif
* @}
*/ #endif /* __USBD_CORE_H */
#ifdef __cplusplus /**
} * @}
#endif */
#endif /* __USBD_CORE_H */ /**
* @}
/** */
* @}
*/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View File

@ -1,113 +1,105 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_req.h * @file usbd_req.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.4.2 * @brief Header file for the usbd_req.c file
* @date 11-December-2015 ******************************************************************************
* @brief Header file for the usbd_req.c file * @attention
****************************************************************************** *
* @attention * <h2><center>&copy; Copyright (c) 2015 STMicroelectronics.
* * All rights reserved.</center></h2>
* <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2> *
* * This software component is licensed by ST under Ultimate Liberty license
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * SLA0044, the "License"; You may not use this file except in compliance with
* You may not use this file except in compliance with the License. * the License. You may obtain a copy of the License at:
* You may obtain a copy of the License at: * www.st.com/SLA0044
* *
* http://www.st.com/software_license_agreement_liberty_v2 ******************************************************************************
* */
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, /* Define to prevent recursive inclusion -------------------------------------*/
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #ifndef __USB_REQUEST_H
* See the License for the specific language governing permissions and #define __USB_REQUEST_H
* limitations under the License.
* #ifdef __cplusplus
****************************************************************************** extern "C" {
*/ #endif
/* Define to prevent recursive inclusion -------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#ifndef __USB_REQUEST_H #include "usbd_def.h"
#define __USB_REQUEST_H
#ifdef __cplusplus /** @addtogroup STM32_USB_DEVICE_LIBRARY
extern "C" { * @{
#endif */
/* Includes ------------------------------------------------------------------*/ /** @defgroup USBD_REQ
#include "usbd_def.h" * @brief header file for the usbd_req.c file
* @{
*/
/** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{ /** @defgroup USBD_REQ_Exported_Defines
*/ * @{
*/
/** @defgroup USBD_REQ /**
* @brief header file for the usbd_req.c file * @}
* @{ */
*/
/** @defgroup USBD_REQ_Exported_Defines /** @defgroup USBD_REQ_Exported_Types
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_REQ_Exported_Types
* @{ /** @defgroup USBD_REQ_Exported_Macros
*/ * @{
/** */
* @} /**
*/ * @}
*/
/** @defgroup USBD_REQ_Exported_Variables
/** @defgroup USBD_REQ_Exported_Macros * @{
* @{ */
*/ /**
/** * @}
* @} */
*/
/** @defgroup USBD_REQ_Exported_FunctionsPrototype
/** @defgroup USBD_REQ_Exported_Variables * @{
* @{ */
*/
/** USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
* @} USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
*/ USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
/** @defgroup USBD_REQ_Exported_FunctionsPrototype
* @{ void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
*/
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata);
USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len);
USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); /**
* @}
*/
void USBD_CtlError (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
#ifdef __cplusplus
void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata); }
#endif
void USBD_GetString (uint8_t *desc, uint8_t *unicode, uint16_t *len);
/** #endif /* __USB_REQUEST_H */
* @}
*/ /**
* @}
#ifdef __cplusplus */
}
#endif /**
* @}
#endif /* __USB_REQUEST_H */ */
/**
* @} /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View File

@ -1,330 +1,348 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_def.h * @file usbd_def.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.4.2 * @brief General defines for the usb device library
* @date 11-December-2015 ******************************************************************************
* @brief General defines for the usb device library * @attention
****************************************************************************** *
* @attention * <h2><center>&copy; Copyright (c) 2015 STMicroelectronics.
* * All rights reserved.</center></h2>
* <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2> *
* * This software component is licensed by ST under Ultimate Liberty license
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * SLA0044, the "License"; You may not use this file except in compliance with
* You may not use this file except in compliance with the License. * the License. You may obtain a copy of the License at:
* You may obtain a copy of the License at: * www.st.com/SLA0044
* *
* http://www.st.com/software_license_agreement_liberty_v2 ******************************************************************************
* */
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, /* Define to prevent recursive inclusion -------------------------------------*/
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #ifndef __USBD_DEF_H
* See the License for the specific language governing permissions and #define __USBD_DEF_H
* limitations under the License.
* #ifdef __cplusplus
****************************************************************************** extern "C" {
*/ #endif
/* Define to prevent recursive inclusion -------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#ifndef __USBD_DEF_H #include "usbd_conf.h"
#define __USBD_DEF_H
/** @addtogroup STM32_USBD_DEVICE_LIBRARY
#ifdef __cplusplus * @{
extern "C" { */
#endif
/** @defgroup USB_DEF
/* Includes ------------------------------------------------------------------*/ * @brief general defines for the usb device library file
#include "usbd_conf.h" * @{
*/
/** @addtogroup STM32_USBD_DEVICE_LIBRARY
* @{ /** @defgroup USB_DEF_Exported_Defines
*/ * @{
*/
/** @defgroup USB_DEF
* @brief general defines for the usb device library file #ifndef NULL
* @{ #define NULL 0U
*/ #endif /* NULL */
/** @defgroup USB_DEF_Exported_Defines #ifndef USBD_MAX_NUM_INTERFACES
* @{ #define USBD_MAX_NUM_INTERFACES 1U
*/ #endif /* USBD_MAX_NUM_CONFIGURATION */
#ifndef NULL #ifndef USBD_MAX_NUM_CONFIGURATION
#define NULL 0 #define USBD_MAX_NUM_CONFIGURATION 1U
#endif #endif /* USBD_MAX_NUM_CONFIGURATION */
#ifndef USBD_LPM_ENABLED
#define USB_LEN_DEV_QUALIFIER_DESC 0x0A #define USBD_LPM_ENABLED 0U
#define USB_LEN_DEV_DESC 0x12 #endif /* USBD_LPM_ENABLED */
#define USB_LEN_CFG_DESC 0x09
#define USB_LEN_IF_DESC 0x09 #ifndef USBD_SELF_POWERED
#define USB_LEN_EP_DESC 0x07 #define USBD_SELF_POWERED 1U
#define USB_LEN_OTG_DESC 0x03 #endif /*USBD_SELF_POWERED */
#define USB_LEN_LANGID_STR_DESC 0x04
#define USB_LEN_OTHER_SPEED_DESC_SIZ 0x09 #ifndef USBD_SUPPORT_USER_STRING_DESC
#define USBD_SUPPORT_USER_STRING_DESC 0U
#define USBD_IDX_LANGID_STR 0x00 #endif /* USBD_SUPPORT_USER_STRING_DESC */
#define USBD_IDX_MFC_STR 0x01
#define USBD_IDX_PRODUCT_STR 0x02 #define USB_LEN_DEV_QUALIFIER_DESC 0x0AU
#define USBD_IDX_SERIAL_STR 0x03 #define USB_LEN_DEV_DESC 0x12U
#define USBD_IDX_CONFIG_STR 0x04 #define USB_LEN_CFG_DESC 0x09U
#define USBD_IDX_INTERFACE_STR 0x05 #define USB_LEN_IF_DESC 0x09U
#define USB_LEN_EP_DESC 0x07U
#define USB_REQ_TYPE_STANDARD 0x00 #define USB_LEN_OTG_DESC 0x03U
#define USB_REQ_TYPE_CLASS 0x20 #define USB_LEN_LANGID_STR_DESC 0x04U
#define USB_REQ_TYPE_VENDOR 0x40 #define USB_LEN_OTHER_SPEED_DESC_SIZ 0x09U
#define USB_REQ_TYPE_MASK 0x60
#define USBD_IDX_LANGID_STR 0x00U
#define USB_REQ_RECIPIENT_DEVICE 0x00 #define USBD_IDX_MFC_STR 0x01U
#define USB_REQ_RECIPIENT_INTERFACE 0x01 #define USBD_IDX_PRODUCT_STR 0x02U
#define USB_REQ_RECIPIENT_ENDPOINT 0x02 #define USBD_IDX_SERIAL_STR 0x03U
#define USB_REQ_RECIPIENT_MASK 0x03 #define USBD_IDX_CONFIG_STR 0x04U
#define USBD_IDX_INTERFACE_STR 0x05U
#define USB_REQ_GET_STATUS 0x00
#define USB_REQ_CLEAR_FEATURE 0x01 #define USB_REQ_TYPE_STANDARD 0x00U
#define USB_REQ_SET_FEATURE 0x03 #define USB_REQ_TYPE_CLASS 0x20U
#define USB_REQ_SET_ADDRESS 0x05 #define USB_REQ_TYPE_VENDOR 0x40U
#define USB_REQ_GET_DESCRIPTOR 0x06 #define USB_REQ_TYPE_MASK 0x60U
#define USB_REQ_SET_DESCRIPTOR 0x07
#define USB_REQ_GET_CONFIGURATION 0x08 #define USB_REQ_RECIPIENT_DEVICE 0x00U
#define USB_REQ_SET_CONFIGURATION 0x09 #define USB_REQ_RECIPIENT_INTERFACE 0x01U
#define USB_REQ_GET_INTERFACE 0x0A #define USB_REQ_RECIPIENT_ENDPOINT 0x02U
#define USB_REQ_SET_INTERFACE 0x0B #define USB_REQ_RECIPIENT_MASK 0x03U
#define USB_REQ_SYNCH_FRAME 0x0C
#define USB_REQ_GET_STATUS 0x00U
#define USB_DESC_TYPE_DEVICE 1 #define USB_REQ_CLEAR_FEATURE 0x01U
#define USB_DESC_TYPE_CONFIGURATION 2 #define USB_REQ_SET_FEATURE 0x03U
#define USB_DESC_TYPE_STRING 3 #define USB_REQ_SET_ADDRESS 0x05U
#define USB_DESC_TYPE_INTERFACE 4 #define USB_REQ_GET_DESCRIPTOR 0x06U
#define USB_DESC_TYPE_ENDPOINT 5 #define USB_REQ_SET_DESCRIPTOR 0x07U
#define USB_DESC_TYPE_DEVICE_QUALIFIER 6 #define USB_REQ_GET_CONFIGURATION 0x08U
#define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 7 #define USB_REQ_SET_CONFIGURATION 0x09U
#define USB_DESC_TYPE_BOS 0x0F #define USB_REQ_GET_INTERFACE 0x0AU
#define USB_REQ_SET_INTERFACE 0x0BU
#define USB_CONFIG_REMOTE_WAKEUP 2 #define USB_REQ_SYNCH_FRAME 0x0CU
#define USB_CONFIG_SELF_POWERED 1
#define USB_DESC_TYPE_DEVICE 0x01U
#define USB_FEATURE_EP_HALT 0 #define USB_DESC_TYPE_CONFIGURATION 0x02U
#define USB_FEATURE_REMOTE_WAKEUP 1 #define USB_DESC_TYPE_STRING 0x03U
#define USB_FEATURE_TEST_MODE 2 #define USB_DESC_TYPE_INTERFACE 0x04U
#define USB_DESC_TYPE_ENDPOINT 0x05U
#define USB_DEVICE_CAPABITY_TYPE 0x10 #define USB_DESC_TYPE_DEVICE_QUALIFIER 0x06U
#define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 0x07U
#define USB_HS_MAX_PACKET_SIZE 512 #define USB_DESC_TYPE_BOS 0x0FU
#define USB_FS_MAX_PACKET_SIZE 64
#define USB_MAX_EP0_SIZE 64 #define USB_CONFIG_REMOTE_WAKEUP 0x02U
#define USB_CONFIG_SELF_POWERED 0x01U
/* Device Status */
#define USBD_STATE_DEFAULT 1 #define USB_FEATURE_EP_HALT 0x00U
#define USBD_STATE_ADDRESSED 2 #define USB_FEATURE_REMOTE_WAKEUP 0x01U
#define USBD_STATE_CONFIGURED 3 #define USB_FEATURE_TEST_MODE 0x02U
#define USBD_STATE_SUSPENDED 4
#define USB_DEVICE_CAPABITY_TYPE 0x10U
/* EP0 State */ #define USB_HS_MAX_PACKET_SIZE 512U
#define USBD_EP0_IDLE 0 #define USB_FS_MAX_PACKET_SIZE 64U
#define USBD_EP0_SETUP 1 #define USB_MAX_EP0_SIZE 64U
#define USBD_EP0_DATA_IN 2
#define USBD_EP0_DATA_OUT 3 /* Device Status */
#define USBD_EP0_STATUS_IN 4 #define USBD_STATE_DEFAULT 0x01U
#define USBD_EP0_STATUS_OUT 5 #define USBD_STATE_ADDRESSED 0x02U
#define USBD_EP0_STALL 6 #define USBD_STATE_CONFIGURED 0x03U
#define USBD_STATE_SUSPENDED 0x04U
#define USBD_EP_TYPE_CTRL 0
#define USBD_EP_TYPE_ISOC 1
#define USBD_EP_TYPE_BULK 2 /* EP0 State */
#define USBD_EP_TYPE_INTR 3 #define USBD_EP0_IDLE 0x00U
#define USBD_EP0_SETUP 0x01U
#define USBD_EP0_DATA_IN 0x02U
/** #define USBD_EP0_DATA_OUT 0x03U
* @} #define USBD_EP0_STATUS_IN 0x04U
*/ #define USBD_EP0_STATUS_OUT 0x05U
#define USBD_EP0_STALL 0x06U
/** @defgroup USBD_DEF_Exported_TypesDefinitions #define USBD_EP_TYPE_CTRL 0x00U
* @{ #define USBD_EP_TYPE_ISOC 0x01U
*/ #define USBD_EP_TYPE_BULK 0x02U
#define USBD_EP_TYPE_INTR 0x03U
typedef struct usb_setup_req
{
/**
uint8_t bmRequest; * @}
uint8_t bRequest; */
uint16_t wValue;
uint16_t wIndex;
uint16_t wLength; /** @defgroup USBD_DEF_Exported_TypesDefinitions
}USBD_SetupReqTypedef; * @{
*/
struct _USBD_HandleTypeDef;
typedef struct usb_setup_req
typedef struct _Device_cb {
{ uint8_t bmRequest;
uint8_t (*Init) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx); uint8_t bRequest;
uint8_t (*DeInit) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx); uint16_t wValue;
/* Control Endpoints*/ uint16_t wIndex;
uint8_t (*Setup) (struct _USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req); uint16_t wLength;
uint8_t (*EP0_TxSent) (struct _USBD_HandleTypeDef *pdev ); } USBD_SetupReqTypedef;
uint8_t (*EP0_RxReady) (struct _USBD_HandleTypeDef *pdev );
/* Class Specific Endpoints*/ struct _USBD_HandleTypeDef;
uint8_t (*DataIn) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
uint8_t (*DataOut) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum); typedef struct _Device_cb
uint8_t (*SOF) (struct _USBD_HandleTypeDef *pdev); {
uint8_t (*IsoINIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum); uint8_t (*Init)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx);
uint8_t (*IsoOUTIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum); uint8_t (*DeInit)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx);
/* Control Endpoints*/
uint8_t *(*GetHSConfigDescriptor)(uint16_t *length); uint8_t (*Setup)(struct _USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
uint8_t *(*GetFSConfigDescriptor)(uint16_t *length); uint8_t (*EP0_TxSent)(struct _USBD_HandleTypeDef *pdev);
uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length); uint8_t (*EP0_RxReady)(struct _USBD_HandleTypeDef *pdev);
uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length); /* Class Specific Endpoints*/
#if (USBD_SUPPORT_USER_STRING == 1) uint8_t (*DataIn)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev ,uint8_t index, uint16_t *length); uint8_t (*DataOut)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
#endif uint8_t (*SOF)(struct _USBD_HandleTypeDef *pdev);
uint8_t (*IsoINIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
} USBD_ClassTypeDef; uint8_t (*IsoOUTIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
/* Following USB Device Speed */ uint8_t *(*GetHSConfigDescriptor)(uint16_t *length);
typedef enum uint8_t *(*GetFSConfigDescriptor)(uint16_t *length);
{ uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length);
USBD_SPEED_HIGH = 0, uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length);
USBD_SPEED_FULL = 1, #if (USBD_SUPPORT_USER_STRING_DESC == 1U)
USBD_SPEED_LOW = 2, uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length);
}USBD_SpeedTypeDef; #endif
/* Following USB Device status */ } USBD_ClassTypeDef;
typedef enum {
USBD_OK = 0, /* Following USB Device Speed */
USBD_BUSY, typedef enum
USBD_FAIL, {
}USBD_StatusTypeDef; USBD_SPEED_HIGH = 0U,
USBD_SPEED_FULL = 1U,
/* USB Device descriptors structure */ USBD_SPEED_LOW = 2U,
typedef struct } USBD_SpeedTypeDef;
{
uint8_t *(*GetDeviceDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); /* Following USB Device status */
uint8_t *(*GetLangIDStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); typedef enum
uint8_t *(*GetManufacturerStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); {
uint8_t *(*GetProductStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); USBD_OK = 0U,
uint8_t *(*GetSerialStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); USBD_BUSY,
uint8_t *(*GetConfigurationStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); USBD_FAIL,
uint8_t *(*GetInterfaceStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); } USBD_StatusTypeDef;
#if (USBD_LPM_ENABLED == 1)
uint8_t *(*GetBOSDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length); /* USB Device descriptors structure */
#endif typedef struct
} USBD_DescriptorsTypeDef; {
uint8_t *(*GetDeviceDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
/* USB Device handle structure */ uint8_t *(*GetLangIDStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
typedef struct uint8_t *(*GetManufacturerStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
{ uint8_t *(*GetProductStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
uint32_t status; uint8_t *(*GetSerialStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
uint32_t total_length; uint8_t *(*GetConfigurationStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
uint32_t rem_length; uint8_t *(*GetInterfaceStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
uint32_t maxpacket; #if (USBD_LPM_ENABLED == 1U)
} USBD_EndpointTypeDef; uint8_t *(*GetBOSDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
#endif
/* USB Device handle structure */ } USBD_DescriptorsTypeDef;
typedef struct _USBD_HandleTypeDef
{ /* USB Device handle structure */
uint8_t id; typedef struct
uint32_t dev_config; {
uint32_t dev_default_config; uint32_t status;
uint32_t dev_config_status; uint32_t is_used;
USBD_SpeedTypeDef dev_speed; uint32_t total_length;
USBD_EndpointTypeDef ep_in[15]; uint32_t rem_length;
USBD_EndpointTypeDef ep_out[15]; uint32_t maxpacket;
uint32_t ep0_state; } USBD_EndpointTypeDef;
uint32_t ep0_data_len;
uint8_t dev_state; /* USB Device handle structure */
uint8_t dev_old_state; typedef struct _USBD_HandleTypeDef
uint8_t dev_address; {
uint8_t dev_connection_status; uint8_t id;
uint8_t dev_test_mode; uint32_t dev_config;
uint32_t dev_remote_wakeup; uint32_t dev_default_config;
uint32_t dev_config_status;
USBD_SetupReqTypedef request; USBD_SpeedTypeDef dev_speed;
USBD_DescriptorsTypeDef *pDesc; USBD_EndpointTypeDef ep_in[16];
USBD_ClassTypeDef *pClass; USBD_EndpointTypeDef ep_out[16];
void *pClassData; uint32_t ep0_state;
void *pUserData; uint32_t ep0_data_len;
void *pData; uint8_t dev_state;
} USBD_HandleTypeDef; uint8_t dev_old_state;
uint8_t dev_address;
/** uint8_t dev_connection_status;
* @} uint8_t dev_test_mode;
*/ uint32_t dev_remote_wakeup;
USBD_SetupReqTypedef request;
USBD_DescriptorsTypeDef *pDesc;
/** @defgroup USBD_DEF_Exported_Macros USBD_ClassTypeDef *pClass;
* @{ void *pClassData;
*/ void *pUserData;
#define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \ void *pData;
(((uint16_t)(*(((uint8_t *)(addr)) + 1))) << 8)) } USBD_HandleTypeDef;
#define LOBYTE(x) ((uint8_t)(x & 0x00FF)) /**
#define HIBYTE(x) ((uint8_t)((x & 0xFF00) >>8)) * @}
#define MIN(a, b) (((a) < (b)) ? (a) : (b)) */
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
#if defined ( __GNUC__ ) /** @defgroup USBD_DEF_Exported_Macros
#ifndef __weak * @{
#define __weak __attribute__((weak)) */
#endif /* __weak */ #define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \
#ifndef __packed (((uint16_t)(*(((uint8_t *)(addr)) + 1U))) << 8U))
#define __packed __attribute__((__packed__))
#endif /* __packed */ #define LOBYTE(x) ((uint8_t)((x) & 0x00FFU))
#endif /* __GNUC__ */ #define HIBYTE(x) ((uint8_t)(((x) & 0xFF00U) >> 8U))
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
/* In HS mode and when the DMA is used, all variables and data structures dealing
with the DMA during the transaction process should be 4-bytes aligned */
#if defined ( __GNUC__ )
#if defined (__GNUC__) /* GNU Compiler */ #ifndef __weak
#define __ALIGN_END __attribute__ ((aligned (4))) #define __weak __attribute__((weak))
#define __ALIGN_BEGIN #endif /* __weak */
#else #ifndef __packed
#define __ALIGN_END #define __packed __attribute__((__packed__))
#if defined (__CC_ARM) /* ARM Compiler */ #endif /* __packed */
#define __ALIGN_BEGIN __align(4) #endif /* __GNUC__ */
#elif defined (__ICCARM__) /* IAR Compiler */
#define __ALIGN_BEGIN
#elif defined (__TASKING__) /* TASKING Compiler */ /* In HS mode and when the DMA is used, all variables and data structures dealing
#define __ALIGN_BEGIN __align(4) with the DMA during the transaction process should be 4-bytes aligned */
#endif /* __CC_ARM */
#endif /* __GNUC__ */ #if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */
#ifndef __ALIGN_END
#define __ALIGN_END __attribute__ ((aligned (4U)))
/** #endif /* __ALIGN_END */
* @} #ifndef __ALIGN_BEGIN
*/ #define __ALIGN_BEGIN
#endif /* __ALIGN_BEGIN */
/** @defgroup USBD_DEF_Exported_Variables #else
* @{ #ifndef __ALIGN_END
*/ #define __ALIGN_END
#endif /* __ALIGN_END */
/** #ifndef __ALIGN_BEGIN
* @} #if defined (__CC_ARM) /* ARM Compiler */
*/ #define __ALIGN_BEGIN __align(4U)
#elif defined (__ICCARM__) /* IAR Compiler */
/** @defgroup USBD_DEF_Exported_FunctionsPrototype #define __ALIGN_BEGIN
* @{ #endif /* __CC_ARM */
*/ #endif /* __ALIGN_BEGIN */
#endif /* __GNUC__ */
/**
* @}
*/ /**
* @}
#ifdef __cplusplus */
}
#endif /** @defgroup USBD_DEF_Exported_Variables
* @{
#endif /* __USBD_DEF_H */ */
/** /**
* @} * @}
*/ */
/** /** @defgroup USBD_DEF_Exported_FunctionsPrototype
* @} * @{
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __USBD_DEF_H */
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View File

@ -1,128 +1,119 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_ioreq.h * @file usbd_ioreq.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.4.2 * @brief Header file for the usbd_ioreq.c file
* @date 11-December-2015 ******************************************************************************
* @brief Header file for the usbd_ioreq.c file * @attention
****************************************************************************** *
* @attention * <h2><center>&copy; Copyright (c) 2015 STMicroelectronics.
* * All rights reserved.</center></h2>
* <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2> *
* * This software component is licensed by ST under Ultimate Liberty license
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * SLA0044, the "License"; You may not use this file except in compliance with
* You may not use this file except in compliance with the License. * the License. You may obtain a copy of the License at:
* You may obtain a copy of the License at: * www.st.com/SLA0044
* *
* http://www.st.com/software_license_agreement_liberty_v2 ******************************************************************************
* */
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, /* Define to prevent recursive inclusion -------------------------------------*/
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #ifndef __USBD_IOREQ_H
* See the License for the specific language governing permissions and #define __USBD_IOREQ_H
* limitations under the License.
* #ifdef __cplusplus
****************************************************************************** extern "C" {
*/ #endif
/* Define to prevent recursive inclusion -------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#ifndef __USBD_IOREQ_H #include "usbd_def.h"
#define __USBD_IOREQ_H #include "usbd_core.h"
#ifdef __cplusplus /** @addtogroup STM32_USB_DEVICE_LIBRARY
extern "C" { * @{
#endif */
/* Includes ------------------------------------------------------------------*/ /** @defgroup USBD_IOREQ
#include "usbd_def.h" * @brief header file for the usbd_ioreq.c file
#include "usbd_core.h" * @{
*/
/** @addtogroup STM32_USB_DEVICE_LIBRARY
* @{ /** @defgroup USBD_IOREQ_Exported_Defines
*/ * @{
*/
/** @defgroup USBD_IOREQ /**
* @brief header file for the usbd_ioreq.c file * @}
* @{ */
*/
/** @defgroup USBD_IOREQ_Exported_Defines /** @defgroup USBD_IOREQ_Exported_Types
* @{ * @{
*/ */
/**
* @}
*/ /**
* @}
*/
/** @defgroup USBD_IOREQ_Exported_Types
* @{
*/
/** @defgroup USBD_IOREQ_Exported_Macros
* @{
/** */
* @}
*/ /**
* @}
*/
/** @defgroup USBD_IOREQ_Exported_Macros /** @defgroup USBD_IOREQ_Exported_Variables
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_IOREQ_Exported_Variables /** @defgroup USBD_IOREQ_Exported_FunctionsPrototype
* @{ * @{
*/ */
/** USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev,
* @} uint8_t *pbuf,
*/ uint16_t len);
/** @defgroup USBD_IOREQ_Exported_FunctionsPrototype USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev,
* @{ uint8_t *pbuf,
*/ uint16_t len);
USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev, USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev,
uint8_t *buf, uint8_t *pbuf,
uint16_t len); uint16_t len);
USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev, USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev,
uint8_t *pbuf, uint8_t *pbuf,
uint16_t len); uint16_t len);
USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev, USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev);
uint8_t *pbuf,
uint16_t len); USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev, uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
uint8_t *pbuf,
uint16_t len); /**
* @}
USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev); */
USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev); #ifdef __cplusplus
}
uint16_t USBD_GetRxCount (USBD_HandleTypeDef *pdev , #endif
uint8_t epnum);
#endif /* __USBD_IOREQ_H */
/**
* @} /**
*/ * @}
*/
#ifdef __cplusplus
} /**
#endif * @}
*/
#endif /* __USBD_IOREQ_H */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,236 +1,216 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_ioreq.c * @file usbd_ioreq.c
* @author MCD Application Team * @author MCD Application Team
* @version V2.4.2 * @brief This file provides the IO requests APIs for control endpoints.
* @date 11-December-2015 ******************************************************************************
* @brief This file provides the IO requests APIs for control endpoints. * @attention
****************************************************************************** *
* @attention * <h2><center>&copy; Copyright (c) 2015 STMicroelectronics.
* * All rights reserved.</center></h2>
* <h2><center>&copy; COPYRIGHT 2015 STMicroelectronics</center></h2> *
* * This software component is licensed by ST under Ultimate Liberty license
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * SLA0044, the "License"; You may not use this file except in compliance with
* You may not use this file except in compliance with the License. * the License. You may obtain a copy of the License at:
* You may obtain a copy of the License at: * www.st.com/SLA0044
* *
* http://www.st.com/software_license_agreement_liberty_v2 ******************************************************************************
* */
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, /* Includes ------------------------------------------------------------------*/
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #include "usbd_ioreq.h"
* See the License for the specific language governing permissions and
* limitations under the License. /** @addtogroup STM32_USB_DEVICE_LIBRARY
* * @{
****************************************************************************** */
*/
/* Includes ------------------------------------------------------------------*/ /** @defgroup USBD_IOREQ
#include "usbd_ioreq.h" * @brief control I/O requests module
* @{
/** @addtogroup STM32_USB_DEVICE_LIBRARY */
* @{
*/ /** @defgroup USBD_IOREQ_Private_TypesDefinitions
* @{
*/
/** @defgroup USBD_IOREQ /**
* @brief control I/O requests module * @}
* @{ */
*/
/** @defgroup USBD_IOREQ_Private_TypesDefinitions /** @defgroup USBD_IOREQ_Private_Defines
* @{ * @{
*/ */
/**
* @} /**
*/ * @}
*/
/** @defgroup USBD_IOREQ_Private_Defines
* @{ /** @defgroup USBD_IOREQ_Private_Macros
*/ * @{
*/
/** /**
* @} * @}
*/ */
/** @defgroup USBD_IOREQ_Private_Macros /** @defgroup USBD_IOREQ_Private_Variables
* @{ * @{
*/ */
/**
* @} /**
*/ * @}
*/
/** @defgroup USBD_IOREQ_Private_Variables
* @{ /** @defgroup USBD_IOREQ_Private_FunctionPrototypes
*/ * @{
*/
/** /**
* @} * @}
*/ */
/** @defgroup USBD_IOREQ_Private_FunctionPrototypes /** @defgroup USBD_IOREQ_Private_Functions
* @{ * @{
*/ */
/**
* @} /**
*/ * @brief USBD_CtlSendData
* send data on the ctl pipe
* @param pdev: device instance
/** @defgroup USBD_IOREQ_Private_Functions * @param buff: pointer to data buffer
* @{ * @param len: length of data to be sent
*/ * @retval status
*/
/** USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev,
* @brief USBD_CtlSendData uint8_t *pbuf, uint16_t len)
* send data on the ctl pipe {
* @param pdev: device instance /* Set EP0 State */
* @param buff: pointer to data buffer pdev->ep0_state = USBD_EP0_DATA_IN;
* @param len: length of data to be sent pdev->ep_in[0].total_length = len;
* @retval status pdev->ep_in[0].rem_length = len;
*/
USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev, /* Start the transfer */
uint8_t *pbuf, USBD_LL_Transmit(pdev, 0x00U, pbuf, len);
uint16_t len)
{ return USBD_OK;
/* Set EP0 State */ }
pdev->ep0_state = USBD_EP0_DATA_IN;
pdev->ep_in[0].total_length = len; /**
pdev->ep_in[0].rem_length = len; * @brief USBD_CtlContinueSendData
/* Start the transfer */ * continue sending data on the ctl pipe
USBD_LL_Transmit (pdev, 0x00, pbuf, len); * @param pdev: device instance
* @param buff: pointer to data buffer
return USBD_OK; * @param len: length of data to be sent
} * @retval status
*/
/** USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev,
* @brief USBD_CtlContinueSendData uint8_t *pbuf, uint16_t len)
* continue sending data on the ctl pipe {
* @param pdev: device instance /* Start the next transfer */
* @param buff: pointer to data buffer USBD_LL_Transmit(pdev, 0x00U, pbuf, len);
* @param len: length of data to be sent
* @retval status return USBD_OK;
*/ }
USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
uint8_t *pbuf, /**
uint16_t len) * @brief USBD_CtlPrepareRx
{ * receive data on the ctl pipe
/* Start the next transfer */ * @param pdev: device instance
USBD_LL_Transmit (pdev, 0x00, pbuf, len); * @param buff: pointer to data buffer
* @param len: length of data to be received
return USBD_OK; * @retval status
} */
USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev,
/** uint8_t *pbuf, uint16_t len)
* @brief USBD_CtlPrepareRx {
* receive data on the ctl pipe /* Set EP0 State */
* @param pdev: device instance pdev->ep0_state = USBD_EP0_DATA_OUT;
* @param buff: pointer to data buffer pdev->ep_out[0].total_length = len;
* @param len: length of data to be received pdev->ep_out[0].rem_length = len;
* @retval status
*/ /* Start the transfer */
USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev, USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
uint8_t *pbuf,
uint16_t len) return USBD_OK;
{ }
/* Set EP0 State */
pdev->ep0_state = USBD_EP0_DATA_OUT; /**
pdev->ep_out[0].total_length = len; * @brief USBD_CtlContinueRx
pdev->ep_out[0].rem_length = len; * continue receive data on the ctl pipe
/* Start the transfer */ * @param pdev: device instance
USBD_LL_PrepareReceive (pdev, * @param buff: pointer to data buffer
0, * @param len: length of data to be received
pbuf, * @retval status
len); */
USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev,
return USBD_OK; uint8_t *pbuf, uint16_t len)
} {
USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
/**
* @brief USBD_CtlContinueRx return USBD_OK;
* continue receive data on the ctl pipe }
* @param pdev: device instance
* @param buff: pointer to data buffer /**
* @param len: length of data to be received * @brief USBD_CtlSendStatus
* @retval status * send zero lzngth packet on the ctl pipe
*/ * @param pdev: device instance
USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev, * @retval status
uint8_t *pbuf, */
uint16_t len) USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev)
{ {
/* Set EP0 State */
USBD_LL_PrepareReceive (pdev, pdev->ep0_state = USBD_EP0_STATUS_IN;
0,
pbuf, /* Start the transfer */
len); USBD_LL_Transmit(pdev, 0x00U, NULL, 0U);
return USBD_OK;
} return USBD_OK;
/** }
* @brief USBD_CtlSendStatus
* send zero lzngth packet on the ctl pipe /**
* @param pdev: device instance * @brief USBD_CtlReceiveStatus
* @retval status * receive zero lzngth packet on the ctl pipe
*/ * @param pdev: device instance
USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev) * @retval status
{ */
USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev)
/* Set EP0 State */ {
pdev->ep0_state = USBD_EP0_STATUS_IN; /* Set EP0 State */
pdev->ep0_state = USBD_EP0_STATUS_OUT;
/* Start the transfer */
USBD_LL_Transmit (pdev, 0x00, NULL, 0); /* Start the transfer */
USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U);
return USBD_OK;
} return USBD_OK;
}
/**
* @brief USBD_CtlReceiveStatus /**
* receive zero lzngth packet on the ctl pipe * @brief USBD_GetRxCount
* @param pdev: device instance * returns the received data length
* @retval status * @param pdev: device instance
*/ * @param ep_addr: endpoint address
USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev) * @retval Rx Data blength
{ */
/* Set EP0 State */ uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
pdev->ep0_state = USBD_EP0_STATUS_OUT; {
return USBD_LL_GetRxDataSize(pdev, ep_addr);
/* Start the transfer */ }
USBD_LL_PrepareReceive ( pdev,
0, /**
NULL, * @}
0); */
return USBD_OK;
} /**
* @}
*/
/**
* @brief USBD_GetRxCount
* returns the received data length /**
* @param pdev: device instance * @}
* @param ep_addr: endpoint address */
* @retval Rx Data blength
*/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
uint16_t USBD_GetRxCount (USBD_HandleTypeDef *pdev , uint8_t ep_addr)
{
return USBD_LL_GetRxDataSize(pdev, ep_addr);
}
/**
* @}
*/
/**
* @}
*/
/**
* @}
*/
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

View File

@ -31,7 +31,7 @@ THE SOFTWARE.
#define USBD_MAX_NUM_INTERFACES 1 #define USBD_MAX_NUM_INTERFACES 1
#define USBD_MAX_NUM_CONFIGURATION 1 #define USBD_MAX_NUM_CONFIGURATION 1
#define USBD_MAX_STR_DESC_SIZ 512 #define USBD_MAX_STR_DESC_SIZ 512
#define USBD_SUPPORT_USER_STRING 1 #define USBD_SUPPORT_USER_STRING_DESC 1
#define USBD_SELF_POWERED 0 #define USBD_SELF_POWERED 0
#define DEVICE_FS 0 #define DEVICE_FS 0