stm32/usbdev: Convert files to unix line endings.

Also remove trailing whitespace and convert tabs to spaces.
pull/3779/head
Damien George 2018-05-11 23:03:52 +10:00
rodzic 56a273ebff
commit abde0fa226
13 zmienionych plików z 4029 dodań i 4029 usunięć

Wyświetl plik

@ -1,151 +1,151 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_msc_bot.h * @file usbd_msc_bot.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.0.0 * @version V2.0.0
* @date 18-February-2014 * @date 18-February-2014
* @brief header for the usbd_msc_bot.c file * @brief header for the usbd_msc_bot.c file
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2> * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
* *
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License. * You may not use this file except in compliance with the License.
* You may obtain a copy of the License at: * You may obtain a copy of the License at:
* *
* http://www.st.com/software_license_agreement_liberty_v2 * http://www.st.com/software_license_agreement_liberty_v2
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
* *
****************************************************************************** ******************************************************************************
*/ */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#include "usbd_core.h" #include "usbd_core.h"
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USBD_MSC_BOT_H #ifndef __USBD_MSC_BOT_H
#define __USBD_MSC_BOT_H #define __USBD_MSC_BOT_H
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup MSC_BOT /** @defgroup MSC_BOT
* @brief This file is the Header file for usbd_bot.c * @brief This file is the Header file for usbd_bot.c
* @{ * @{
*/ */
/** @defgroup USBD_CORE_Exported_Defines /** @defgroup USBD_CORE_Exported_Defines
* @{ * @{
*/ */
#define USBD_BOT_IDLE 0 /* Idle state */ #define USBD_BOT_IDLE 0 /* Idle state */
#define USBD_BOT_DATA_OUT 1 /* Data Out state */ #define USBD_BOT_DATA_OUT 1 /* Data Out state */
#define USBD_BOT_DATA_IN 2 /* Data In state */ #define USBD_BOT_DATA_IN 2 /* Data In state */
#define USBD_BOT_LAST_DATA_IN 3 /* Last Data In Last */ #define USBD_BOT_LAST_DATA_IN 3 /* Last Data In Last */
#define USBD_BOT_SEND_DATA 4 /* Send Immediate data */ #define USBD_BOT_SEND_DATA 4 /* Send Immediate data */
#define USBD_BOT_NO_DATA 5 /* No data Stage */ #define USBD_BOT_NO_DATA 5 /* No data Stage */
#define USBD_BOT_CBW_SIGNATURE 0x43425355 #define USBD_BOT_CBW_SIGNATURE 0x43425355
#define USBD_BOT_CSW_SIGNATURE 0x53425355 #define USBD_BOT_CSW_SIGNATURE 0x53425355
#define USBD_BOT_CBW_LENGTH 31 #define USBD_BOT_CBW_LENGTH 31
#define USBD_BOT_CSW_LENGTH 13 #define USBD_BOT_CSW_LENGTH 13
#define USBD_BOT_MAX_DATA 256 #define USBD_BOT_MAX_DATA 256
/* CSW Status Definitions */ /* CSW Status Definitions */
#define USBD_CSW_CMD_PASSED 0x00 #define USBD_CSW_CMD_PASSED 0x00
#define USBD_CSW_CMD_FAILED 0x01 #define USBD_CSW_CMD_FAILED 0x01
#define USBD_CSW_PHASE_ERROR 0x02 #define USBD_CSW_PHASE_ERROR 0x02
/* BOT Status */ /* BOT Status */
#define USBD_BOT_STATUS_NORMAL 0 #define USBD_BOT_STATUS_NORMAL 0
#define USBD_BOT_STATUS_RECOVERY 1 #define USBD_BOT_STATUS_RECOVERY 1
#define USBD_BOT_STATUS_ERROR 2 #define USBD_BOT_STATUS_ERROR 2
#define USBD_DIR_IN 0 #define USBD_DIR_IN 0
#define USBD_DIR_OUT 1 #define USBD_DIR_OUT 1
#define USBD_BOTH_DIR 2 #define USBD_BOTH_DIR 2
/** /**
* @} * @}
*/ */
/** @defgroup MSC_CORE_Private_TypesDefinitions /** @defgroup MSC_CORE_Private_TypesDefinitions
* @{ * @{
*/ */
typedef struct typedef struct
{ {
uint32_t dSignature; uint32_t dSignature;
uint32_t dTag; uint32_t dTag;
uint32_t dDataLength; uint32_t dDataLength;
uint8_t bmFlags; uint8_t bmFlags;
uint8_t bLUN; uint8_t bLUN;
uint8_t bCBLength; uint8_t bCBLength;
uint8_t CB[16]; uint8_t CB[16];
uint8_t ReservedForAlign; uint8_t ReservedForAlign;
} }
USBD_MSC_BOT_CBWTypeDef; USBD_MSC_BOT_CBWTypeDef;
typedef struct typedef struct
{ {
uint32_t dSignature; uint32_t dSignature;
uint32_t dTag; uint32_t dTag;
uint32_t dDataResidue; uint32_t dDataResidue;
uint8_t bStatus; uint8_t bStatus;
uint8_t ReservedForAlign[3]; uint8_t ReservedForAlign[3];
} }
USBD_MSC_BOT_CSWTypeDef; USBD_MSC_BOT_CSWTypeDef;
/** /**
* @} * @}
*/ */
/** @defgroup USBD_CORE_Exported_Types /** @defgroup USBD_CORE_Exported_Types
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_CORE_Exported_FunctionsPrototypes /** @defgroup USBD_CORE_Exported_FunctionsPrototypes
* @{ * @{
*/ */
void MSC_BOT_Init (USBD_HandleTypeDef *pdev); void MSC_BOT_Init (USBD_HandleTypeDef *pdev);
void MSC_BOT_Reset (USBD_HandleTypeDef *pdev); void MSC_BOT_Reset (USBD_HandleTypeDef *pdev);
void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev); void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev);
void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev, void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev,
uint8_t epnum); uint8_t epnum);
void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev, void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev,
uint8_t epnum); uint8_t epnum);
void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev, void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev,
uint8_t CSW_Status); uint8_t CSW_Status);
void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev, void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev,
uint8_t epnum); uint8_t epnum);
/** /**
* @} * @}
*/ */
#endif /* __USBD_MSC_BOT_H */ #endif /* __USBD_MSC_BOT_H */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Wyświetl plik

@ -1,104 +1,104 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_msc_data.h * @file usbd_msc_data.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.0.0 * @version V2.0.0
* @date 18-February-2014 * @date 18-February-2014
* @brief header for the usbd_msc_data.c file * @brief header for the usbd_msc_data.c file
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2> * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
* *
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License. * You may not use this file except in compliance with the License.
* You may obtain a copy of the License at: * You may obtain a copy of the License at:
* *
* http://www.st.com/software_license_agreement_liberty_v2 * http://www.st.com/software_license_agreement_liberty_v2
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
* *
****************************************************************************** ******************************************************************************
*/ */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _USBD_MSC_DATA_H_ #ifndef _USBD_MSC_DATA_H_
#define _USBD_MSC_DATA_H_ #define _USBD_MSC_DATA_H_
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbd_conf.h" #include "usbd_conf.h"
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup USB_INFO /** @defgroup USB_INFO
* @brief general defines for the usb device library file * @brief general defines for the usb device library file
* @{ * @{
*/ */
/** @defgroup USB_INFO_Exported_Defines /** @defgroup USB_INFO_Exported_Defines
* @{ * @{
*/ */
#define MODE_SENSE6_LEN 8 #define MODE_SENSE6_LEN 8
#define MODE_SENSE10_LEN 8 #define MODE_SENSE10_LEN 8
#define LENGTH_INQUIRY_PAGE00 7 #define LENGTH_INQUIRY_PAGE00 7
#define LENGTH_FORMAT_CAPACITIES 20 #define LENGTH_FORMAT_CAPACITIES 20
/** /**
* @} * @}
*/ */
/** @defgroup USBD_INFO_Exported_TypesDefinitions /** @defgroup USBD_INFO_Exported_TypesDefinitions
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_INFO_Exported_Macros /** @defgroup USBD_INFO_Exported_Macros
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_INFO_Exported_Variables /** @defgroup USBD_INFO_Exported_Variables
* @{ * @{
*/ */
extern const uint8_t MSC_Page00_Inquiry_Data[]; extern const uint8_t MSC_Page00_Inquiry_Data[];
extern const uint8_t MSC_Mode_Sense6_data[]; extern const uint8_t MSC_Mode_Sense6_data[];
extern const uint8_t MSC_Mode_Sense10_data[] ; extern const uint8_t MSC_Mode_Sense10_data[] ;
/** /**
* @} * @}
*/ */
/** @defgroup USBD_INFO_Exported_FunctionsPrototype /** @defgroup USBD_INFO_Exported_FunctionsPrototype
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
#endif /* _USBD_MSC_DATA_H_ */ #endif /* _USBD_MSC_DATA_H_ */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Wyświetl plik

@ -1,195 +1,195 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_msc_scsi.h * @file usbd_msc_scsi.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.0.0 * @version V2.0.0
* @date 18-February-2014 * @date 18-February-2014
* @brief header for the usbd_msc_scsi.c file * @brief header for the usbd_msc_scsi.c file
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2> * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
* *
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License. * You may not use this file except in compliance with the License.
* You may obtain a copy of the License at: * You may obtain a copy of the License at:
* *
* http://www.st.com/software_license_agreement_liberty_v2 * http://www.st.com/software_license_agreement_liberty_v2
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
* *
****************************************************************************** ******************************************************************************
*/ */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USBD_MSC_SCSI_H #ifndef __USBD_MSC_SCSI_H
#define __USBD_MSC_SCSI_H #define __USBD_MSC_SCSI_H
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbd_def.h" #include "usbd_def.h"
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup USBD_SCSI /** @defgroup USBD_SCSI
* @brief header file for the storage disk file * @brief header file for the storage disk file
* @{ * @{
*/ */
/** @defgroup USBD_SCSI_Exported_Defines /** @defgroup USBD_SCSI_Exported_Defines
* @{ * @{
*/ */
#define SENSE_LIST_DEEPTH 4 #define SENSE_LIST_DEEPTH 4
/* SCSI Commands */ /* SCSI Commands */
#define SCSI_FORMAT_UNIT 0x04 #define SCSI_FORMAT_UNIT 0x04
#define SCSI_INQUIRY 0x12 #define SCSI_INQUIRY 0x12
#define SCSI_MODE_SELECT6 0x15 #define SCSI_MODE_SELECT6 0x15
#define SCSI_MODE_SELECT10 0x55 #define SCSI_MODE_SELECT10 0x55
#define SCSI_MODE_SENSE6 0x1A #define SCSI_MODE_SENSE6 0x1A
#define SCSI_MODE_SENSE10 0x5A #define SCSI_MODE_SENSE10 0x5A
#define SCSI_ALLOW_MEDIUM_REMOVAL 0x1E #define SCSI_ALLOW_MEDIUM_REMOVAL 0x1E
#define SCSI_SYNCHRONIZE_CACHE10 0x35 #define SCSI_SYNCHRONIZE_CACHE10 0x35
#define SCSI_SYNCHRONIZE_CACHE16 0x91 #define SCSI_SYNCHRONIZE_CACHE16 0x91
#define SCSI_READ6 0x08 #define SCSI_READ6 0x08
#define SCSI_READ10 0x28 #define SCSI_READ10 0x28
#define SCSI_READ12 0xA8 #define SCSI_READ12 0xA8
#define SCSI_READ16 0x88 #define SCSI_READ16 0x88
#define SCSI_READ_CAPACITY10 0x25 #define SCSI_READ_CAPACITY10 0x25
#define SCSI_READ_CAPACITY16 0x9E #define SCSI_READ_CAPACITY16 0x9E
#define SCSI_REQUEST_SENSE 0x03 #define SCSI_REQUEST_SENSE 0x03
#define SCSI_START_STOP_UNIT 0x1B #define SCSI_START_STOP_UNIT 0x1B
#define SCSI_TEST_UNIT_READY 0x00 #define SCSI_TEST_UNIT_READY 0x00
#define SCSI_WRITE6 0x0A #define SCSI_WRITE6 0x0A
#define SCSI_WRITE10 0x2A #define SCSI_WRITE10 0x2A
#define SCSI_WRITE12 0xAA #define SCSI_WRITE12 0xAA
#define SCSI_WRITE16 0x8A #define SCSI_WRITE16 0x8A
#define SCSI_VERIFY10 0x2F #define SCSI_VERIFY10 0x2F
#define SCSI_VERIFY12 0xAF #define SCSI_VERIFY12 0xAF
#define SCSI_VERIFY16 0x8F #define SCSI_VERIFY16 0x8F
#define SCSI_SEND_DIAGNOSTIC 0x1D #define SCSI_SEND_DIAGNOSTIC 0x1D
#define SCSI_READ_FORMAT_CAPACITIES 0x23 #define SCSI_READ_FORMAT_CAPACITIES 0x23
#define NO_SENSE 0 #define NO_SENSE 0
#define RECOVERED_ERROR 1 #define RECOVERED_ERROR 1
#define NOT_READY 2 #define NOT_READY 2
#define MEDIUM_ERROR 3 #define MEDIUM_ERROR 3
#define HARDWARE_ERROR 4 #define HARDWARE_ERROR 4
#define ILLEGAL_REQUEST 5 #define ILLEGAL_REQUEST 5
#define UNIT_ATTENTION 6 #define UNIT_ATTENTION 6
#define DATA_PROTECT 7 #define DATA_PROTECT 7
#define BLANK_CHECK 8 #define BLANK_CHECK 8
#define VENDOR_SPECIFIC 9 #define VENDOR_SPECIFIC 9
#define COPY_ABORTED 10 #define COPY_ABORTED 10
#define ABORTED_COMMAND 11 #define ABORTED_COMMAND 11
#define VOLUME_OVERFLOW 13 #define VOLUME_OVERFLOW 13
#define MISCOMPARE 14 #define MISCOMPARE 14
#define INVALID_CDB 0x20 #define INVALID_CDB 0x20
#define INVALID_FIELED_IN_COMMAND 0x24 #define INVALID_FIELED_IN_COMMAND 0x24
#define PARAMETER_LIST_LENGTH_ERROR 0x1A #define PARAMETER_LIST_LENGTH_ERROR 0x1A
#define INVALID_FIELD_IN_PARAMETER_LIST 0x26 #define INVALID_FIELD_IN_PARAMETER_LIST 0x26
#define ADDRESS_OUT_OF_RANGE 0x21 #define ADDRESS_OUT_OF_RANGE 0x21
#define MEDIUM_NOT_PRESENT 0x3A #define MEDIUM_NOT_PRESENT 0x3A
#define MEDIUM_HAVE_CHANGED 0x28 #define MEDIUM_HAVE_CHANGED 0x28
#define WRITE_PROTECTED 0x27 #define WRITE_PROTECTED 0x27
#define UNRECOVERED_READ_ERROR 0x11 #define UNRECOVERED_READ_ERROR 0x11
#define WRITE_FAULT 0x03 #define WRITE_FAULT 0x03
#define READ_FORMAT_CAPACITY_DATA_LEN 0x0C #define READ_FORMAT_CAPACITY_DATA_LEN 0x0C
#define READ_CAPACITY10_DATA_LEN 0x08 #define READ_CAPACITY10_DATA_LEN 0x08
#define MODE_SENSE10_DATA_LEN 0x08 #define MODE_SENSE10_DATA_LEN 0x08
#define MODE_SENSE6_DATA_LEN 0x04 #define MODE_SENSE6_DATA_LEN 0x04
#define REQUEST_SENSE_DATA_LEN 0x12 #define REQUEST_SENSE_DATA_LEN 0x12
#define STANDARD_INQUIRY_DATA_LEN 0x24 #define STANDARD_INQUIRY_DATA_LEN 0x24
#define BLKVFY 0x04 #define BLKVFY 0x04
extern uint8_t Page00_Inquiry_Data[]; extern uint8_t Page00_Inquiry_Data[];
extern uint8_t Standard_Inquiry_Data[]; extern uint8_t Standard_Inquiry_Data[];
extern uint8_t Standard_Inquiry_Data2[]; extern uint8_t Standard_Inquiry_Data2[];
extern uint8_t Mode_Sense6_data[]; extern uint8_t Mode_Sense6_data[];
extern uint8_t Mode_Sense10_data[]; extern uint8_t Mode_Sense10_data[];
extern uint8_t Scsi_Sense_Data[]; extern uint8_t Scsi_Sense_Data[];
extern uint8_t ReadCapacity10_Data[]; extern uint8_t ReadCapacity10_Data[];
extern uint8_t ReadFormatCapacity_Data []; extern uint8_t ReadFormatCapacity_Data [];
/** /**
* @} * @}
*/ */
/** @defgroup USBD_SCSI_Exported_TypesDefinitions /** @defgroup USBD_SCSI_Exported_TypesDefinitions
* @{ * @{
*/ */
typedef struct _SENSE_ITEM { typedef struct _SENSE_ITEM {
char Skey; char Skey;
union { union {
struct _ASCs { struct _ASCs {
char ASC; char ASC;
char ASCQ; char ASCQ;
}b; }b;
unsigned int ASC; unsigned int ASC;
char *pData; char *pData;
} w; } w;
} USBD_SCSI_SenseTypeDef; } USBD_SCSI_SenseTypeDef;
/** /**
* @} * @}
*/ */
/** @defgroup USBD_SCSI_Exported_Macros /** @defgroup USBD_SCSI_Exported_Macros
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_SCSI_Exported_Variables /** @defgroup USBD_SCSI_Exported_Variables
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_SCSI_Exported_FunctionsPrototype /** @defgroup USBD_SCSI_Exported_FunctionsPrototype
* @{ * @{
*/ */
int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev, int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev,
uint8_t lun, uint8_t lun,
uint8_t *cmd); uint8_t *cmd);
void SCSI_SenseCode(USBD_HandleTypeDef *pdev, void SCSI_SenseCode(USBD_HandleTypeDef *pdev,
uint8_t lun, uint8_t lun,
uint8_t sKey, uint8_t sKey,
uint8_t ASC); uint8_t ASC);
/** /**
* @} * @}
*/ */
#endif /* __USBD_MSC_SCSI_H */ #endif /* __USBD_MSC_SCSI_H */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Wyświetl plik

@ -1,407 +1,407 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_msc_bot.c * @file usbd_msc_bot.c
* @author MCD Application Team * @author MCD Application Team
* @version V2.0.0 * @version V2.0.0
* @date 18-February-2014 * @date 18-February-2014
* @brief This file provides all the BOT protocol core functions. * @brief This file provides all the BOT protocol core functions.
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2> * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
* *
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License. * You may not use this file except in compliance with the License.
* You may obtain a copy of the License at: * You may obtain a copy of the License at:
* *
* http://www.st.com/software_license_agreement_liberty_v2 * http://www.st.com/software_license_agreement_liberty_v2
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
* *
****************************************************************************** ******************************************************************************
*/ */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbd_msc_bot.h" #include "usbd_msc_bot.h"
#include "usbd_msc_scsi.h" #include "usbd_msc_scsi.h"
#include "usbd_cdc_msc_hid.h" #include "usbd_cdc_msc_hid.h"
#include "usbd_ioreq.h" #include "usbd_ioreq.h"
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup MSC_BOT /** @defgroup MSC_BOT
* @brief BOT protocol module * @brief BOT protocol module
* @{ * @{
*/ */
/** @defgroup MSC_BOT_Private_TypesDefinitions /** @defgroup MSC_BOT_Private_TypesDefinitions
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_BOT_Private_Defines /** @defgroup MSC_BOT_Private_Defines
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_BOT_Private_Macros /** @defgroup MSC_BOT_Private_Macros
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_BOT_Private_Variables /** @defgroup MSC_BOT_Private_Variables
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_BOT_Private_FunctionPrototypes /** @defgroup MSC_BOT_Private_FunctionPrototypes
* @{ * @{
*/ */
static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev); static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev);
static void MSC_BOT_SendData (USBD_HandleTypeDef *pdev, static void MSC_BOT_SendData (USBD_HandleTypeDef *pdev,
uint8_t* pbuf, uint8_t* pbuf,
uint16_t len); uint16_t len);
static void MSC_BOT_Abort(USBD_HandleTypeDef *pdev); static void MSC_BOT_Abort(USBD_HandleTypeDef *pdev);
/** /**
* @} * @}
*/ */
/** @defgroup MSC_BOT_Private_Functions /** @defgroup MSC_BOT_Private_Functions
* @{ * @{
*/ */
/** /**
* @brief MSC_BOT_Init * @brief MSC_BOT_Init
* Initialize the BOT Process * Initialize the BOT Process
* @param pdev: device instance * @param pdev: device instance
* @retval None * @retval None
*/ */
void MSC_BOT_Init (USBD_HandleTypeDef *pdev) void MSC_BOT_Init (USBD_HandleTypeDef *pdev)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
hmsc->bot_state = USBD_BOT_IDLE; hmsc->bot_state = USBD_BOT_IDLE;
hmsc->bot_status = USBD_BOT_STATUS_NORMAL; hmsc->bot_status = USBD_BOT_STATUS_NORMAL;
hmsc->scsi_sense_tail = 0; hmsc->scsi_sense_tail = 0;
hmsc->scsi_sense_head = 0; hmsc->scsi_sense_head = 0;
hmsc->bdev_ops->Init(0); hmsc->bdev_ops->Init(0);
USBD_LL_FlushEP(pdev, MSC_OUT_EP); USBD_LL_FlushEP(pdev, MSC_OUT_EP);
USBD_LL_FlushEP(pdev, MSC_IN_EP); USBD_LL_FlushEP(pdev, MSC_IN_EP);
/* Prapare EP to Receive First BOT Cmd */ /* Prapare EP to Receive First BOT Cmd */
USBD_LL_PrepareReceive (pdev, USBD_LL_PrepareReceive (pdev,
MSC_OUT_EP, MSC_OUT_EP,
(uint8_t *)&hmsc->cbw, (uint8_t *)&hmsc->cbw,
USBD_BOT_CBW_LENGTH); USBD_BOT_CBW_LENGTH);
} }
/** /**
* @brief MSC_BOT_Reset * @brief MSC_BOT_Reset
* Reset the BOT Machine * Reset the BOT Machine
* @param pdev: device instance * @param pdev: device instance
* @retval None * @retval None
*/ */
void MSC_BOT_Reset (USBD_HandleTypeDef *pdev) void MSC_BOT_Reset (USBD_HandleTypeDef *pdev)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
hmsc->bot_state = USBD_BOT_IDLE; hmsc->bot_state = USBD_BOT_IDLE;
hmsc->bot_status = USBD_BOT_STATUS_RECOVERY; hmsc->bot_status = USBD_BOT_STATUS_RECOVERY;
/* Prapare EP to Receive First BOT Cmd */ /* Prapare EP to Receive First BOT Cmd */
USBD_LL_PrepareReceive (pdev, USBD_LL_PrepareReceive (pdev,
MSC_OUT_EP, MSC_OUT_EP,
(uint8_t *)&hmsc->cbw, (uint8_t *)&hmsc->cbw,
USBD_BOT_CBW_LENGTH); USBD_BOT_CBW_LENGTH);
} }
/** /**
* @brief MSC_BOT_DeInit * @brief MSC_BOT_DeInit
* Uninitialize the BOT Machine * Uninitialize the BOT Machine
* @param pdev: device instance * @param pdev: device instance
* @retval None * @retval None
*/ */
void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev) void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
hmsc->bot_state = USBD_BOT_IDLE; hmsc->bot_state = USBD_BOT_IDLE;
} }
/** /**
* @brief MSC_BOT_DataIn * @brief MSC_BOT_DataIn
* Handle BOT IN data stage * Handle BOT IN data stage
* @param pdev: device instance * @param pdev: device instance
* @param epnum: endpoint index * @param epnum: endpoint index
* @retval None * @retval None
*/ */
void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev, void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev,
uint8_t epnum) uint8_t epnum)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
switch (hmsc->bot_state) switch (hmsc->bot_state)
{ {
case USBD_BOT_DATA_IN: case USBD_BOT_DATA_IN:
if(SCSI_ProcessCmd(pdev, if(SCSI_ProcessCmd(pdev,
hmsc->cbw.bLUN, hmsc->cbw.bLUN,
&hmsc->cbw.CB[0]) < 0) &hmsc->cbw.CB[0]) < 0)
{ {
MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED); MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
} }
break; break;
case USBD_BOT_SEND_DATA: case USBD_BOT_SEND_DATA:
case USBD_BOT_LAST_DATA_IN: case USBD_BOT_LAST_DATA_IN:
MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_PASSED); MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_PASSED);
break; break;
default: default:
break; break;
} }
} }
/** /**
* @brief MSC_BOT_DataOut * @brief MSC_BOT_DataOut
* Proccess MSC OUT data * Proccess MSC OUT data
* @param pdev: device instance * @param pdev: device instance
* @param epnum: endpoint index * @param epnum: endpoint index
* @retval None * @retval None
*/ */
void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev, void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev,
uint8_t epnum) uint8_t epnum)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
switch (hmsc->bot_state) switch (hmsc->bot_state)
{ {
case USBD_BOT_IDLE: case USBD_BOT_IDLE:
MSC_BOT_CBW_Decode(pdev); MSC_BOT_CBW_Decode(pdev);
break; break;
case USBD_BOT_DATA_OUT: case USBD_BOT_DATA_OUT:
if(SCSI_ProcessCmd(pdev, if(SCSI_ProcessCmd(pdev,
hmsc->cbw.bLUN, hmsc->cbw.bLUN,
&hmsc->cbw.CB[0]) < 0) &hmsc->cbw.CB[0]) < 0)
{ {
MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED); MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
} }
break; break;
default: default:
break; break;
} }
} }
/** /**
* @brief MSC_BOT_CBW_Decode * @brief MSC_BOT_CBW_Decode
* Decode the CBW command and set the BOT state machine accordingtly * Decode the CBW command and set the BOT state machine accordingtly
* @param pdev: device instance * @param pdev: device instance
* @retval None * @retval None
*/ */
static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev) static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
hmsc->csw.dTag = hmsc->cbw.dTag; hmsc->csw.dTag = hmsc->cbw.dTag;
hmsc->csw.dDataResidue = hmsc->cbw.dDataLength; hmsc->csw.dDataResidue = hmsc->cbw.dDataLength;
if ((USBD_LL_GetRxDataSize (pdev ,MSC_OUT_EP) != USBD_BOT_CBW_LENGTH) || if ((USBD_LL_GetRxDataSize (pdev ,MSC_OUT_EP) != USBD_BOT_CBW_LENGTH) ||
(hmsc->cbw.dSignature != USBD_BOT_CBW_SIGNATURE)|| (hmsc->cbw.dSignature != USBD_BOT_CBW_SIGNATURE)||
(hmsc->cbw.bLUN > 1) || (hmsc->cbw.bLUN > 1) ||
(hmsc->cbw.bCBLength < 1) || (hmsc->cbw.bCBLength < 1) ||
(hmsc->cbw.bCBLength > 16)) (hmsc->cbw.bCBLength > 16))
{ {
SCSI_SenseCode(pdev, SCSI_SenseCode(pdev,
hmsc->cbw.bLUN, hmsc->cbw.bLUN,
ILLEGAL_REQUEST, ILLEGAL_REQUEST,
INVALID_CDB); INVALID_CDB);
hmsc->bot_status = USBD_BOT_STATUS_ERROR; hmsc->bot_status = USBD_BOT_STATUS_ERROR;
MSC_BOT_Abort(pdev); MSC_BOT_Abort(pdev);
} }
else else
{ {
if(SCSI_ProcessCmd(pdev, if(SCSI_ProcessCmd(pdev,
hmsc->cbw.bLUN, hmsc->cbw.bLUN,
&hmsc->cbw.CB[0]) < 0) &hmsc->cbw.CB[0]) < 0)
{ {
if(hmsc->bot_state == USBD_BOT_NO_DATA) if(hmsc->bot_state == USBD_BOT_NO_DATA)
{ {
MSC_BOT_SendCSW (pdev, MSC_BOT_SendCSW (pdev,
USBD_CSW_CMD_FAILED); USBD_CSW_CMD_FAILED);
} }
else else
{ {
MSC_BOT_Abort(pdev); MSC_BOT_Abort(pdev);
} }
} }
/*Burst xfer handled internally*/ /*Burst xfer handled internally*/
else if ((hmsc->bot_state != USBD_BOT_DATA_IN) && else if ((hmsc->bot_state != USBD_BOT_DATA_IN) &&
(hmsc->bot_state != USBD_BOT_DATA_OUT) && (hmsc->bot_state != USBD_BOT_DATA_OUT) &&
(hmsc->bot_state != USBD_BOT_LAST_DATA_IN)) (hmsc->bot_state != USBD_BOT_LAST_DATA_IN))
{ {
if (hmsc->bot_data_length > 0) if (hmsc->bot_data_length > 0)
{ {
MSC_BOT_SendData(pdev, MSC_BOT_SendData(pdev,
hmsc->bot_data, hmsc->bot_data,
hmsc->bot_data_length); hmsc->bot_data_length);
} }
else if (hmsc->bot_data_length == 0) else if (hmsc->bot_data_length == 0)
{ {
MSC_BOT_SendCSW (pdev, MSC_BOT_SendCSW (pdev,
USBD_CSW_CMD_PASSED); USBD_CSW_CMD_PASSED);
} }
} }
} }
} }
/** /**
* @brief MSC_BOT_SendData * @brief MSC_BOT_SendData
* Send the requested data * Send the requested data
* @param pdev: device instance * @param pdev: device instance
* @param buf: pointer to data buffer * @param buf: pointer to data buffer
* @param len: Data Length * @param len: Data Length
* @retval None * @retval None
*/ */
static void MSC_BOT_SendData(USBD_HandleTypeDef *pdev, static void MSC_BOT_SendData(USBD_HandleTypeDef *pdev,
uint8_t* buf, uint8_t* buf,
uint16_t len) uint16_t len)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
len = MIN (hmsc->cbw.dDataLength, len); len = MIN (hmsc->cbw.dDataLength, len);
hmsc->csw.dDataResidue -= len; hmsc->csw.dDataResidue -= len;
hmsc->csw.bStatus = USBD_CSW_CMD_PASSED; hmsc->csw.bStatus = USBD_CSW_CMD_PASSED;
hmsc->bot_state = USBD_BOT_SEND_DATA; hmsc->bot_state = USBD_BOT_SEND_DATA;
USBD_LL_Transmit (pdev, MSC_IN_EP, buf, len); USBD_LL_Transmit (pdev, MSC_IN_EP, buf, len);
} }
/** /**
* @brief MSC_BOT_SendCSW * @brief MSC_BOT_SendCSW
* Send the Command Status Wrapper * Send the Command Status Wrapper
* @param pdev: device instance * @param pdev: device instance
* @param status : CSW status * @param status : CSW status
* @retval None * @retval None
*/ */
void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev, void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev,
uint8_t CSW_Status) uint8_t CSW_Status)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
hmsc->csw.dSignature = USBD_BOT_CSW_SIGNATURE; hmsc->csw.dSignature = USBD_BOT_CSW_SIGNATURE;
hmsc->csw.bStatus = CSW_Status; hmsc->csw.bStatus = CSW_Status;
hmsc->bot_state = USBD_BOT_IDLE; hmsc->bot_state = USBD_BOT_IDLE;
USBD_LL_Transmit (pdev, USBD_LL_Transmit (pdev,
MSC_IN_EP, MSC_IN_EP,
(uint8_t *)&hmsc->csw, (uint8_t *)&hmsc->csw,
USBD_BOT_CSW_LENGTH); USBD_BOT_CSW_LENGTH);
/* Prapare EP to Receive next Cmd */ /* Prapare EP to Receive next Cmd */
USBD_LL_PrepareReceive (pdev, USBD_LL_PrepareReceive (pdev,
MSC_OUT_EP, MSC_OUT_EP,
(uint8_t *)&hmsc->cbw, (uint8_t *)&hmsc->cbw,
USBD_BOT_CBW_LENGTH); USBD_BOT_CBW_LENGTH);
} }
/** /**
* @brief MSC_BOT_Abort * @brief MSC_BOT_Abort
* Abort the current transfer * Abort the current transfer
* @param pdev: device instance * @param pdev: device instance
* @retval status * @retval status
*/ */
static void MSC_BOT_Abort (USBD_HandleTypeDef *pdev) static void MSC_BOT_Abort (USBD_HandleTypeDef *pdev)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
if ((hmsc->cbw.bmFlags == 0) && if ((hmsc->cbw.bmFlags == 0) &&
(hmsc->cbw.dDataLength != 0) && (hmsc->cbw.dDataLength != 0) &&
(hmsc->bot_status == USBD_BOT_STATUS_NORMAL) ) (hmsc->bot_status == USBD_BOT_STATUS_NORMAL) )
{ {
USBD_LL_StallEP(pdev, MSC_OUT_EP ); USBD_LL_StallEP(pdev, MSC_OUT_EP );
} }
USBD_LL_StallEP(pdev, MSC_IN_EP); USBD_LL_StallEP(pdev, MSC_IN_EP);
if(hmsc->bot_status == USBD_BOT_STATUS_ERROR) if(hmsc->bot_status == USBD_BOT_STATUS_ERROR)
{ {
USBD_LL_PrepareReceive (pdev, USBD_LL_PrepareReceive (pdev,
MSC_OUT_EP, MSC_OUT_EP,
(uint8_t *)&hmsc->cbw, (uint8_t *)&hmsc->cbw,
USBD_BOT_CBW_LENGTH); USBD_BOT_CBW_LENGTH);
} }
} }
/** /**
* @brief MSC_BOT_CplClrFeature * @brief MSC_BOT_CplClrFeature
* Complete the clear feature request * Complete the clear feature request
* @param pdev: device instance * @param pdev: device instance
* @param epnum: endpoint index * @param epnum: endpoint index
* @retval None * @retval None
*/ */
void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev, uint8_t epnum) void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev, uint8_t epnum)
{ {
USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData; USBD_MSC_BOT_HandleTypeDef *hmsc = &((usbd_cdc_msc_hid_state_t*)pdev->pClassData)->MSC_BOT_ClassData;
if(hmsc->bot_status == USBD_BOT_STATUS_ERROR )/* Bad CBW Signature */ if(hmsc->bot_status == USBD_BOT_STATUS_ERROR )/* Bad CBW Signature */
{ {
USBD_LL_StallEP(pdev, MSC_IN_EP); USBD_LL_StallEP(pdev, MSC_IN_EP);
hmsc->bot_status = USBD_BOT_STATUS_NORMAL; hmsc->bot_status = USBD_BOT_STATUS_NORMAL;
} }
else if(((epnum & 0x80) == 0x80) && ( hmsc->bot_status != USBD_BOT_STATUS_RECOVERY)) else if(((epnum & 0x80) == 0x80) && ( hmsc->bot_status != USBD_BOT_STATUS_RECOVERY))
{ {
MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED); MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
} }
} }
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Wyświetl plik

@ -1,134 +1,134 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_msc_data.c * @file usbd_msc_data.c
* @author MCD Application Team * @author MCD Application Team
* @version V2.0.0 * @version V2.0.0
* @date 18-February-2014 * @date 18-February-2014
* @brief This file provides all the vital inquiry pages and sense data. * @brief This file provides all the vital inquiry pages and sense data.
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2> * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
* *
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License. * You may not use this file except in compliance with the License.
* You may obtain a copy of the License at: * You may obtain a copy of the License at:
* *
* http://www.st.com/software_license_agreement_liberty_v2 * http://www.st.com/software_license_agreement_liberty_v2
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
* *
****************************************************************************** ******************************************************************************
*/ */
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbd_msc_data.h" #include "usbd_msc_data.h"
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup MSC_DATA /** @defgroup MSC_DATA
* @brief Mass storage info/data module * @brief Mass storage info/data module
* @{ * @{
*/ */
/** @defgroup MSC_DATA_Private_TypesDefinitions /** @defgroup MSC_DATA_Private_TypesDefinitions
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_DATA_Private_Defines /** @defgroup MSC_DATA_Private_Defines
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_DATA_Private_Macros /** @defgroup MSC_DATA_Private_Macros
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_DATA_Private_Variables /** @defgroup MSC_DATA_Private_Variables
* @{ * @{
*/ */
/* USB Mass storage Page 0 Inquiry Data */ /* USB Mass storage Page 0 Inquiry Data */
const uint8_t MSC_Page00_Inquiry_Data[] = {//7 const uint8_t MSC_Page00_Inquiry_Data[] = {//7
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
(LENGTH_INQUIRY_PAGE00 - 4), (LENGTH_INQUIRY_PAGE00 - 4),
0x00, 0x00,
0x80, 0x80,
0x83 0x83
}; };
/* USB Mass storage sense 6 Data */ /* USB Mass storage sense 6 Data */
const uint8_t MSC_Mode_Sense6_data[] = { const uint8_t MSC_Mode_Sense6_data[] = {
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00 0x00
}; };
/* USB Mass storage sense 10 Data */ /* USB Mass storage sense 10 Data */
const uint8_t MSC_Mode_Sense10_data[] = { const uint8_t MSC_Mode_Sense10_data[] = {
0x00, 0x00,
0x06, 0x06,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00, 0x00,
0x00 0x00
}; };
/** /**
* @} * @}
*/ */
/** @defgroup MSC_DATA_Private_FunctionPrototypes /** @defgroup MSC_DATA_Private_FunctionPrototypes
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup MSC_DATA_Private_Functions /** @defgroup MSC_DATA_Private_Functions
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Wyświetl plik

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

Wyświetl plik

@ -1,106 +1,106 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_req.h * @file usbd_req.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.0.0 * @version V2.0.0
* @date 18-February-2014 * @date 18-February-2014
* @brief header file for the usbd_req.c file * @brief header file for the usbd_req.c file
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2> * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
* *
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License. * You may not use this file except in compliance with the License.
* You may obtain a copy of the License at: * You may obtain a copy of the License at:
* *
* http://www.st.com/software_license_agreement_liberty_v2 * http://www.st.com/software_license_agreement_liberty_v2
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
* *
****************************************************************************** ******************************************************************************
*/ */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USB_REQUEST_H_ #ifndef __USB_REQUEST_H_
#define __USB_REQUEST_H_ #define __USB_REQUEST_H_
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbd_def.h" #include "usbd_def.h"
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup USBD_REQ /** @defgroup USBD_REQ
* @brief header file for the usbd_ioreq.c file * @brief header file for the usbd_ioreq.c file
* @{ * @{
*/ */
/** @defgroup USBD_REQ_Exported_Defines /** @defgroup USBD_REQ_Exported_Defines
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_REQ_Exported_Types /** @defgroup USBD_REQ_Exported_Types
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_REQ_Exported_Macros /** @defgroup USBD_REQ_Exported_Macros
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_REQ_Exported_Variables /** @defgroup USBD_REQ_Exported_Variables
* @{ * @{
*/ */
/** /**
* @} * @}
*/ */
/** @defgroup USBD_REQ_Exported_FunctionsPrototype /** @defgroup USBD_REQ_Exported_FunctionsPrototype
* @{ * @{
*/ */
USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
USBD_StatusTypeDef USBD_StdItfReq (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); USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
void USBD_CtlError (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req); void USBD_CtlError (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata); void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata);
void USBD_GetString (uint8_t *desc, uint8_t *unicode, uint16_t *len); void USBD_GetString (uint8_t *desc, uint8_t *unicode, uint16_t *len);
/** /**
* @} * @}
*/ */
#endif /* __USB_REQUEST_H_ */ #endif /* __USB_REQUEST_H_ */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Wyświetl plik

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

Wyświetl plik

@ -1,121 +1,121 @@
/** /**
****************************************************************************** ******************************************************************************
* @file usbd_ioreq.h * @file usbd_ioreq.h
* @author MCD Application Team * @author MCD Application Team
* @version V2.0.0 * @version V2.0.0
* @date 18-February-2014 * @date 18-February-2014
* @brief header file for the usbd_ioreq.c file * @brief header file for the usbd_ioreq.c file
****************************************************************************** ******************************************************************************
* @attention * @attention
* *
* <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2> * <h2><center>&copy; COPYRIGHT 2014 STMicroelectronics</center></h2>
* *
* Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
* You may not use this file except in compliance with the License. * You may not use this file except in compliance with the License.
* You may obtain a copy of the License at: * You may obtain a copy of the License at:
* *
* http://www.st.com/software_license_agreement_liberty_v2 * http://www.st.com/software_license_agreement_liberty_v2
* *
* Unless required by applicable law or agreed to in writing, software * Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, * distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
* *
****************************************************************************** ******************************************************************************
*/ */
/* Define to prevent recursive inclusion -------------------------------------*/ /* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __USBD_IOREQ_H_ #ifndef __USBD_IOREQ_H_
#define __USBD_IOREQ_H_ #define __USBD_IOREQ_H_
/* Includes ------------------------------------------------------------------*/ /* Includes ------------------------------------------------------------------*/
#include "usbd_def.h" #include "usbd_def.h"
#include "usbd_core.h" #include "usbd_core.h"
/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY /** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
* @{ * @{
*/ */
/** @defgroup USBD_IOREQ /** @defgroup USBD_IOREQ
* @brief header file for the usbd_ioreq.c file * @brief header file for the usbd_ioreq.c file
* @{ * @{
*/ */
/** @defgroup USBD_IOREQ_Exported_Defines /** @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 /** @defgroup USBD_IOREQ_Exported_FunctionsPrototype
* @{ * @{
*/ */
USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev, USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev,
uint8_t *buf, uint8_t *buf,
uint16_t len); uint16_t len);
USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev, USBD_StatusTypeDef USBD_CtlContinueSendData (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_CtlPrepareRx (USBD_HandleTypeDef *pdev,
uint8_t *pbuf, uint8_t *pbuf,
uint16_t len); uint16_t len);
USBD_StatusTypeDef USBD_CtlContinueRx (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_CtlSendStatus (USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev);
USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev); USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev);
uint16_t USBD_GetRxCount (USBD_HandleTypeDef *pdev , uint16_t USBD_GetRxCount (USBD_HandleTypeDef *pdev ,
uint8_t epnum); uint8_t epnum);
/** /**
* @} * @}
*/ */
#endif /* __USBD_IOREQ_H_ */ #endif /* __USBD_IOREQ_H_ */
/** /**
* @} * @}
*/ */
/** /**
* @} * @}
*/ */
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

Wyświetl plik

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