diff --git a/stmhal/Makefile b/stmhal/Makefile
index 9fa7b2acfb..e1231f1432 100644
--- a/stmhal/Makefile
+++ b/stmhal/Makefile
@@ -37,7 +37,7 @@ INC += -I$(BUILD)
INC += -I$(CMSIS_DIR)/inc
INC += -I$(CMSIS_DIR)/devinc
INC += -I$(HAL_DIR)/inc
-INC += -I$(USBDEV_DIR)/core/inc -I$(USBDEV_DIR)/class/cdc_msc_hid/inc
+INC += -I$(USBDEV_DIR)/core/inc -I$(USBDEV_DIR)/class/inc
#INC += -I$(USBHOST_DIR)
INC += -I../$(FATFS_DIR)
INC += -I../lib/mp-readline
@@ -182,26 +182,10 @@ SRC_USBDEV = $(addprefix $(USBDEV_DIR)/,\
core/src/usbd_core.c \
core/src/usbd_ctlreq.c \
core/src/usbd_ioreq.c \
- class/cdc_msc_hid/src/usbd_cdc_msc_hid.c \
- class/cdc_msc_hid/src/usbd_msc_bot.c \
- class/cdc_msc_hid/src/usbd_msc_scsi.c \
- class/cdc_msc_hid/src/usbd_msc_data.c \
- )
-
-# class/cdc/src/usbd_cdc.c \
- class/msc/src/usbd_msc.c \
-# usbd_core.c \
- usbd_ioreq.c \
- usbd_req.c \
- usbd_usr.c \
- usbd_desc.c \
- usbd_pyb_core.c \
- usbd_pyb_core2.c \
- usbd_cdc_vcp.c \
- usbd_msc_bot.c \
- usbd_msc_data.c \
- usbd_msc_scsi.c \
- usbd_storage_msd.c \
+ class/src/usbd_cdc_msc_hid.c \
+ class/src/usbd_msc_bot.c \
+ class/src/usbd_msc_scsi.c \
+ class/src/usbd_msc_data.c \
)
ifeq ($(MICROPY_PY_WIZNET5K),1)
diff --git a/stmhal/usbdev/class/AUDIO/Inc/usbd_audio.h b/stmhal/usbdev/class/AUDIO/Inc/usbd_audio.h
deleted file mode 100644
index b9a225f20b..0000000000
--- a/stmhal/usbdev/class/AUDIO/Inc/usbd_audio.h
+++ /dev/null
@@ -1,201 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_audio_core.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_audio_core.c file.
- ******************************************************************************
- * @attention
- *
- *
© COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-
-#ifndef __USB_AUDIO_CORE_H_
-#define __USB_AUDIO_CORE_H_
-
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_AUDIO
- * @brief This file is the Header file for USBD_msc.c
- * @{
- */
-
-
-/** @defgroup USBD_AUDIO_Exported_Defines
- * @{
- */
-#define AUDIO_OUT_EP 0x01
-#define USB_AUDIO_CONFIG_DESC_SIZ 109
-#define AUDIO_INTERFACE_DESC_SIZE 9
-#define USB_AUDIO_DESC_SIZ 0x09
-#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE 0x09
-#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE 0x07
-
-#define AUDIO_DESCRIPTOR_TYPE 0x21
-#define USB_DEVICE_CLASS_AUDIO 0x01
-#define AUDIO_SUBCLASS_AUDIOCONTROL 0x01
-#define AUDIO_SUBCLASS_AUDIOSTREAMING 0x02
-#define AUDIO_PROTOCOL_UNDEFINED 0x00
-#define AUDIO_STREAMING_GENERAL 0x01
-#define AUDIO_STREAMING_FORMAT_TYPE 0x02
-
-/* Audio Descriptor Types */
-#define AUDIO_INTERFACE_DESCRIPTOR_TYPE 0x24
-#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE 0x25
-
-/* Audio Control Interface Descriptor Subtypes */
-#define AUDIO_CONTROL_HEADER 0x01
-#define AUDIO_CONTROL_INPUT_TERMINAL 0x02
-#define AUDIO_CONTROL_OUTPUT_TERMINAL 0x03
-#define AUDIO_CONTROL_FEATURE_UNIT 0x06
-
-#define AUDIO_INPUT_TERMINAL_DESC_SIZE 0x0C
-#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE 0x09
-#define AUDIO_STREAMING_INTERFACE_DESC_SIZE 0x07
-
-#define AUDIO_CONTROL_MUTE 0x0001
-
-#define AUDIO_FORMAT_TYPE_I 0x01
-#define AUDIO_FORMAT_TYPE_III 0x03
-
-#define AUDIO_ENDPOINT_GENERAL 0x01
-
-#define AUDIO_REQ_GET_CUR 0x81
-#define AUDIO_REQ_SET_CUR 0x01
-
-#define AUDIO_OUT_STREAMING_CTRL 0x02
-
-
-#define AUDIO_OUT_PACKET (uint32_t)(((USBD_AUDIO_FREQ * 2 * 2) /1000))
-#define AUDIO_DEFAULT_VOLUME 70
-
-/* Number of sub-packets in the audio transfer buffer. You can modify this value but always make sure
- that it is an even number and higher than 3 */
-#define AUDIO_OUT_PACKET_NUM 80
-/* Total size of the audio transfer buffer */
-#define AUDIO_TOTAL_BUF_SIZE ((uint32_t)(AUDIO_OUT_PACKET * AUDIO_OUT_PACKET_NUM))
-
- /* Audio Commands enmueration */
-typedef enum
-{
- AUDIO_CMD_START = 1,
- AUDIO_CMD_PLAY,
- AUDIO_CMD_STOP,
-}AUDIO_CMD_TypeDef;
-
-
-typedef enum
-{
- AUDIO_OFFSET_NONE = 0,
- AUDIO_OFFSET_HALF,
- AUDIO_OFFSET_FULL,
- AUDIO_OFFSET_UNKNOWN,
-}
-AUDIO_OffsetTypeDef;
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_TypesDefinitions
- * @{
- */
- typedef struct
-{
- uint8_t cmd;
- uint8_t data[USB_MAX_EP0_SIZE];
- uint8_t len;
- uint8_t unit;
-}
-USBD_AUDIO_ControlTypeDef;
-
-
-
-typedef struct
-{
- __IO uint32_t alt_setting;
- uint8_t buffer[AUDIO_TOTAL_BUF_SIZE];
- AUDIO_OffsetTypeDef offset;
- uint8_t rd_enable;
- uint16_t rd_ptr;
- uint16_t wr_ptr;
- USBD_AUDIO_ControlTypeDef control;
-}
-USBD_AUDIO_HandleTypeDef;
-
-
-typedef struct
-{
- int8_t (*Init) (uint32_t AudioFreq, uint32_t Volume, uint32_t options);
- int8_t (*DeInit) (uint32_t options);
- int8_t (*AudioCmd) (uint8_t* pbuf, uint32_t size, uint8_t cmd);
- int8_t (*VolumeCtl) (uint8_t vol);
- int8_t (*MuteCtl) (uint8_t cmd);
- int8_t (*PeriodicTC) (uint8_t cmd);
- int8_t (*GetState) (void);
-}USBD_AUDIO_ItfTypeDef;
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_CORE_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CORE_Exported_Variables
- * @{
- */
-
-extern USBD_ClassTypeDef USBD_AUDIO;
-/**
- * @}
- */
-
-/** @defgroup USB_CORE_Exported_Functions
- * @{
- */
-uint8_t USBD_AUDIO_RegisterInterface (USBD_HandleTypeDef *pdev,
- USBD_AUDIO_ItfTypeDef *fops);
-
-void USBD_AUDIO_Sync (USBD_HandleTypeDef *pdev, AUDIO_OffsetTypeDef offset);
-/**
- * @}
- */
-
-#endif // __USB_AUDIO_CORE_H_
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/AUDIO/Inc/usbd_audio_if_template.h b/stmhal/usbdev/class/AUDIO/Inc/usbd_audio_if_template.h
deleted file mode 100644
index cf407a4846..0000000000
--- a/stmhal/usbdev/class/AUDIO/Inc/usbd_audio_if_template.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_audio_if_template.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief Header for dfu_mal.c file.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_AUDIO_IF_TEMPLATE_H
-#define __USBD_AUDIO_IF_TEMPLATE_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_audio.h"
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-extern USBD_AUDIO_ItfTypeDef USBD_AUDIO_Template_fops;
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-#endif /* __USBD_AUDIO_IF_TEMPLATE_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/AUDIO/Src/usbd_audio.c b/stmhal/usbdev/class/AUDIO/Src/usbd_audio.c
deleted file mode 100644
index 32565320a2..0000000000
--- a/stmhal/usbdev/class/AUDIO/Src/usbd_audio.c
+++ /dev/null
@@ -1,781 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_audio.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides the HID core functions.
- *
- * @verbatim
- *
- * ===================================================================
- * AUDIO Class Description
- * ===================================================================
- *
- *
- *
- *
- *
- *
- * @note In HS mode and when the DMA is used, all variables and data structures
- * dealing with the DMA during the transaction process should be 32-bit aligned.
- *
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_audio.h"
-#include "usbd_desc.h"
-#include "usbd_ctlreq.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_AUDIO
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_AUDIO_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_AUDIO_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_AUDIO_Private_Macros
- * @{
- */
-#define AUDIO_SAMPLE_FREQ(frq) (uint8_t)(frq), (uint8_t)((frq >> 8)), (uint8_t)((frq >> 16))
-
-#define AUDIO_PACKET_SZE(frq) (uint8_t)(((frq * 2 * 2)/1000) & 0xFF), \
- (uint8_t)((((frq * 2 * 2)/1000) >> 8) & 0xFF)
-
-/**
- * @}
- */
-
-
-
-
-/** @defgroup USBD_AUDIO_Private_FunctionPrototypes
- * @{
- */
-
-
-static uint8_t USBD_AUDIO_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_AUDIO_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_AUDIO_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-static uint8_t *USBD_AUDIO_GetCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_AUDIO_GetDeviceQualifierDesc (uint16_t *length);
-
-static uint8_t USBD_AUDIO_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_AUDIO_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_AUDIO_EP0_RxReady (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_AUDIO_EP0_TxReady (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_AUDIO_SOF (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_AUDIO_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_AUDIO_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static void AUDIO_REQ_GetCurrent(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
-
-static void AUDIO_REQ_SetCurrent(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
-
-/**
- * @}
- */
-
-/** @defgroup USBD_AUDIO_Private_Variables
- * @{
- */
-
-USBD_ClassTypeDef USBD_AUDIO =
-{
- USBD_AUDIO_Init,
- USBD_AUDIO_DeInit,
- USBD_AUDIO_Setup,
- USBD_AUDIO_EP0_TxReady,
- USBD_AUDIO_EP0_RxReady,
- USBD_AUDIO_DataIn,
- USBD_AUDIO_DataOut,
- USBD_AUDIO_SOF,
- USBD_AUDIO_IsoINIncomplete,
- USBD_AUDIO_IsoOutIncomplete,
- USBD_AUDIO_GetCfgDesc,
- USBD_AUDIO_GetCfgDesc,
- USBD_AUDIO_GetCfgDesc,
- USBD_AUDIO_GetDeviceQualifierDesc,
-};
-
-/* USB AUDIO device Configuration Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_AUDIO_CfgDesc[USB_AUDIO_CONFIG_DESC_SIZ] __ALIGN_END =
-{
- /* Configuration 1 */
- 0x09, /* bLength */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType */
- LOBYTE(USB_AUDIO_CONFIG_DESC_SIZ), /* wTotalLength 109 bytes*/
- HIBYTE(USB_AUDIO_CONFIG_DESC_SIZ),
- 0x02, /* bNumInterfaces */
- 0x01, /* bConfigurationValue */
- 0x00, /* iConfiguration */
- 0xC0, /* bmAttributes BUS Powred*/
- 0x32, /* bMaxPower = 100 mA*/
- /* 09 byte*/
-
- /* USB Speaker Standard interface descriptor */
- AUDIO_INTERFACE_DESC_SIZE, /* bLength */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType */
- 0x00, /* bInterfaceNumber */
- 0x00, /* bAlternateSetting */
- 0x00, /* bNumEndpoints */
- USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
- AUDIO_SUBCLASS_AUDIOCONTROL, /* bInterfaceSubClass */
- AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
- 0x00, /* iInterface */
- /* 09 byte*/
-
- /* USB Speaker Class-specific AC Interface Descriptor */
- AUDIO_INTERFACE_DESC_SIZE, /* bLength */
- AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
- AUDIO_CONTROL_HEADER, /* bDescriptorSubtype */
- 0x00, /* 1.00 */ /* bcdADC */
- 0x01,
- 0x27, /* wTotalLength = 39*/
- 0x00,
- 0x01, /* bInCollection */
- 0x01, /* baInterfaceNr */
- /* 09 byte*/
-
- /* USB Speaker Input Terminal Descriptor */
- AUDIO_INPUT_TERMINAL_DESC_SIZE, /* bLength */
- AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
- AUDIO_CONTROL_INPUT_TERMINAL, /* bDescriptorSubtype */
- 0x01, /* bTerminalID */
- 0x01, /* wTerminalType AUDIO_TERMINAL_USB_STREAMING 0x0101 */
- 0x01,
- 0x00, /* bAssocTerminal */
- 0x01, /* bNrChannels */
- 0x00, /* wChannelConfig 0x0000 Mono */
- 0x00,
- 0x00, /* iChannelNames */
- 0x00, /* iTerminal */
- /* 12 byte*/
-
- /* USB Speaker Audio Feature Unit Descriptor */
- 0x09, /* bLength */
- AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
- AUDIO_CONTROL_FEATURE_UNIT, /* bDescriptorSubtype */
- AUDIO_OUT_STREAMING_CTRL, /* bUnitID */
- 0x01, /* bSourceID */
- 0x01, /* bControlSize */
- AUDIO_CONTROL_MUTE,// |AUDIO_CONTROL_VOLUME, /* bmaControls(0) */
- 0, /* bmaControls(1) */
- 0x00, /* iTerminal */
- /* 09 byte*/
-
- /*USB Speaker Output Terminal Descriptor */
- 0x09, /* bLength */
- AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
- AUDIO_CONTROL_OUTPUT_TERMINAL, /* bDescriptorSubtype */
- 0x03, /* bTerminalID */
- 0x01, /* wTerminalType 0x0301*/
- 0x03,
- 0x00, /* bAssocTerminal */
- 0x02, /* bSourceID */
- 0x00, /* iTerminal */
- /* 09 byte*/
-
- /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Zero Bandwith */
- /* Interface 1, Alternate Setting 0 */
- AUDIO_INTERFACE_DESC_SIZE, /* bLength */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType */
- 0x01, /* bInterfaceNumber */
- 0x00, /* bAlternateSetting */
- 0x00, /* bNumEndpoints */
- USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
- AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
- AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
- 0x00, /* iInterface */
- /* 09 byte*/
-
- /* USB Speaker Standard AS Interface Descriptor - Audio Streaming Operational */
- /* Interface 1, Alternate Setting 1 */
- AUDIO_INTERFACE_DESC_SIZE, /* bLength */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType */
- 0x01, /* bInterfaceNumber */
- 0x01, /* bAlternateSetting */
- 0x01, /* bNumEndpoints */
- USB_DEVICE_CLASS_AUDIO, /* bInterfaceClass */
- AUDIO_SUBCLASS_AUDIOSTREAMING, /* bInterfaceSubClass */
- AUDIO_PROTOCOL_UNDEFINED, /* bInterfaceProtocol */
- 0x00, /* iInterface */
- /* 09 byte*/
-
- /* USB Speaker Audio Streaming Interface Descriptor */
- AUDIO_STREAMING_INTERFACE_DESC_SIZE, /* bLength */
- AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
- AUDIO_STREAMING_GENERAL, /* bDescriptorSubtype */
- 0x01, /* bTerminalLink */
- 0x01, /* bDelay */
- 0x01, /* wFormatTag AUDIO_FORMAT_PCM 0x0001*/
- 0x00,
- /* 07 byte*/
-
- /* USB Speaker Audio Type III Format Interface Descriptor */
- 0x0B, /* bLength */
- AUDIO_INTERFACE_DESCRIPTOR_TYPE, /* bDescriptorType */
- AUDIO_STREAMING_FORMAT_TYPE, /* bDescriptorSubtype */
- AUDIO_FORMAT_TYPE_III, /* bFormatType */
- 0x02, /* bNrChannels */
- 0x02, /* bSubFrameSize : 2 Bytes per frame (16bits) */
- 16, /* bBitResolution (16-bits per sample) */
- 0x01, /* bSamFreqType only one frequency supported */
- AUDIO_SAMPLE_FREQ(USBD_AUDIO_FREQ), /* Audio sampling frequency coded on 3 bytes */
- /* 11 byte*/
-
- /* Endpoint 1 - Standard Descriptor */
- AUDIO_STANDARD_ENDPOINT_DESC_SIZE, /* bLength */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType */
- AUDIO_OUT_EP, /* bEndpointAddress 1 out endpoint*/
- USBD_EP_TYPE_ISOC, /* bmAttributes */
- AUDIO_PACKET_SZE(USBD_AUDIO_FREQ), /* wMaxPacketSize in Bytes (Freq(Samples)*2(Stereo)*2(HalfWord)) */
- 0x01, /* bInterval */
- 0x00, /* bRefresh */
- 0x00, /* bSynchAddress */
- /* 09 byte*/
-
- /* Endpoint - Audio Streaming Descriptor*/
- AUDIO_STREAMING_ENDPOINT_DESC_SIZE, /* bLength */
- AUDIO_ENDPOINT_DESCRIPTOR_TYPE, /* bDescriptorType */
- AUDIO_ENDPOINT_GENERAL, /* bDescriptor */
- 0x00, /* bmAttributes */
- 0x00, /* bLockDelayUnits */
- 0x00, /* wLockDelay */
- 0x00,
- /* 07 byte*/
-} ;
-
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_AUDIO_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END=
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x01,
- 0x00,
-};
-
-/**
- * @}
- */
-
-/** @defgroup USBD_AUDIO_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_AUDIO_Init
- * Initialize the AUDIO interface
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_AUDIO_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- USBD_AUDIO_HandleTypeDef *haudio;
-
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- AUDIO_OUT_EP,
- USBD_EP_TYPE_ISOC,
- AUDIO_OUT_PACKET);
-
- /* Allocate Audio structure */
- pdev->pClassData = USBD_malloc(sizeof (USBD_AUDIO_HandleTypeDef));
-
- if(pdev->pClassData == NULL)
- {
- return USBD_FAIL;
- }
- else
- {
- haudio = pdev->pClassData;
- haudio->alt_setting = 0;
- haudio->offset = AUDIO_OFFSET_UNKNOWN;
- haudio->wr_ptr = 0;
- haudio->rd_ptr = 0;
- haudio->rd_enable = 0;
-
- /* Initialize the Audio output Hardware layer */
- if (((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->Init(USBD_AUDIO_FREQ, AUDIO_DEFAULT_VOLUME, 0) != USBD_OK)
- {
- return USBD_FAIL;
- }
-
- /* Prepare Out endpoint to receive 1st packet */
- USBD_LL_PrepareReceive(pdev,
- AUDIO_OUT_EP,
- haudio->buffer,
- AUDIO_OUT_PACKET);
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_AUDIO_Init
- * DeInitialize the AUDIO layer
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_AUDIO_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
-
- /* Open EP OUT */
- USBD_LL_CloseEP(pdev,
- AUDIO_OUT_EP);
-
- /* DeInit physical Interface components */
- if(pdev->pClassData != NULL)
- {
- ((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->DeInit(0);
- USBD_free(pdev->pClassData);
- pdev->pClassData = NULL;
- }
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_AUDIO_Setup
- * Handle the AUDIO specific requests
- * @param pdev: instance
- * @param req: usb requests
- * @retval status
- */
-static uint8_t USBD_AUDIO_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req)
-{
- USBD_AUDIO_HandleTypeDef *haudio;
- uint16_t len;
- uint8_t *pbuf;
- uint8_t ret = USBD_OK;
- haudio = pdev->pClassData;
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
- case USB_REQ_TYPE_CLASS :
- switch (req->bRequest)
- {
- case AUDIO_REQ_GET_CUR:
- AUDIO_REQ_GetCurrent(pdev, req);
- break;
-
- case AUDIO_REQ_SET_CUR:
- AUDIO_REQ_SetCurrent(pdev, req);
- break;
-
- default:
- USBD_CtlError (pdev, req);
- ret = USBD_FAIL;
- }
- break;
-
- case USB_REQ_TYPE_STANDARD:
- switch (req->bRequest)
- {
- case USB_REQ_GET_DESCRIPTOR:
- if( (req->wValue >> 8) == AUDIO_DESCRIPTOR_TYPE)
- {
- pbuf = USBD_AUDIO_CfgDesc + 18;
- len = MIN(USB_AUDIO_DESC_SIZ , req->wLength);
-
-
- USBD_CtlSendData (pdev,
- pbuf,
- len);
- }
- break;
-
- case USB_REQ_GET_INTERFACE :
- USBD_CtlSendData (pdev,
- (uint8_t *)haudio->alt_setting,
- 1);
- break;
-
- case USB_REQ_SET_INTERFACE :
- if ((uint8_t)(req->wValue) <= USBD_MAX_NUM_INTERFACES)
- {
- haudio->alt_setting = (uint8_t)(req->wValue);
- }
- else
- {
- /* Call the error management function (command will be nacked */
- USBD_CtlError (pdev, req);
- }
- break;
-
- default:
- USBD_CtlError (pdev, req);
- ret = USBD_FAIL;
- }
- }
- return ret;
-}
-
-
-/**
- * @brief USBD_AUDIO_GetCfgDesc
- * return configuration descriptor
- * @param speed : current device speed
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_AUDIO_GetCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_AUDIO_CfgDesc);
- return USBD_AUDIO_CfgDesc;
-}
-
-/**
- * @brief USBD_AUDIO_DataIn
- * handle data IN Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_AUDIO_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
-
- /* Only OUT data are processed */
- return USBD_OK;
-}
-
-/**
- * @brief USBD_AUDIO_EP0_RxReady
- * handle EP0 Rx Ready event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_AUDIO_EP0_RxReady (USBD_HandleTypeDef *pdev)
-{
- USBD_AUDIO_HandleTypeDef *haudio;
- haudio = pdev->pClassData;
-
- if (haudio->control.cmd == AUDIO_REQ_SET_CUR)
- {/* In this driver, to simplify code, only SET_CUR request is managed */
-
- if (haudio->control.unit == AUDIO_OUT_STREAMING_CTRL)
- {
- ((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->MuteCtl(haudio->control.data[0]);
- haudio->control.cmd = 0;
- haudio->control.len = 0;
- }
- }
-
- return USBD_OK;
-}
-/**
- * @brief USBD_AUDIO_EP0_TxReady
- * handle EP0 TRx Ready event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_AUDIO_EP0_TxReady (USBD_HandleTypeDef *pdev)
-{
- /* Only OUT control data are processed */
- return USBD_OK;
-}
-/**
- * @brief USBD_AUDIO_SOF
- * handle SOF event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_AUDIO_SOF (USBD_HandleTypeDef *pdev)
-{
- return USBD_OK;
-}
-
-/**
- * @brief USBD_AUDIO_SOF
- * handle SOF event
- * @param pdev: device instance
- * @retval status
- */
-void USBD_AUDIO_Sync (USBD_HandleTypeDef *pdev, AUDIO_OffsetTypeDef offset)
-{
- int8_t shift = 0;
- USBD_AUDIO_HandleTypeDef *haudio;
- haudio = pdev->pClassData;
-
- haudio->offset = offset;
-
-
- if(haudio->rd_enable == 1)
- {
- haudio->rd_ptr += AUDIO_TOTAL_BUF_SIZE/2;
-
- if (haudio->rd_ptr == AUDIO_TOTAL_BUF_SIZE)
- {
- /* roll back */
- haudio->rd_ptr = 0;
- }
- }
-
- if(haudio->rd_ptr > haudio->wr_ptr)
- {
- if((haudio->rd_ptr - haudio->wr_ptr) < AUDIO_OUT_PACKET)
- {
- shift = -4;
- }
- else if((haudio->rd_ptr - haudio->wr_ptr) > (AUDIO_TOTAL_BUF_SIZE - AUDIO_OUT_PACKET))
- {
- shift = 4;
- }
-
- }
- else
- {
- if((haudio->wr_ptr - haudio->rd_ptr) < AUDIO_OUT_PACKET)
- {
- shift = 4;
- }
- else if((haudio->wr_ptr - haudio->rd_ptr) > (AUDIO_TOTAL_BUF_SIZE - AUDIO_OUT_PACKET))
- {
- shift = -4;
- }
- }
-
- if(haudio->offset == AUDIO_OFFSET_FULL)
- {
- ((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->AudioCmd(&haudio->buffer[0],
- AUDIO_TOTAL_BUF_SIZE/2 - shift,
- AUDIO_CMD_PLAY);
- haudio->offset = AUDIO_OFFSET_NONE;
- }
- else if (haudio->offset == AUDIO_OFFSET_HALF)
- {
-
- ((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->AudioCmd(&haudio->buffer[AUDIO_TOTAL_BUF_SIZE/2],
- AUDIO_TOTAL_BUF_SIZE/2 - shift,
- AUDIO_CMD_PLAY);
- haudio->offset = AUDIO_OFFSET_NONE;
-
- }
-}
-/**
- * @brief USBD_AUDIO_IsoINIncomplete
- * handle data ISO IN Incomplete event
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_AUDIO_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_AUDIO_IsoOutIncomplete
- * handle data ISO OUT Incomplete event
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_AUDIO_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_AUDIO_DataOut
- * handle data OUT Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_AUDIO_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- USBD_AUDIO_HandleTypeDef *haudio;
- haudio = pdev->pClassData;
-
- if (epnum == AUDIO_OUT_EP)
- {
- /* Increment the Buffer pointer or roll it back when all buffers are full */
-
- haudio->wr_ptr += AUDIO_OUT_PACKET;
-
- if (haudio->wr_ptr == AUDIO_TOTAL_BUF_SIZE)
- {/* All buffers are full: roll back */
- haudio->wr_ptr = 0;
-
- if(haudio->offset == AUDIO_OFFSET_UNKNOWN)
- {
- ((USBD_AUDIO_ItfTypeDef *)pdev->pUserData)->AudioCmd(&haudio->buffer[0],
- AUDIO_TOTAL_BUF_SIZE/2,
- AUDIO_CMD_START);
- haudio->offset = AUDIO_OFFSET_NONE;
- }
- }
-
- if(haudio->rd_enable == 0)
- {
- if (haudio->wr_ptr == (AUDIO_TOTAL_BUF_SIZE / 2))
- {
- haudio->rd_enable = 1;
- }
- }
-
- /* Prepare Out endpoint to receive next audio packet */
- USBD_LL_PrepareReceive(pdev,
- AUDIO_OUT_EP,
- &haudio->buffer[haudio->wr_ptr],
- AUDIO_OUT_PACKET);
-
- }
-
- return USBD_OK;
-}
-
-/**
- * @brief AUDIO_Req_GetCurrent
- * Handles the GET_CUR Audio control request.
- * @param pdev: instance
- * @param req: setup class request
- * @retval status
- */
-static void AUDIO_REQ_GetCurrent(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
-{
- USBD_AUDIO_HandleTypeDef *haudio;
- haudio = pdev->pClassData;
-
- memset(haudio->control.data, 0, 64);
- /* Send the current mute state */
- USBD_CtlSendData (pdev,
- haudio->control.data,
- req->wLength);
-}
-
-/**
- * @brief AUDIO_Req_SetCurrent
- * Handles the SET_CUR Audio control request.
- * @param pdev: instance
- * @param req: setup class request
- * @retval status
- */
-static void AUDIO_REQ_SetCurrent(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
-{
- USBD_AUDIO_HandleTypeDef *haudio;
- haudio = pdev->pClassData;
-
- if (req->wLength)
- {
- /* Prepare the reception of the buffer over EP0 */
- USBD_CtlPrepareRx (pdev,
- haudio->control.data,
- req->wLength);
-
- haudio->control.cmd = AUDIO_REQ_SET_CUR; /* Set the request value */
- haudio->control.len = req->wLength; /* Set the request data length */
- haudio->control.unit = HIBYTE(req->wIndex); /* Set the request target unit */
- }
-}
-
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-static uint8_t *USBD_AUDIO_GetDeviceQualifierDesc (uint16_t *length)
-{
- *length = sizeof (USBD_AUDIO_DeviceQualifierDesc);
- return USBD_AUDIO_DeviceQualifierDesc;
-}
-
-/**
-* @brief USBD_AUDIO_RegisterInterface
-* @param fops: Audio interface callback
-* @retval status
-*/
-uint8_t USBD_AUDIO_RegisterInterface (USBD_HandleTypeDef *pdev,
- USBD_AUDIO_ItfTypeDef *fops)
-{
- if(fops != NULL)
- {
- pdev->pUserData= fops;
- }
- return 0;
-}
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/AUDIO/Src/usbd_audio_if_template.c b/stmhal/usbdev/class/AUDIO/Src/usbd_audio_if_template.c
deleted file mode 100644
index 63ac8fed03..0000000000
--- a/stmhal/usbdev/class/AUDIO/Src/usbd_audio_if_template.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_cdc_if_template.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief Generic media access Layer.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_audio_if_template.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_AUDIO
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_AUDIO_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_AUDIO_Private_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_AUDIO_Private_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_AUDIO_Private_FunctionPrototypes
- * @{
- */
-
-static int8_t TEMPLATE_Init (uint32_t AudioFreq, uint32_t Volume, uint32_t options);
-static int8_t TEMPLATE_DeInit (uint32_t options);
-static int8_t TEMPLATE_AudioCmd (uint8_t* pbuf, uint32_t size, uint8_t cmd);
-static int8_t TEMPLATE_VolumeCtl (uint8_t vol);
-static int8_t TEMPLATE_MuteCtl (uint8_t cmd);
-static int8_t TEMPLATE_PeriodicTC (uint8_t cmd);
-static int8_t TEMPLATE_GetState (void);
-
-USBD_AUDIO_ItfTypeDef USBD_AUDIO_Template_fops =
-{
- TEMPLATE_Init,
- TEMPLATE_DeInit,
- TEMPLATE_AudioCmd,
- TEMPLATE_VolumeCtl,
- TEMPLATE_MuteCtl,
- TEMPLATE_PeriodicTC,
- TEMPLATE_GetState,
-};
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief TEMPLATE_Init
- * Initializes the AUDIO media low layer
- * @param None
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_Init(uint32_t AudioFreq, uint32_t Volume, uint32_t options)
-{
- /*
- Add your initialization code here
- */
- return (0);
-}
-
-/**
- * @brief TEMPLATE_DeInit
- * DeInitializes the AUDIO media low layer
- * @param None
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_DeInit(uint32_t options)
-{
- /*
- Add your deinitialization code here
- */
- return (0);
-}
-
-
-/**
- * @brief TEMPLATE_AudioCmd
- * AUDIO command handler
- * @param Buf: Buffer of data to be sent
- * @param size: Number of data to be sent (in bytes)
- * @param cmd: command opcode
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_AudioCmd (uint8_t* pbuf, uint32_t size, uint8_t cmd)
-{
-
- return (0);
-}
-
-/**
- * @brief TEMPLATE_VolumeCtl
- * @param vol: volume level (0..100)
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_VolumeCtl (uint8_t vol)
-{
-
- return (0);
-}
-
-/**
- * @brief TEMPLATE_MuteCtl
- * @param cmd: vmute command
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_MuteCtl (uint8_t cmd)
-{
-
- return (0);
-}
-
-/**
- * @brief TEMPLATE_PeriodicTC
- * @param cmd
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_PeriodicTC (uint8_t cmd)
-{
-
- return (0);
-}
-
-/**
- * @brief TEMPLATE_GetState
- * @param None
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_GetState (void)
-{
-
- return (0);
-}
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/CustomHID/Inc/usbd_customhid.h b/stmhal/usbdev/class/CustomHID/Inc/usbd_customhid.h
deleted file mode 100644
index 91ff70630e..0000000000
--- a/stmhal/usbdev/class/CustomHID/Inc/usbd_customhid.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_hid_core.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_hid_core.c file.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-
-#ifndef __USB_CUSTOM_HID_CORE_H_
-#define __USB_CUSTOM_HID_CORE_H_
-
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_CUSTOM_HID
- * @brief This file is the Header file for USBD_msc.c
- * @{
- */
-
-
-/** @defgroup USBD_CUSTOM_HID_Exported_Defines
- * @{
- */
-#define CUSTOM_HID_EPIN_ADDR 0x81
-#define CUSTOM_HID_EPIN_SIZE 0x02
-
-#define CUSTOM_HID_EPOUT_ADDR 0x01
-#define CUSTOM_HID_EPOUT_SIZE 0x02
-
-
-
-#define USB_CUSTOM_HID_CONFIG_DESC_SIZ 41
-#define USB_CUSTOM_HID_DESC_SIZ 9
-#define CUSTOM_HID_REPORT_DESC_SIZE 163
-
-#define CUSTOM_HID_DESCRIPTOR_TYPE 0x21
-#define CUSTOM_HID_REPORT_DESC 0x22
-
-
-#define CUSTOM_HID_REQ_SET_PROTOCOL 0x0B
-#define CUSTOM_HID_REQ_GET_PROTOCOL 0x03
-
-#define CUSTOM_HID_REQ_SET_IDLE 0x0A
-#define CUSTOM_HID_REQ_GET_IDLE 0x02
-
-#define CUSTOM_HID_REQ_SET_REPORT 0x09
-#define CUSTOM_HID_REQ_GET_REPORT 0x01
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_TypesDefinitions
- * @{
- */
-typedef enum
-{
- CUSTOM_HID_IDLE = 0,
- CUSTOM_HID_BUSY,
-}
-CUSTOM_HID_StateTypeDef;
-
-
-typedef struct
-{
- uint32_t Protocol;
- uint32_t IdleState;
- uint32_t AltSetting;
- CUSTOM_HID_StateTypeDef state;
-}
-USBD_CUSTOM_HID_HandleTypeDef;
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_CORE_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CORE_Exported_Variables
- * @{
- */
-
-extern USBD_ClassTypeDef USBD_CUSTOM_HID;
-/**
- * @}
- */
-
-/** @defgroup USB_CORE_Exported_Functions
- * @{
- */
-uint8_t USBD_CUSTOM_HID_SendReport (USBD_HandleTypeDef *pdev,
- uint8_t *report,
- uint16_t len);
-void USBD_HID_DataOutCallback(USBD_HandleTypeDef *pdev, uint8_t epnum);
-void USBD_HID_EP0_DataOutCallback(USBD_HandleTypeDef *pdev);
-/**
- * @}
- */
-
-#endif // __USB_CUSTOM_HID_CORE_H_
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/CustomHID/Src/usbd_customhid.c b/stmhal/usbdev/class/CustomHID/Src/usbd_customhid.c
deleted file mode 100644
index 358f2b7d2c..0000000000
--- a/stmhal/usbdev/class/CustomHID/Src/usbd_customhid.c
+++ /dev/null
@@ -1,638 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_hid.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides the CUSTOM_HID core functions.
- *
- * @verbatim
- *
- * ===================================================================
- * CUSTOM_HID Class Description
- * ===================================================================
- * This module manages the CUSTOM_HID class V1.11 following the "Device Class Definition
- * for Human Interface Devices (CUSTOM_HID) Version 1.11 Jun 27, 2001".
- * This driver implements the following aspects of the specification:
- * - The Boot Interface Subclass
- * - The Mouse protocol
- * - Usage Page : Generic Desktop
- * - Usage : Joystick)
- * - Collection : Application
- *
- * @note In HS mode and when the DMA is used, all variables and data structures
- * dealing with the DMA during the transaction process should be 32-bit aligned.
- *
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_customhid.h"
-#include "usbd_desc.h"
-#include "usbd_ctlreq.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_CUSTOM_HID
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_CUSTOM_HID_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CUSTOM_HID_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CUSTOM_HID_Private_Macros
- * @{
- */
-/**
- * @}
- */
-uint8_t Report_buf[2];
-extern uint8_t PrevXferDone;
-uint32_t flag = 0;
-uint8_t USBD_CUSTOM_HID_Report_ID=0;
-/** @defgroup USBD_CUSTOM_HID_Private_FunctionPrototypes
- * @{
- */
-
-
-static uint8_t USBD_CUSTOM_HID_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_CUSTOM_HID_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_CUSTOM_HID_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-static uint8_t *USBD_CUSTOM_HID_GetCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_CUSTOM_HID_GetDeviceQualifierDesc (uint16_t *length);
-
-static uint8_t USBD_CUSTOM_HID_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_CUSTOM_HID_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum);
-static uint8_t USBD_CUSTOM_HID_EP0_RxReady (USBD_HandleTypeDef *pdev);
-/**
- * @}
- */
-
-/** @defgroup USBD_CUSTOM_HID_Private_Variables
- * @{
- */
-
-USBD_ClassTypeDef USBD_CUSTOM_HID =
-{
- USBD_CUSTOM_HID_Init,
- USBD_CUSTOM_HID_DeInit,
- USBD_CUSTOM_HID_Setup,
- NULL, /*EP0_TxSent*/
- USBD_CUSTOM_HID_EP0_RxReady, /*EP0_RxReady*/ /* STATUS STAGE IN */
- USBD_CUSTOM_HID_DataIn, /*DataIn*/
- USBD_CUSTOM_HID_DataOut,
- NULL, /*SOF */
- NULL,
- NULL,
- USBD_CUSTOM_HID_GetCfgDesc,
- USBD_CUSTOM_HID_GetCfgDesc,
- USBD_CUSTOM_HID_GetCfgDesc,
- USBD_CUSTOM_HID_GetDeviceQualifierDesc,
-};
-
-/* USB CUSTOM_HID device Configuration Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_CUSTOM_HID_CfgDesc[USB_CUSTOM_HID_CONFIG_DESC_SIZ] __ALIGN_END =
-{
- 0x09, /* bLength: Configuration Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_CUSTOM_HID_CONFIG_DESC_SIZ,
- /* wTotalLength: Bytes returned */
- 0x00,
- 0x01, /*bNumInterfaces: 1 interface*/
- 0x01, /*bConfigurationValue: Configuration value*/
- 0x00, /*iConfiguration: Index of string descriptor describing
- the configuration*/
- 0xC0, /*bmAttributes: bus powered */
- 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/
-
- /************** Descriptor of CUSTOM HID interface ****************/
- /* 09 */
- 0x09, /*bLength: Interface Descriptor size*/
- USB_DESC_TYPE_INTERFACE,/*bDescriptorType: Interface descriptor type*/
- 0x00, /*bInterfaceNumber: Number of Interface*/
- 0x00, /*bAlternateSetting: Alternate setting*/
- 0x02, /*bNumEndpoints*/
- 0x03, /*bInterfaceClass: CUSTOM_HID*/
- 0x00, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
- 0x00, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
- 0, /*iInterface: Index of string descriptor*/
- /******************** Descriptor of CUSTOM_HID *************************/
- /* 18 */
- 0x09, /*bLength: CUSTOM_HID Descriptor size*/
- CUSTOM_HID_DESCRIPTOR_TYPE, /*bDescriptorType: CUSTOM_HID*/
- 0x11, /*bcdCUSTOM_HID: CUSTOM_HID Class Spec release number*/
- 0x01,
- 0x00, /*bCountryCode: Hardware target country*/
- 0x01, /*bNumDescriptors: Number of CUSTOM_HID class descriptors to follow*/
- 0x22, /*bDescriptorType*/
- CUSTOM_HID_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
- 0x00,
- /******************** Descriptor of Custom HID endpoints ********************/
- /* 27 */
- 0x07, /*bLength: Endpoint Descriptor size*/
- USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/
-
- CUSTOM_HID_EPIN_ADDR, /*bEndpointAddress: Endpoint Address (IN)*/
- 0x03, /*bmAttributes: Interrupt endpoint*/
- CUSTOM_HID_EPIN_SIZE, /*wMaxPacketSize: 2 Byte max */
- 0x00,
- 0x20, /*bInterval: Polling Interval (20 ms)*/
- /* 34 */
-
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: */
- CUSTOM_HID_EPOUT_ADDR, /*bEndpointAddress: Endpoint Address (OUT)*/
- 0x03, /* bmAttributes: Interrupt endpoint */
- CUSTOM_HID_EPOUT_SIZE, /* wMaxPacketSize: 2 Bytes max */
- 0x00,
- 0x20, /* bInterval: Polling Interval (20 ms) */
- /* 41 */
-} ;
-
-/* USB CUSTOM_HID device Configuration Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_CUSTOM_HID_Desc[USB_CUSTOM_HID_DESC_SIZ] __ALIGN_END =
-{
- /* 18 */
- 0x09, /*bLength: CUSTOM_HID Descriptor size*/
- CUSTOM_HID_DESCRIPTOR_TYPE, /*bDescriptorType: CUSTOM_HID*/
- 0x11, /*bcdCUSTOM_HID: CUSTOM_HID Class Spec release number*/
- 0x01,
- 0x00, /*bCountryCode: Hardware target country*/
- 0x01, /*bNumDescriptors: Number of CUSTOM_HID class descriptors to follow*/
- 0x22, /*bDescriptorType*/
- CUSTOM_HID_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
- 0x00,
-};
-
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_CUSTOM_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x01,
- 0x00,
-};
-
-
-__ALIGN_BEGIN static uint8_t CUSTOM_HID_ReportDesc[CUSTOM_HID_REPORT_DESC_SIZE] __ALIGN_END =
-{
- 0x06, 0xFF, 0x00, /* USAGE_PAGE (Vendor Page: 0xFF00) */
- 0x09, 0x01, /* USAGE (Demo Kit) */
- 0xa1, 0x01, /* COLLECTION (Application) */
- /* 6 */
-
- /* Led 1 */
- 0x85, 0x01, /* REPORT_ID (1) */
- 0x09, 0x01, /* USAGE (LED 1) */
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
- 0x75, 0x08, /* REPORT_SIZE (8) */
- 0x95, 0x01, /* REPORT_COUNT (1) */
- 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
-
- 0x85, 0x01, /* REPORT_ID (1) */
- 0x09, 0x01, /* USAGE (LED 1) */
- 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */
- /* 26 */
-
- /* Led 2 */
- 0x85, 0x02, /* REPORT_ID 2 */
- 0x09, 0x02, /* USAGE (LED 2) */
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
- 0x75, 0x08, /* REPORT_SIZE (8) */
- 0x95, 0x01, /* REPORT_COUNT (1) */
- 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
-
- 0x85, 0x02, /* REPORT_ID (2) */
- 0x09, 0x02, /* USAGE (LED 2) */
- 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */
- /* 46 */
-
- /* Led 3 */
- 0x85, 0x03, /* REPORT_ID (3) */
- 0x09, 0x03, /* USAGE (LED 3) */
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
- 0x75, 0x08, /* REPORT_SIZE (8) */
- 0x95, 0x01, /* REPORT_COUNT (1) */
- 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
-
- 0x85, 0x03, /* REPORT_ID (3) */
- 0x09, 0x03, /* USAGE (LED 3) */
- 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */
- /* 66 */
-
- /* Led 4 */
- 0x85, 0x04, /* REPORT_ID 4) */
- 0x09, 0x04, /* USAGE (LED 4) */
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
- 0x75, 0x08, /* REPORT_SIZE (8) */
- 0x95, 0x01, /* REPORT_COUNT (1) */
- 0xB1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
-
- 0x85, 0x04, /* REPORT_ID (4) */
- 0x09, 0x04, /* USAGE (LED 4) */
- 0x91, 0x82, /* OUTPUT (Data,Var,Abs,Vol) */
- /* 86 */
-
- /* key Push Button */
- 0x85, 0x05, /* REPORT_ID (5) */
- 0x09, 0x05, /* USAGE (Push Button) */
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
- 0x75, 0x01, /* REPORT_SIZE (1) */
- 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */
-
- 0x09, 0x05, /* USAGE (Push Button) */
- 0x75, 0x01, /* REPORT_SIZE (1) */
- 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
-
- 0x75, 0x07, /* REPORT_SIZE (7) */
- 0x81, 0x83, /* INPUT (Cnst,Var,Abs,Vol) */
- 0x85, 0x05, /* REPORT_ID (2) */
-
- 0x75, 0x07, /* REPORT_SIZE (7) */
- 0xb1, 0x83, /* FEATURE (Cnst,Var,Abs,Vol) */
- /* 114 */
-
- /* Tamper Push Button */
- 0x85, 0x06, /* REPORT_ID (6) */
- 0x09, 0x06, /* USAGE (Tamper Push Button) */
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
- 0x75, 0x01, /* REPORT_SIZE (1) */
- 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */
-
- 0x09, 0x06, /* USAGE (Tamper Push Button) */
- 0x75, 0x01, /* REPORT_SIZE (1) */
- 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
-
- 0x75, 0x07, /* REPORT_SIZE (7) */
- 0x81, 0x83, /* INPUT (Cnst,Var,Abs,Vol) */
- 0x85, 0x06, /* REPORT_ID (6) */
-
- 0x75, 0x07, /* REPORT_SIZE (7) */
- 0xb1, 0x83, /* FEATURE (Cnst,Var,Abs,Vol) */
- /* 142 */
-
- /* ADC IN */
- 0x85, 0x07, /* REPORT_ID (7) */
- 0x09, 0x07, /* USAGE (ADC IN) */
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */
- 0x26, 0xff, 0x00, /* LOGICAL_MAXIMUM (255) */
- 0x75, 0x08, /* REPORT_SIZE (8) */
- 0x81, 0x82, /* INPUT (Data,Var,Abs,Vol) */
- 0x85, 0x07, /* REPORT_ID (7) */
- 0x09, 0x07, /* USAGE (ADC in) */
- 0xb1, 0x82, /* FEATURE (Data,Var,Abs,Vol) */
- /* 161 */
-
- 0xc0 /* END_COLLECTION */
-};
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CUSTOM_HID_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_CUSTOM_HID_Init
- * Initialize the CUSTOM_HID interface
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_CUSTOM_HID_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- uint8_t ret = 0;
-
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- CUSTOM_HID_EPIN_ADDR,
- USBD_EP_TYPE_INTR,
- CUSTOM_HID_EPIN_SIZE);
-
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- CUSTOM_HID_EPOUT_ADDR,
- USBD_EP_TYPE_INTR,
- CUSTOM_HID_EPOUT_SIZE);
-
- pdev->pClassData = USBD_malloc(sizeof (USBD_CUSTOM_HID_HandleTypeDef));
-
- if(pdev->pClassData == NULL)
- {
- ret = 1;
- }
- else
- {
- ((USBD_CUSTOM_HID_HandleTypeDef *)pdev->pClassData)->state = CUSTOM_HID_IDLE;
- /* Prepare Out endpoint to receive 1st packet */
- USBD_LL_PrepareReceive(pdev, CUSTOM_HID_EPOUT_ADDR , Report_buf , 2);
- }
-
- return ret;
-}
-
-/**
- * @brief USBD_CUSTOM_HID_Init
- * DeInitialize the CUSTOM_HID layer
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_CUSTOM_HID_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- /* Close CUSTOM_HID EP IN */
- USBD_LL_CloseEP(pdev,
- CUSTOM_HID_EPIN_SIZE);
-
- /* Close CUSTOM_HID EP OUT */
- USBD_LL_CloseEP(pdev,
- CUSTOM_HID_EPOUT_SIZE);
-
- /* FRee allocated memory */
- if(pdev->pClassData != NULL)
- {
- USBD_free(pdev->pClassData);
- pdev->pClassData = NULL;
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CUSTOM_HID_Setup
- * Handle the CUSTOM_HID specific requests
- * @param pdev: instance
- * @param req: usb requests
- * @retval status
- */
-static uint8_t USBD_CUSTOM_HID_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req)
-{
- uint8_t USBD_CUSTOM_HID_Report_LENGTH=0;
- uint16_t len = 0;
- uint8_t *pbuf = NULL;
- USBD_CUSTOM_HID_HandleTypeDef *hhid = pdev->pClassData;
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
- case USB_REQ_TYPE_CLASS :
- switch (req->bRequest)
- {
-
-
- case CUSTOM_HID_REQ_SET_PROTOCOL:
- hhid->Protocol = (uint8_t)(req->wValue);
- break;
-
- case CUSTOM_HID_REQ_GET_PROTOCOL:
- USBD_CtlSendData (pdev,
- (uint8_t *)&hhid->Protocol,
- 1);
- break;
-
- case CUSTOM_HID_REQ_SET_IDLE:
- hhid->IdleState = (uint8_t)(req->wValue >> 8);
- break;
-
- case CUSTOM_HID_REQ_GET_IDLE:
- USBD_CtlSendData (pdev,
- (uint8_t *)&hhid->IdleState,
- 1);
- break;
-
- case CUSTOM_HID_REQ_SET_REPORT:
- flag = 1;
- USBD_CUSTOM_HID_Report_ID = (uint8_t)(req->wValue);
- USBD_CUSTOM_HID_Report_LENGTH = (uint8_t)(req->wLength);
- USBD_CtlPrepareRx (pdev, Report_buf, USBD_CUSTOM_HID_Report_LENGTH);
-
- break;
- default:
- USBD_CtlError (pdev, req);
- return USBD_FAIL;
- }
- break;
-
- case USB_REQ_TYPE_STANDARD:
- switch (req->bRequest)
- {
- case USB_REQ_GET_DESCRIPTOR:
- if( req->wValue >> 8 == CUSTOM_HID_REPORT_DESC)
- {
- len = MIN(CUSTOM_HID_REPORT_DESC_SIZE , req->wLength);
- pbuf = CUSTOM_HID_ReportDesc;
- }
- else if( req->wValue >> 8 == CUSTOM_HID_DESCRIPTOR_TYPE)
- {
- pbuf = USBD_CUSTOM_HID_Desc;
- len = MIN(USB_CUSTOM_HID_DESC_SIZ , req->wLength);
- }
-
- USBD_CtlSendData (pdev,
- pbuf,
- len);
-
- break;
-
- case USB_REQ_GET_INTERFACE :
- USBD_CtlSendData (pdev,
- (uint8_t *)&hhid->AltSetting,
- 1);
- break;
-
- case USB_REQ_SET_INTERFACE :
- hhid->AltSetting = (uint8_t)(req->wValue);
- break;
- }
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CUSTOM_HID_SendReport
- * Send CUSTOM_HID Report
- * @param pdev: device instance
- * @param buff: pointer to report
- * @retval status
- */
-uint8_t USBD_CUSTOM_HID_SendReport (USBD_HandleTypeDef *pdev,
- uint8_t *report,
- uint16_t len)
-{
- USBD_CUSTOM_HID_HandleTypeDef *hhid = pdev->pClassData;
-
- if (pdev->dev_state == USBD_STATE_CONFIGURED )
- {
- if(hhid->state == CUSTOM_HID_IDLE)
- {
- hhid->state = CUSTOM_HID_BUSY;
- USBD_LL_Transmit (pdev,
- CUSTOM_HID_EPIN_ADDR,
- report,
- len);
- }
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CUSTOM_HID_GetCfgDesc
- * return configuration descriptor
- * @param speed : current device speed
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_CUSTOM_HID_GetCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_CUSTOM_HID_CfgDesc);
- return USBD_CUSTOM_HID_CfgDesc;
-}
-
-/**
- * @brief USBD_CUSTOM_HID_DataIn
- * handle data IN Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_CUSTOM_HID_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
-
- /* Ensure that the FIFO is empty before a new transfer, this condition could
- be caused by a new transfer before the end of the previous transfer */
- ((USBD_CUSTOM_HID_HandleTypeDef *)pdev->pClassData)->state = CUSTOM_HID_IDLE;
-
- if (epnum == 1) PrevXferDone = 1;
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CUSTOM_HID_DataOut
- * handle data OUT Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_CUSTOM_HID_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- USBD_HID_DataOutCallback(pdev, epnum);
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CUSTOM_HID_EP0_RxReady
- * Handles control request data.
- * @param pdev: device instance
- * @retval status
- */
-uint8_t USBD_CUSTOM_HID_EP0_RxReady(USBD_HandleTypeDef *pdev)
-{
- USBD_HID_EP0_DataOutCallback(pdev);
- return USBD_OK;
-}
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-static uint8_t *USBD_CUSTOM_HID_GetDeviceQualifierDesc (uint16_t *length)
-{
- *length = sizeof (USBD_CUSTOM_HID_DeviceQualifierDesc);
- return USBD_CUSTOM_HID_DeviceQualifierDesc;
-}
-
-/**
- * @brief The function is a callback about HID OUT Data events
- * @param pdev: device instance
- * @param epnum: endpoint index
- */
-__weak void USBD_HID_DataOutCallback(USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
-
-}
-
-__weak void USBD_HID_EP0_DataOutCallback(USBD_HandleTypeDef *pdev)
-{
-
-}
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/DFU/Inc/usbd_dfu.h b/stmhal/usbdev/class/DFU/Inc/usbd_dfu.h
deleted file mode 100644
index 21d73a8dca..0000000000
--- a/stmhal/usbdev/class/DFU/Inc/usbd_dfu.h
+++ /dev/null
@@ -1,231 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_dfu_core.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_dfu_core.c file.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-
-#ifndef __USB_DFU_CORE_H_
-#define __USB_DFU_CORE_H_
-
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_DFU
- * @brief This file is the Header file for USBD_msc.c
- * @{
- */
-
-
-/** @defgroup USBD_DFU_Exported_Defines
- * @{
- */
-
-#define USB_DFU_CONFIG_DESC_SIZ (18 + (9 * USBD_DFU_MAX_ITF_NUM))
-#define USB_DFU_DESC_SIZ 9
-
-#define DFU_DESCRIPTOR_TYPE 0x21
-
-
-/**************************************************/
-/* DFU Requests DFU states */
-/**************************************************/
-#define APP_STATE_IDLE 0
-#define APP_STATE_DETACH 1
-#define DFU_STATE_IDLE 2
-#define DFU_STATE_DNLOAD_SYNC 3
-#define DFU_STATE_DNLOAD_BUSY 4
-#define DFU_STATE_DNLOAD_IDLE 5
-#define DFU_STATE_MANIFEST_SYNC 6
-#define DFU_STATE_MANIFEST 7
-#define DFU_STATE_MANIFEST_WAIT_RESET 8
-#define DFU_STATE_UPLOAD_IDLE 9
-#define DFU_STATE_ERROR 10
-
-/**************************************************/
-/* DFU errors */
-/**************************************************/
-
-#define DFU_ERROR_NONE 0x00
-#define DFU_ERROR_TARGET 0x01
-#define DFU_ERROR_FILE 0x02
-#define DFU_ERROR_WRITE 0x03
-#define DFU_ERROR_ERASE 0x04
-#define DFU_ERROR_CHECK_ERASED 0x05
-#define DFU_ERROR_PROG 0x06
-#define DFU_ERROR_VERIFY 0x07
-#define DFU_ERROR_ADDRESS 0x08
-#define DFU_ERROR_NOTDONE 0x09
-#define DFU_ERROR_FIRMWARE 0x0A
-#define DFU_ERROR_VENDOR 0x0B
-#define DFU_ERROR_USB 0x0C
-#define DFU_ERROR_POR 0x0D
-#define DFU_ERROR_UNKNOWN 0x0E
-#define DFU_ERROR_STALLEDPKT 0x0F
-
-/**************************************************/
-/* DFU Manifestation State */
-/**************************************************/
-
-#define DFU_MANIFEST_COMPLETE 0x00
-#define DFU_MANIFEST_IN_PROGRESS 0x01
-
-
-/**************************************************/
-/* Special Commands with Download Request */
-/**************************************************/
-
-#define DFU_CMD_GETCOMMANDS 0x00
-#define DFU_CMD_SETADDRESSPOINTER 0x21
-#define DFU_CMD_ERASE 0x41
-
-#define DFU_MEDIA_ERASE 0x00
-#define DFU_MEDIA_PROGRAM 0x01
-/**************************************************/
-/* Other defines */
-/**************************************************/
-/* Bit Detach capable = bit 3 in bmAttributes field */
-#define DFU_DETACH_MASK (uint8_t)(1 << 4)
-#define DFU_STATUS_DEPTH (6)
-
-typedef enum
-{
- DFU_DETACH = 0,
- DFU_DNLOAD ,
- DFU_UPLOAD,
- DFU_GETSTATUS,
- DFU_CLRSTATUS,
- DFU_GETSTATE,
- DFU_ABORT
-} DFU_RequestTypeDef;
-
-typedef void (*pFunction)(void);
-
-
-/********** Descriptor of DFU interface 0 Alternate setting n ****************/
-#define USBD_DFU_IF_DESC(n) 0x09, /* bLength: Interface Descriptor size */ \
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType */ \
- 0x00, /* bInterfaceNumber: Number of Interface */ \
- (n), /* bAlternateSetting: Alternate setting */ \
- 0x00, /* bNumEndpoints*/ \
- 0xFE, /* bInterfaceClass: Application Specific Class Code */ \
- 0x01, /* bInterfaceSubClass : Device Firmware Upgrade Code */ \
- 0x02, /* nInterfaceProtocol: DFU mode protocol */ \
- USBD_IDX_INTERFACE_STR + (n) + 1 /* iInterface: Index of string descriptor */ \
-
- /* 18 */
-
-#define TRANSFER_SIZE_BYTES(size) ((uint8_t)(size)), /* XFERSIZEB0 */\
- ((uint8_t)(size >> 8)) /* XFERSIZEB1 */
-
-
-#define IS_PROTECTED_AREA(add) (uint8_t)(((add >= 0x08000000) && (add < (APP_DEFAULT_ADD)))? 1:0)
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_TypesDefinitions
- * @{
- */
-
-typedef struct
-{
- union
- {
- uint32_t d32[USBD_DFU_XFER_SIZE/4];
- uint8_t d8[USBD_DFU_XFER_SIZE];
- }buffer;
-
- uint8_t dev_state;
- uint8_t dev_status[DFU_STATUS_DEPTH];
- uint8_t manif_state;
-
- uint32_t wblock_num;
- uint32_t wlength;
- uint32_t data_ptr;
- __IO uint32_t alt_setting;
-
-}
-USBD_DFU_HandleTypeDef;
-
-
-typedef struct
-{
- const uint8_t* pStrDesc;
- uint16_t (* Init) (void);
- uint16_t (* DeInit) (void);
- uint16_t (* Erase) (uint32_t Add);
- uint16_t (* Write) (uint8_t *src, uint8_t *dest, uint32_t Len);
- uint8_t* (* Read) (uint8_t *src, uint8_t *dest, uint32_t Len);
- uint16_t (* GetStatus)(uint32_t Add, uint8_t cmd, uint8_t *buff);
-}
-USBD_DFU_MediaTypeDef;
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_CORE_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CORE_Exported_Variables
- * @{
- */
-
-extern USBD_ClassTypeDef USBD_DFU;
-/**
- * @}
- */
-
-/** @defgroup USB_CORE_Exported_Functions
- * @{
- */
-uint8_t USBD_DFU_RegisterMedia (USBD_HandleTypeDef *pdev,
- USBD_DFU_MediaTypeDef *fops);
-/**
- * @}
- */
-
-#endif // __USB_DFU_CORE_H_
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/DFU/Inc/usbd_dfu_media_template.h b/stmhal/usbdev/class/DFU/Inc/usbd_dfu_media_template.h
deleted file mode 100644
index a2bf65968e..0000000000
--- a/stmhal/usbdev/class/DFU/Inc/usbd_dfu_media_template.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_dfu_media_template.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_dfu_media_template.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef __USBD_DFU_MEDIA_H_
-#define __USBD_DFU_MEDIA_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_dfu.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_MEDIA
- * @brief header file for the USBD_MEDIA.c file
- * @{
- */
-
-/** @defgroup USBD_MEDIA_Exported_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_MEDIA_Exported_Types
- * @{
- */
-
-
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_MEDIA_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_MEDIA_Exported_Variables
- * @{
- */
-extern USBD_DFU_MediaTypeDef USBD_DFU_MEDIA_Template_fops;
-/**
- * @}
- */
-
-/** @defgroup USBD_MEDIA_Exported_FunctionsPrototype
- * @{
- */
-
-
-/**
- * @}
- */
-
-#endif /* __USBD_DFU_MEDIA_H_ */
-
-/**
- * @}
- */
-
-/**
-* @}
-*/
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/DFU/Src/usbd_dfu.c b/stmhal/usbdev/class/DFU/Src/usbd_dfu.c
deleted file mode 100644
index 14de9dff8b..0000000000
--- a/stmhal/usbdev/class/DFU/Src/usbd_dfu.c
+++ /dev/null
@@ -1,1095 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_dfu.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides the HID core functions.
- *
- * @verbatim
- *
- * ===================================================================
- * DFU Class Description
- * ===================================================================
- *
- *
- *
- *
- *
- *
- * @note In HS mode and when the DMA is used, all variables and data structures
- * dealing with the DMA during the transaction process should be 32-bit aligned.
- *
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_dfu.h"
-#include "usbd_desc.h"
-#include "usbd_ctlreq.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_DFU
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_DFU_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_DFU_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_DFU_Private_Macros
- * @{
- */
-#define DFU_SAMPLE_FREQ(frq) (uint8_t)(frq), (uint8_t)((frq >> 8)), (uint8_t)((frq >> 16))
-
-#define DFU_PACKET_SZE(frq) (uint8_t)(((frq * 2 * 2)/1000) & 0xFF), \
- (uint8_t)((((frq * 2 * 2)/1000) >> 8) & 0xFF)
-
-/**
- * @}
- */
-
-
-
-
-/** @defgroup USBD_DFU_Private_FunctionPrototypes
- * @{
- */
-
-
-static uint8_t USBD_DFU_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_DFU_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_DFU_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-static uint8_t *USBD_DFU_GetCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_DFU_GetDeviceQualifierDesc (uint16_t *length);
-
-static uint8_t USBD_DFU_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_DFU_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_DFU_EP0_RxReady (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_DFU_EP0_TxReady (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_DFU_SOF (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_DFU_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_DFU_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-#if (USBD_SUPPORT_USER_STRING == 1)
-static uint8_t* USBD_DFU_GetUsrStringDesc ( USBD_HandleTypeDef *pdev, uint8_t index , uint16_t *length);
-#endif
-
-static void DFU_Detach (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
-
-static void DFU_Download (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
-
-static void DFU_Upload (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
-
-static void DFU_GetStatus (USBD_HandleTypeDef *pdev);
-
-static void DFU_ClearStatus (USBD_HandleTypeDef *pdev);
-
-static void DFU_GetState (USBD_HandleTypeDef *pdev);
-
-static void DFU_Abort (USBD_HandleTypeDef *pdev);
-
-static void DFU_Leave (USBD_HandleTypeDef *pdev);
-
-
-/**
- * @}
- */
-
-/** @defgroup USBD_DFU_Private_Variables
- * @{
- */
-
-USBD_ClassTypeDef USBD_DFU =
-{
- USBD_DFU_Init,
- USBD_DFU_DeInit,
- USBD_DFU_Setup,
- USBD_DFU_EP0_TxReady,
- USBD_DFU_EP0_RxReady,
- USBD_DFU_DataIn,
- USBD_DFU_DataOut,
- USBD_DFU_SOF,
- USBD_DFU_IsoINIncomplete,
- USBD_DFU_IsoOutIncomplete,
- USBD_DFU_GetCfgDesc,
- USBD_DFU_GetCfgDesc,
- USBD_DFU_GetCfgDesc,
- USBD_DFU_GetDeviceQualifierDesc,
-#if (USBD_SUPPORT_USER_STRING == 1)
- USBD_DFU_GetUsrStringDesc
-#endif
-};
-
-/* USB DFU device Configuration Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_DFU_CfgDesc[USB_DFU_CONFIG_DESC_SIZ] __ALIGN_END =
-{
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_DFU_CONFIG_DESC_SIZ,
- /* wTotalLength: Bytes returned */
- 0x00,
- 0x01, /*bNumInterfaces: 1 interface*/
- 0x01, /*bConfigurationValue: Configuration value*/
- 0x02, /*iConfiguration: Index of string descriptor describing the configuration*/
- 0xC0, /*bmAttributes: bus powered and Supprts Remote Wakeup */
- 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/
- /* 09 */
-
- /********** Descriptor of DFU interface 0 Alternate setting 0 **************/
- USBD_DFU_IF_DESC(0), /* This interface is mandatory for all devices */
-
-#if (USBD_DFU_MAX_ITF_NUM > 1)
- /********** Descriptor of DFU interface 0 Alternate setting 1 **************/
- USBD_DFU_IF_DESC(1),
-#endif /* (USBD_DFU_MAX_ITF_NUM > 1) */
-
-#if (USBD_DFU_MAX_ITF_NUM > 2)
- /********** Descriptor of DFU interface 0 Alternate setting 2 **************/
- USBD_DFU_IF_DESC(2),
-#endif /* (USBD_DFU_MAX_ITF_NUM > 2) */
-
-#if (USBD_DFU_MAX_ITF_NUM > 3)
- /********** Descriptor of DFU interface 0 Alternate setting 3 **************/
- USBD_DFU_IF_DESC(3),
-#endif /* (USBD_DFU_MAX_ITF_NUM > 3) */
-
-#if (USBD_DFU_MAX_ITF_NUM > 4)
- /********** Descriptor of DFU interface 0 Alternate setting 4 **************/
- USBD_DFU_IF_DESC(4),
-#endif /* (USBD_DFU_MAX_ITF_NUM > 4) */
-
-#if (USBD_DFU_MAX_ITF_NUM > 5)
- /********** Descriptor of DFU interface 0 Alternate setting 5 **************/
- USBD_DFU_IF_DESC(5),
-#endif /* (USBD_DFU_MAX_ITF_NUM > 5) */
-
-#if (USBD_DFU_MAX_ITF_NUM > 6)
-#error "ERROR: usbd_dfu_core.c: Modify the file to support more descriptors!"
-#endif /* (USBD_DFU_MAX_ITF_NUM > 6) */
-
- /******************** DFU Functional Descriptor********************/
- 0x09, /*blength = 9 Bytes*/
- DFU_DESCRIPTOR_TYPE, /* DFU Functional Descriptor*/
- 0x0B, /*bmAttribute
- bitCanDnload = 1 (bit 0)
- bitCanUpload = 1 (bit 1)
- bitManifestationTolerant = 0 (bit 2)
- bitWillDetach = 1 (bit 3)
- Reserved (bit4-6)
- bitAcceleratedST = 0 (bit 7)*/
- 0xFF, /*DetachTimeOut= 255 ms*/
- 0x00,
- /*WARNING: In DMA mode the multiple MPS packets feature is still not supported
- ==> In this case, when using DMA USBD_DFU_XFER_SIZE should be set to 64 in usbd_conf.h */
- TRANSFER_SIZE_BYTES(USBD_DFU_XFER_SIZE), /* TransferSize = 1024 Byte*/
- 0x1A, /* bcdDFUVersion*/
- 0x01
- /***********************************************************/
- /* 9*/
-};
-
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_DFU_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x01,
- 0x00,
-};
-
-/**
- * @}
- */
-
-/** @defgroup USBD_DFU_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_DFU_Init
- * Initialize the DFU interface
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_DFU_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- /* Allocate Audio structure */
- pdev->pClassData = USBD_malloc(sizeof (USBD_DFU_HandleTypeDef));
-
- if(pdev->pClassData == NULL)
- {
- return USBD_FAIL;
- }
- else
- {
- hdfu = pdev->pClassData;
-
- hdfu->alt_setting = 0;
- hdfu->data_ptr = USBD_DFU_APP_DEFAULT_ADD;
- hdfu->wblock_num = 0;
- hdfu->wlength = 0;
-
- hdfu->manif_state = DFU_MANIFEST_COMPLETE;
- hdfu->dev_state = DFU_STATE_IDLE;
-
- hdfu->dev_status[0] = DFU_ERROR_NONE;
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = DFU_STATE_IDLE;
- hdfu->dev_status[5] = 0;
-
- /* Initialize Hardware layer */
- if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Init() != USBD_OK)
- {
- return USBD_FAIL;
- }
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_DFU_Init
- * DeInitialize the DFU layer
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_DFU_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- USBD_DFU_HandleTypeDef *hdfu;
- hdfu = pdev->pClassData;
-
- hdfu->wblock_num = 0;
- hdfu->wlength = 0;
-
- hdfu->dev_state = DFU_STATE_IDLE;
- hdfu->dev_status[0] = DFU_ERROR_NONE;
- hdfu->dev_status[4] = DFU_STATE_IDLE;
-
- /* DeInit physical Interface components */
- if(pdev->pClassData != NULL)
- {
- /* De-Initialize Hardware layer */
- ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->DeInit();
- USBD_free(pdev->pClassData);
- pdev->pClassData = NULL;
- }
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_DFU_Setup
- * Handle the DFU specific requests
- * @param pdev: instance
- * @param req: usb requests
- * @retval status
- */
-static uint8_t USBD_DFU_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req)
-{
- uint8_t *pbuf = 0;
- uint16_t len = 0;
- uint8_t ret = USBD_OK;
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
- case USB_REQ_TYPE_CLASS :
- switch (req->bRequest)
- {
- case DFU_DNLOAD:
- DFU_Download(pdev, req);
- break;
-
- case DFU_UPLOAD:
- DFU_Upload(pdev, req);
- break;
-
- case DFU_GETSTATUS:
- DFU_GetStatus(pdev);
- break;
-
- case DFU_CLRSTATUS:
- DFU_ClearStatus(pdev);
- break;
-
- case DFU_GETSTATE:
- DFU_GetState(pdev);
- break;
-
- case DFU_ABORT:
- DFU_Abort(pdev);
- break;
-
- case DFU_DETACH:
- DFU_Detach(pdev, req);
- break;
-
-
- default:
- USBD_CtlError (pdev, req);
- ret = USBD_FAIL;
- }
- break;
-
- case USB_REQ_TYPE_STANDARD:
- switch (req->bRequest)
- {
- case USB_REQ_GET_DESCRIPTOR:
- if( (req->wValue >> 8) == DFU_DESCRIPTOR_TYPE)
- {
- pbuf = USBD_DFU_CfgDesc + (9 * (USBD_DFU_MAX_ITF_NUM + 1));
- len = MIN(USB_DFU_DESC_SIZ , req->wLength);
- }
-
- USBD_CtlSendData (pdev,
- pbuf,
- len);
- break;
-
- case USB_REQ_GET_INTERFACE :
- USBD_CtlSendData (pdev,
- (uint8_t *)&hdfu->alt_setting,
- 1);
- break;
-
- case USB_REQ_SET_INTERFACE :
- if ((uint8_t)(req->wValue) < USBD_DFU_MAX_ITF_NUM)
- {
- hdfu->alt_setting = (uint8_t)(req->wValue);
- }
- else
- {
- /* Call the error management function (command will be nacked */
- USBD_CtlError (pdev, req);
- ret = USBD_FAIL;
- }
- break;
-
- default:
- USBD_CtlError (pdev, req);
- ret = USBD_FAIL;
- }
- }
- return ret;
-}
-
-
-/**
- * @brief USBD_DFU_GetCfgDesc
- * return configuration descriptor
- * @param speed : current device speed
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_DFU_GetCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_DFU_CfgDesc);
- return USBD_DFU_CfgDesc;
-}
-
-/**
- * @brief USBD_DFU_DataIn
- * handle data IN Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_DFU_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_DFU_EP0_RxReady
- * handle EP0 Rx Ready event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_DFU_EP0_RxReady (USBD_HandleTypeDef *pdev)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_DFU_EP0_TxReady
- * handle EP0 TRx Ready event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_DFU_EP0_TxReady (USBD_HandleTypeDef *pdev)
-{
- uint32_t addr;
- USBD_SetupReqTypedef req;
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- if (hdfu->dev_state == DFU_STATE_DNLOAD_BUSY)
- {
- /* Decode the Special Command*/
- if (hdfu->wblock_num == 0)
- {
- if ((hdfu->buffer.d8[0] == DFU_CMD_GETCOMMANDS) && (hdfu->wlength == 1))
- {
-
- }
- else if (( hdfu->buffer.d8[0] == DFU_CMD_SETADDRESSPOINTER ) && (hdfu->wlength == 5))
- {
- hdfu->data_ptr = hdfu->buffer.d8[1];
- hdfu->data_ptr += hdfu->buffer.d8[2] << 8;
- hdfu->data_ptr += hdfu->buffer.d8[3] << 16;
- hdfu->data_ptr += hdfu->buffer.d8[4] << 24;
- }
- else if (( hdfu->buffer.d8[0] == DFU_CMD_ERASE ) && (hdfu->wlength == 5))
- {
- hdfu->data_ptr = hdfu->buffer.d8[1];
- hdfu->data_ptr += hdfu->buffer.d8[2] << 8;
- hdfu->data_ptr += hdfu->buffer.d8[3] << 16;
- hdfu->data_ptr += hdfu->buffer.d8[4] << 24;
-
- if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Erase(hdfu->data_ptr) != USBD_OK)
- {
- return USBD_FAIL;
- }
- }
- else
- {
- /* Reset the global length and block number */
- hdfu->wlength = 0;
- hdfu->wblock_num = 0;
- /* Call the error management function (command will be nacked) */
- req.bmRequest = 0;
- req.wLength = 1;
- USBD_CtlError (pdev, &req);
- }
- }
- /* Regular Download Command */
- else if (hdfu->wblock_num > 1)
- {
- /* Decode the required address */
- addr = ((hdfu->wblock_num - 2) * USBD_DFU_XFER_SIZE) + hdfu->data_ptr;
-
- /* Preform the write operation */
- if (((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Write(hdfu->buffer.d8, (uint8_t *)addr, hdfu->wlength) != USBD_OK)
- {
- return USBD_FAIL;
- }
- }
- /* Reset the global lenght and block number */
- hdfu->wlength = 0;
- hdfu->wblock_num = 0;
-
- /* Update the state machine */
- hdfu->dev_state = DFU_STATE_DNLOAD_SYNC;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
- return USBD_OK;
- }
- else if (hdfu->dev_state == DFU_STATE_MANIFEST)/* Manifestation in progress*/
- {
- /* Start leaving DFU mode */
- DFU_Leave(pdev);
- }
-
- return USBD_OK;
-}
-/**
- * @brief USBD_DFU_SOF
- * handle SOF event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_DFU_SOF (USBD_HandleTypeDef *pdev)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_DFU_IsoINIncomplete
- * handle data ISO IN Incomplete event
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_DFU_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_DFU_IsoOutIncomplete
- * handle data ISO OUT Incomplete event
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_DFU_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_DFU_DataOut
- * handle data OUT Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_DFU_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
-
- return USBD_OK;
-}
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-static uint8_t *USBD_DFU_GetDeviceQualifierDesc (uint16_t *length)
-{
- *length = sizeof (USBD_DFU_DeviceQualifierDesc);
- return USBD_DFU_DeviceQualifierDesc;
-}
-
-/**
- * @brief USBD_DFU_GetUsrStringDesc
- * Manages the transfer of memory interfaces string descriptors.
- * @param speed : current device speed
- * @param index: desciptor index
- * @param length : pointer data length
- * @retval pointer to the descriptor table or NULL if the descriptor is not supported.
- */
-#if (USBD_SUPPORT_USER_STRING == 1)
-static uint8_t* USBD_DFU_GetUsrStringDesc (USBD_HandleTypeDef *pdev, uint8_t index , uint16_t *length)
-{
- static uint8_t USBD_StrDesc[255];
- /* Check if the requested string interface is supported */
- if (index <= (USBD_IDX_INTERFACE_STR + USBD_DFU_MAX_ITF_NUM))
- {
- USBD_GetString ((uint8_t *)((USBD_DFU_MediaTypeDef *)pdev->pUserData)->pStrDesc, USBD_StrDesc, length);
- return USBD_StrDesc;
- }
- /* Not supported Interface Descriptor index */
- else
- {
- return NULL;
- }
-}
-#endif
-
-/**
-* @brief USBD_MSC_RegisterStorage
-* @param fops: storage callback
-* @retval status
-*/
-uint8_t USBD_DFU_RegisterMedia (USBD_HandleTypeDef *pdev,
- USBD_DFU_MediaTypeDef *fops)
-{
- if(fops != NULL)
- {
- pdev->pUserData= fops;
- }
- return 0;
-}
-
-/******************************************************************************
- DFU Class requests management
-******************************************************************************/
-/**
- * @brief DFU_Detach
- * Handles the DFU DETACH request.
- * @param pdev: device instance
- * @param req: pointer to the request structure.
- * @retval None.
- */
-static void DFU_Detach(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- if (hdfu->dev_state == DFU_STATE_IDLE || hdfu->dev_state == DFU_STATE_DNLOAD_SYNC
- || hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_MANIFEST_SYNC
- || hdfu->dev_state == DFU_STATE_UPLOAD_IDLE )
- {
- /* Update the state machine */
- hdfu->dev_state = DFU_STATE_IDLE;
- hdfu->dev_status[0] = DFU_ERROR_NONE;
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0; /*bwPollTimeout=0ms*/
- hdfu->dev_status[4] = hdfu->dev_state;
- hdfu->dev_status[5] = 0; /*iString*/
- hdfu->wblock_num = 0;
- hdfu->wlength = 0;
- }
-
- /* Check the detach capability in the DFU functional descriptor */
- if ((USBD_DFU_CfgDesc[12 + (9 * USBD_DFU_MAX_ITF_NUM)]) & DFU_DETACH_MASK)
- {
- /* Perform an Attach-Detach operation on USB bus */
- USBD_Stop (pdev);
- USBD_Start (pdev);
- }
- else
- {
- /* Wait for the period of time specified in Detach request */
- USBD_Delay (req->wValue);
- }
-}
-
-/**
- * @brief DFU_Download
- * Handles the DFU DNLOAD request.
- * @param pdev: device instance
- * @param req: pointer to the request structure
- * @retval None
- */
-static void DFU_Download(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- /* Data setup request */
- if (req->wLength > 0)
- {
- if ((hdfu->dev_state == DFU_STATE_IDLE) || (hdfu->dev_state == DFU_STATE_DNLOAD_IDLE))
- {
- /* Update the global length and block number */
- hdfu->wblock_num = req->wValue;
- hdfu->wlength = req->wLength;
-
- /* Update the state machine */
- hdfu->dev_state = DFU_STATE_DNLOAD_SYNC;
- hdfu->dev_status[4] = hdfu->dev_state;
-
- /* Prepare the reception of the buffer over EP0 */
- USBD_CtlPrepareRx (pdev,
- (uint8_t*)hdfu->buffer.d8,
- hdfu->wlength);
- }
- /* Unsupported state */
- else
- {
- /* Call the error management function (command will be nacked */
- USBD_CtlError (pdev, req);
- }
- }
- /* 0 Data DNLOAD request */
- else
- {
- /* End of DNLOAD operation*/
- if (hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_IDLE )
- {
- hdfu->manif_state = DFU_MANIFEST_IN_PROGRESS;
- hdfu->dev_state = DFU_STATE_MANIFEST_SYNC;
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
- }
- else
- {
- /* Call the error management function (command will be nacked */
- USBD_CtlError (pdev, req);
- }
- }
-}
-
-/**
- * @brief DFU_Upload
- * Handles the DFU UPLOAD request.
- * @param pdev: instance
- * @param req: pointer to the request structure
- * @retval status
- */
-static void DFU_Upload(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- uint8_t *phaddr = NULL;
- uint32_t addr = 0;
-
- /* Data setup request */
- if (req->wLength > 0)
- {
- if ((hdfu->dev_state == DFU_STATE_IDLE) || (hdfu->dev_state == DFU_STATE_UPLOAD_IDLE))
- {
- /* Update the global langth and block number */
- hdfu->wblock_num = req->wValue;
- hdfu->wlength = req->wLength;
-
- /* DFU Get Command */
- if (hdfu->wblock_num == 0)
- {
- /* Update the state machine */
- hdfu->dev_state = (hdfu->wlength > 3)? DFU_STATE_IDLE:DFU_STATE_UPLOAD_IDLE;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
-
- /* Store the values of all supported commands */
- hdfu->buffer.d8[0] = DFU_CMD_GETCOMMANDS;
- hdfu->buffer.d8[1] = DFU_CMD_SETADDRESSPOINTER;
- hdfu->buffer.d8[2] = DFU_CMD_ERASE;
-
- /* Send the status data over EP0 */
- USBD_CtlSendData (pdev,
- (uint8_t *)(&(hdfu->buffer.d8[0])),
- 3);
- }
- else if (hdfu->wblock_num > 1)
- {
- hdfu->dev_state = DFU_STATE_UPLOAD_IDLE ;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
-
- addr = ((hdfu->wblock_num - 2) * USBD_DFU_XFER_SIZE) + hdfu->data_ptr; /* Change is Accelerated*/
-
- /* Return the physical address where data are stored */
- phaddr = ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->Read((uint8_t *)addr, hdfu->buffer.d8, hdfu->wlength);
-
- /* Send the status data over EP0 */
- USBD_CtlSendData (pdev,
- phaddr,
- hdfu->wlength);
- }
- else /* unsupported hdfu->wblock_num */
- {
- hdfu->dev_state = DFU_ERROR_STALLEDPKT;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
-
- /* Call the error management function (command will be nacked */
- USBD_CtlError (pdev, req);
- }
- }
- /* Unsupported state */
- else
- {
- hdfu->wlength = 0;
- hdfu->wblock_num = 0;
- /* Call the error management function (command will be nacked */
- USBD_CtlError (pdev, req);
- }
- }
- /* No Data setup request */
- else
- {
- hdfu->dev_state = DFU_STATE_IDLE;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
- }
-}
-
-/**
- * @brief DFU_GetStatus
- * Handles the DFU GETSTATUS request.
- * @param pdev: instance
- * @retval status
- */
-static void DFU_GetStatus(USBD_HandleTypeDef *pdev)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- switch (hdfu->dev_state)
- {
- case DFU_STATE_DNLOAD_SYNC:
- if (hdfu->wlength != 0)
- {
- hdfu->dev_state = DFU_STATE_DNLOAD_BUSY;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
-
- if ((hdfu->wblock_num == 0) && (hdfu->buffer.d8[0] == DFU_CMD_ERASE))
- {
- ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->GetStatus(hdfu->data_ptr, DFU_MEDIA_ERASE, hdfu->dev_status);
- }
- else
- {
- ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->GetStatus(hdfu->data_ptr, DFU_MEDIA_PROGRAM, hdfu->dev_status);
- }
- }
- else /* (hdfu->wlength==0)*/
- {
- hdfu->dev_state = DFU_STATE_DNLOAD_IDLE;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
- }
- break;
-
- case DFU_STATE_MANIFEST_SYNC :
- if (hdfu->manif_state == DFU_MANIFEST_IN_PROGRESS)
- {
- hdfu->dev_state = DFU_STATE_MANIFEST;
-
- hdfu->dev_status[1] = 1; /*bwPollTimeout = 1ms*/
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
- }
- else if ((hdfu->manif_state == DFU_MANIFEST_COMPLETE) && \
- ((USBD_DFU_CfgDesc[(11 + (9 * USBD_DFU_MAX_ITF_NUM))]) & 0x04))
- {
- hdfu->dev_state = DFU_STATE_IDLE;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
- }
- break;
-
- default :
- break;
- }
-
- /* Send the status data over EP0 */
- USBD_CtlSendData (pdev,
- (uint8_t *)(&(hdfu->dev_status[0])),
- 6);
-}
-
-/**
- * @brief DFU_ClearStatus
- * Handles the DFU CLRSTATUS request.
- * @param pdev: device instance
- * @retval status
- */
-static void DFU_ClearStatus(USBD_HandleTypeDef *pdev)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- if (hdfu->dev_state == DFU_STATE_ERROR)
- {
- hdfu->dev_state = DFU_STATE_IDLE;
- hdfu->dev_status[0] = DFU_ERROR_NONE;/*bStatus*/
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0; /*bwPollTimeout=0ms*/
- hdfu->dev_status[4] = hdfu->dev_state;/*bState*/
- hdfu->dev_status[5] = 0;/*iString*/
- }
- else
- { /*State Error*/
- hdfu->dev_state = DFU_STATE_ERROR;
- hdfu->dev_status[0] = DFU_ERROR_UNKNOWN;/*bStatus*/
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0; /*bwPollTimeout=0ms*/
- hdfu->dev_status[4] = hdfu->dev_state;/*bState*/
- hdfu->dev_status[5] = 0;/*iString*/
- }
-}
-
-/**
- * @brief DFU_GetState
- * Handles the DFU GETSTATE request.
- * @param pdev: device instance
- * @retval None
- */
-static void DFU_GetState(USBD_HandleTypeDef *pdev)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- /* Return the current state of the DFU interface */
- USBD_CtlSendData (pdev,
- &hdfu->dev_state,
- 1);
-}
-
-/**
- * @brief DFU_Abort
- * Handles the DFU ABORT request.
- * @param pdev: device instance
- * @retval None
- */
-static void DFU_Abort(USBD_HandleTypeDef *pdev)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- if (hdfu->dev_state == DFU_STATE_IDLE || hdfu->dev_state == DFU_STATE_DNLOAD_SYNC
- || hdfu->dev_state == DFU_STATE_DNLOAD_IDLE || hdfu->dev_state == DFU_STATE_MANIFEST_SYNC
- || hdfu->dev_state == DFU_STATE_UPLOAD_IDLE )
- {
- hdfu->dev_state = DFU_STATE_IDLE;
- hdfu->dev_status[0] = DFU_ERROR_NONE;
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0; /*bwPollTimeout=0ms*/
- hdfu->dev_status[4] = hdfu->dev_state;
- hdfu->dev_status[5] = 0; /*iString*/
- hdfu->wblock_num = 0;
- hdfu->wlength = 0;
- }
-}
-
-/**
- * @brief DFU_Leave
- * Handles the sub-protocol DFU leave DFU mode request (leaves DFU mode
- * and resets device to jump to user loaded code).
- * @param pdev: device instance
- * @retval None
- */
-void DFU_Leave(USBD_HandleTypeDef *pdev)
-{
- USBD_DFU_HandleTypeDef *hdfu;
-
- hdfu = pdev->pClassData;
-
- hdfu->manif_state = DFU_MANIFEST_COMPLETE;
-
- if ((USBD_DFU_CfgDesc[(11 + (9 * USBD_DFU_MAX_ITF_NUM))]) & 0x04)
- {
- hdfu->dev_state = DFU_STATE_MANIFEST_SYNC;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
- return;
- }
- else
- {
-
- hdfu->dev_state = DFU_STATE_MANIFEST_WAIT_RESET;
-
- hdfu->dev_status[1] = 0;
- hdfu->dev_status[2] = 0;
- hdfu->dev_status[3] = 0;
- hdfu->dev_status[4] = hdfu->dev_state;
-
- /* Disconnect the USB device */
- USBD_Stop (pdev);
-
- /* DeInitilialize the MAL(Media Access Layer) */
- ((USBD_DFU_MediaTypeDef *)pdev->pUserData)->DeInit();
-
- /* Generate system reset to allow jumping to the user code */
- NVIC_SystemReset();
-
- /* This instruction will not be reached (system reset) */
- for(;;);
- }
-}
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/DFU/Src/usbd_dfu_media_template.c b/stmhal/usbdev/class/DFU/Src/usbd_dfu_media_template.c
deleted file mode 100644
index 25606fdb4e..0000000000
--- a/stmhal/usbdev/class/DFU/Src/usbd_dfu_media_template.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_dfu_media_template.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief Memory management layer
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_dfu_media_template.h"
-
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Extern function prototypes ------------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-uint16_t MEM_If_Init(void);
-uint16_t MEM_If_Erase (uint32_t Add);
-uint16_t MEM_If_Write (uint8_t *src, uint8_t *dest, uint32_t Len);
-uint8_t *MEM_If_Read (uint8_t *src, uint8_t *dest, uint32_t Len);
-uint16_t MEM_If_DeInit(void);
-uint16_t MEM_If_GetStatus (uint32_t Add, uint8_t Cmd, uint8_t *buffer);
-
-USBD_DFU_MediaTypeDef USBD_DFU_MEDIA_Template_fops =
-{
- (uint8_t *)"DFU MEDIA",
- MEM_If_Init,
- MEM_If_DeInit,
- MEM_If_Erase,
- MEM_If_Write,
- MEM_If_Read,
- MEM_If_GetStatus,
-
-};
-/**
- * @brief MEM_If_Init
- * Memory initialization routine.
- * @param None
- * @retval 0 if operation is successeful, MAL_FAIL else.
- */
-uint16_t MEM_If_Init(void)
-{
- return 0;
-}
-
-/**
- * @brief MEM_If_DeInit
- * Memory deinitialization routine.
- * @param None
- * @retval 0 if operation is successeful, MAL_FAIL else.
- */
-uint16_t MEM_If_DeInit(void)
-{
- return 0;
-}
-
-/**
- * @brief MEM_If_Erase
- * Erase sector.
- * @param Add: Address of sector to be erased.
- * @retval 0 if operation is successeful, MAL_FAIL else.
- */
-uint16_t MEM_If_Erase(uint32_t Add)
-{
- return 0;
-}
-
-/**
- * @brief MEM_If_Write
- * Memory write routine.
- * @param Add: Address to be written to.
- * @param Len: Number of data to be written (in bytes).
- * @retval 0 if operation is successeful, MAL_FAIL else.
- */
-uint16_t MEM_If_Write(uint8_t *src, uint8_t *dest, uint32_t Len)
-{
- return 0;
-}
-
-/**
- * @brief MEM_If_Read
- * Memory read routine.
- * @param Add: Address to be read from.
- * @param Len: Number of data to be read (in bytes).
- * @retval Pointer to the phyisical address where data should be read.
- */
-uint8_t *MEM_If_Read (uint8_t *src, uint8_t *dest, uint32_t Len)
-{
- /* Return a valid address to avoid HardFault */
- return (uint8_t*)(0);
-}
-
-/**
- * @brief Flash_If_GetStatus
- * Memory read routine.
- * @param Add: Address to be read from.
- * @param cmd: Number of data to be read (in bytes).
- * @retval Pointer to the phyisical address where data should be read.
- */
-uint16_t MEM_If_GetStatus (uint32_t Add, uint8_t Cmd, uint8_t *buffer)
-{
- switch (Cmd)
- {
- case DFU_MEDIA_PROGRAM:
-
- break;
-
- case DFU_MEDIA_ERASE:
- default:
-
- break;
- }
- return (0);
-}
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/HID/Inc/usbd_hid.h b/stmhal/usbdev/class/HID/Inc/usbd_hid.h
deleted file mode 100644
index 811de0b5af..0000000000
--- a/stmhal/usbdev/class/HID/Inc/usbd_hid.h
+++ /dev/null
@@ -1,136 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_hid_core.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_hid_core.c file.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-
-#ifndef __USB_HID_CORE_H_
-#define __USB_HID_CORE_H_
-
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_HID
- * @brief This file is the Header file for USBD_msc.c
- * @{
- */
-
-
-/** @defgroup USBD_HID_Exported_Defines
- * @{
- */
-#define HID_EPIN_ADDR 0x81
-#define HID_EPIN_SIZE 0x04
-
-#define USB_HID_CONFIG_DESC_SIZ 34
-#define USB_HID_DESC_SIZ 9
-#define HID_MOUSE_REPORT_DESC_SIZE 74
-
-#define HID_DESCRIPTOR_TYPE 0x21
-#define HID_REPORT_DESC 0x22
-
-
-#define HID_REQ_SET_PROTOCOL 0x0B
-#define HID_REQ_GET_PROTOCOL 0x03
-
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_GET_IDLE 0x02
-
-#define HID_REQ_SET_REPORT 0x09
-#define HID_REQ_GET_REPORT 0x01
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_TypesDefinitions
- * @{
- */
-typedef enum
-{
- HID_IDLE = 0,
- HID_BUSY,
-}
-HID_StateTypeDef;
-
-
-typedef struct
-{
- uint32_t Protocol;
- uint32_t IdleState;
- uint32_t AltSetting;
- HID_StateTypeDef state;
-}
-USBD_HID_HandleTypeDef;
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_CORE_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CORE_Exported_Variables
- * @{
- */
-
-extern USBD_ClassTypeDef USBD_HID;
-/**
- * @}
- */
-
-/** @defgroup USB_CORE_Exported_Functions
- * @{
- */
-uint8_t USBD_HID_SendReport (USBD_HandleTypeDef *pdev,
- uint8_t *report,
- uint16_t len);
-
-uint8_t *USBD_HID_DeviceQualifierDescriptor (uint16_t *length);
-
-/**
- * @}
- */
-
-#endif // __USB_HID_CORE_H_
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/HID/Src/usbd_hid.c b/stmhal/usbdev/class/HID/Src/usbd_hid.c
deleted file mode 100644
index 11dca78d5a..0000000000
--- a/stmhal/usbdev/class/HID/Src/usbd_hid.c
+++ /dev/null
@@ -1,509 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_hid.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides the HID core functions.
- *
- * @verbatim
- *
- * ===================================================================
- * HID Class Description
- * ===================================================================
- * This module manages the HID class V1.11 following the "Device Class Definition
- * for Human Interface Devices (HID) Version 1.11 Jun 27, 2001".
- * This driver implements the following aspects of the specification:
- * - The Boot Interface Subclass
- * - The Mouse protocol
- * - Usage Page : Generic Desktop
- * - Usage : Joystick)
- * - Collection : Application
- *
- * @note In HS mode and when the DMA is used, all variables and data structures
- * dealing with the DMA during the transaction process should be 32-bit aligned.
- *
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_hid.h"
-#include "usbd_desc.h"
-#include "usbd_ctlreq.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_HID
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_HID_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_HID_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_HID_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-
-
-/** @defgroup USBD_HID_Private_FunctionPrototypes
- * @{
- */
-
-
-static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_HID_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-static uint8_t *USBD_HID_GetCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_HID_GetDeviceQualifierDesc (uint16_t *length);
-
-static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum);
-/**
- * @}
- */
-
-/** @defgroup USBD_HID_Private_Variables
- * @{
- */
-
-USBD_ClassTypeDef USBD_HID =
-{
- USBD_HID_Init,
- USBD_HID_DeInit,
- USBD_HID_Setup,
- NULL, /*EP0_TxSent*/
- NULL, /*EP0_RxReady*/
- USBD_HID_DataIn, /*DataIn*/
- NULL, /*DataOut*/
- NULL, /*SOF */
- NULL,
- NULL,
- USBD_HID_GetCfgDesc,
- USBD_HID_GetCfgDesc,
- USBD_HID_GetCfgDesc,
- USBD_HID_GetDeviceQualifierDesc,
-};
-
-/* USB HID device Configuration Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_HID_CfgDesc[USB_HID_CONFIG_DESC_SIZ] __ALIGN_END =
-{
- 0x09, /* bLength: Configuration Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_HID_CONFIG_DESC_SIZ,
- /* wTotalLength: Bytes returned */
- 0x00,
- 0x01, /*bNumInterfaces: 1 interface*/
- 0x01, /*bConfigurationValue: Configuration value*/
- 0x00, /*iConfiguration: Index of string descriptor describing
- the configuration*/
- 0xE0, /*bmAttributes: bus powered and Support Remote Wake-up */
- 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/
-
- /************** Descriptor of Joystick Mouse interface ****************/
- /* 09 */
- 0x09, /*bLength: Interface Descriptor size*/
- USB_DESC_TYPE_INTERFACE,/*bDescriptorType: Interface descriptor type*/
- 0x00, /*bInterfaceNumber: Number of Interface*/
- 0x00, /*bAlternateSetting: Alternate setting*/
- 0x01, /*bNumEndpoints*/
- 0x03, /*bInterfaceClass: HID*/
- 0x01, /*bInterfaceSubClass : 1=BOOT, 0=no boot*/
- 0x02, /*nInterfaceProtocol : 0=none, 1=keyboard, 2=mouse*/
- 0, /*iInterface: Index of string descriptor*/
- /******************** Descriptor of Joystick Mouse HID ********************/
- /* 18 */
- 0x09, /*bLength: HID Descriptor size*/
- HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
- 0x11, /*bcdHID: HID Class Spec release number*/
- 0x01,
- 0x00, /*bCountryCode: Hardware target country*/
- 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/
- 0x22, /*bDescriptorType*/
- HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
- 0x00,
- /******************** Descriptor of Mouse endpoint ********************/
- /* 27 */
- 0x07, /*bLength: Endpoint Descriptor size*/
- USB_DESC_TYPE_ENDPOINT, /*bDescriptorType:*/
-
- HID_EPIN_ADDR, /*bEndpointAddress: Endpoint Address (IN)*/
- 0x03, /*bmAttributes: Interrupt endpoint*/
- HID_EPIN_SIZE, /*wMaxPacketSize: 4 Byte max */
- 0x00,
- 0x0A, /*bInterval: Polling Interval (10 ms)*/
- /* 34 */
-} ;
-
-/* USB HID device Configuration Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END =
-{
- /* 18 */
- 0x09, /*bLength: HID Descriptor size*/
- HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
- 0x11, /*bcdHID: HID Class Spec release number*/
- 0x01,
- 0x00, /*bCountryCode: Hardware target country*/
- 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/
- 0x22, /*bDescriptorType*/
- HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
- 0x00,
-};
-
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x01,
- 0x00,
-};
-
-__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
-{
- 0x05, 0x01,
- 0x09, 0x02,
- 0xA1, 0x01,
- 0x09, 0x01,
-
- 0xA1, 0x00,
- 0x05, 0x09,
- 0x19, 0x01,
- 0x29, 0x03,
-
- 0x15, 0x00,
- 0x25, 0x01,
- 0x95, 0x03,
- 0x75, 0x01,
-
- 0x81, 0x02,
- 0x95, 0x01,
- 0x75, 0x05,
- 0x81, 0x01,
-
- 0x05, 0x01,
- 0x09, 0x30,
- 0x09, 0x31,
- 0x09, 0x38,
-
- 0x15, 0x81,
- 0x25, 0x7F,
- 0x75, 0x08,
- 0x95, 0x03,
-
- 0x81, 0x06,
- 0xC0, 0x09,
- 0x3c, 0x05,
- 0xff, 0x09,
-
- 0x01, 0x15,
- 0x00, 0x25,
- 0x01, 0x75,
- 0x01, 0x95,
-
- 0x02, 0xb1,
- 0x22, 0x75,
- 0x06, 0x95,
- 0x01, 0xb1,
-
- 0x01, 0xc0
-};
-
-/**
- * @}
- */
-
-/** @defgroup USBD_HID_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_HID_Init
- * Initialize the HID interface
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_HID_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- uint8_t ret = 0;
-
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- HID_EPIN_ADDR,
- USBD_EP_TYPE_INTR,
- HID_EPIN_SIZE);
-
- pdev->pClassData = USBD_malloc(sizeof (USBD_HID_HandleTypeDef));
-
- if(pdev->pClassData == NULL)
- {
- ret = 1;
- }
- else
- {
- ((USBD_HID_HandleTypeDef *)pdev->pClassData)->state = HID_IDLE;
- }
- return ret;
-}
-
-/**
- * @brief USBD_HID_Init
- * DeInitialize the HID layer
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_HID_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- /* Close HID EPs */
- USBD_LL_CloseEP(pdev,
- HID_EPIN_SIZE);
-
- /* FRee allocated memory */
- if(pdev->pClassData != NULL)
- {
- USBD_free(pdev->pClassData);
- pdev->pClassData = NULL;
- }
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_HID_Setup
- * Handle the HID specific requests
- * @param pdev: instance
- * @param req: usb requests
- * @retval status
- */
-static uint8_t USBD_HID_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req)
-{
- uint16_t len = 0;
- uint8_t *pbuf = NULL;
- USBD_HID_HandleTypeDef *hhid = pdev->pClassData;
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
- case USB_REQ_TYPE_CLASS :
- switch (req->bRequest)
- {
-
-
- case HID_REQ_SET_PROTOCOL:
- hhid->Protocol = (uint8_t)(req->wValue);
- break;
-
- case HID_REQ_GET_PROTOCOL:
- USBD_CtlSendData (pdev,
- (uint8_t *)&hhid->Protocol,
- 1);
- break;
-
- case HID_REQ_SET_IDLE:
- hhid->IdleState = (uint8_t)(req->wValue >> 8);
- break;
-
- case HID_REQ_GET_IDLE:
- USBD_CtlSendData (pdev,
- (uint8_t *)&hhid->IdleState,
- 1);
- break;
-
- default:
- USBD_CtlError (pdev, req);
- return USBD_FAIL;
- }
- break;
-
- case USB_REQ_TYPE_STANDARD:
- switch (req->bRequest)
- {
- case USB_REQ_GET_DESCRIPTOR:
- if( req->wValue >> 8 == HID_REPORT_DESC)
- {
- len = MIN(HID_MOUSE_REPORT_DESC_SIZE , req->wLength);
- pbuf = HID_MOUSE_ReportDesc;
- }
- else if( req->wValue >> 8 == HID_DESCRIPTOR_TYPE)
- {
- pbuf = USBD_HID_Desc;
- len = MIN(USB_HID_DESC_SIZ , req->wLength);
- }
-
- USBD_CtlSendData (pdev,
- pbuf,
- len);
-
- break;
-
- case USB_REQ_GET_INTERFACE :
- USBD_CtlSendData (pdev,
- (uint8_t *)&hhid->AltSetting,
- 1);
- break;
-
- case USB_REQ_SET_INTERFACE :
- hhid->AltSetting = (uint8_t)(req->wValue);
- break;
- }
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_HID_SendReport
- * Send HID Report
- * @param pdev: device instance
- * @param buff: pointer to report
- * @retval status
- */
-uint8_t USBD_HID_SendReport (USBD_HandleTypeDef *pdev,
- uint8_t *report,
- uint16_t len)
-{
- USBD_HID_HandleTypeDef *hhid = pdev->pClassData;
-
- if (pdev->dev_state == USBD_STATE_CONFIGURED )
- {
- if(hhid->state == HID_IDLE)
- {
- hhid->state = HID_BUSY;
- USBD_LL_Transmit (pdev,
- HID_EPIN_ADDR,
- report,
- len);
- }
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_HID_GetCfgDesc
- * return configuration descriptor
- * @param speed : current device speed
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_HID_GetCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_HID_CfgDesc);
- return USBD_HID_CfgDesc;
-}
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_HID_DeviceQualifierDescriptor (uint16_t *length)
-{
- *length = sizeof (USBD_HID_DeviceQualifierDesc);
- return USBD_HID_DeviceQualifierDesc;
-}
-
-
-/**
- * @brief USBD_HID_DataIn
- * handle data IN Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_HID_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
-
- /* Ensure that the FIFO is empty before a new transfer, this condition could
- be caused by a new transfer before the end of the previous transfer */
- ((USBD_HID_HandleTypeDef *)pdev->pClassData)->state = HID_IDLE;
- return USBD_OK;
-}
-
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-static uint8_t *USBD_HID_GetDeviceQualifierDesc (uint16_t *length)
-{
- *length = sizeof (USBD_HID_DeviceQualifierDesc);
- return USBD_HID_DeviceQualifierDesc;
-}
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/Template/Inc/usbd_template.h b/stmhal/usbdev/class/Template/Inc/usbd_template.h
deleted file mode 100644
index 5571dbd1b4..0000000000
--- a/stmhal/usbdev/class/Template/Inc/usbd_template.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_template_core.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_template_core.c file.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-
-#ifndef __USB_TEMPLATE_CORE_H_
-#define __USB_TEMPLATE_CORE_H_
-
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_TEMPLATE
- * @brief This file is the Header file for USBD_msc.c
- * @{
- */
-
-
-/** @defgroup USBD_TEMPLATE_Exported_Defines
- * @{
- */
-#define TEMPLATE_EPIN_ADDR 0x81
-#define TEMPLATE_EPIN_SIZE 0x10
-
-#define USB_TEMPLATE_CONFIG_DESC_SIZ 64
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_TypesDefinitions
- * @{
- */
-
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_CORE_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CORE_Exported_Variables
- * @{
- */
-
-extern USBD_ClassTypeDef USBD_TEMPLATE_ClassDriver;
-/**
- * @}
- */
-
-/** @defgroup USB_CORE_Exported_Functions
- * @{
- */
-/**
- * @}
- */
-
-#endif // __USB_TEMPLATE_CORE_H_
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/Template/Src/usbd_template.c b/stmhal/usbdev/class/Template/Src/usbd_template.c
deleted file mode 100644
index 144faa2179..0000000000
--- a/stmhal/usbdev/class/Template/Src/usbd_template.c
+++ /dev/null
@@ -1,398 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_template.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides the HID core functions.
- *
- * @verbatim
- *
- * ===================================================================
- * TEMPLATE Class Description
- * ===================================================================
- *
- *
- *
- *
- *
- *
- * @note In HS mode and when the DMA is used, all variables and data structures
- * dealing with the DMA during the transaction process should be 32-bit aligned.
- *
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_template.h"
-#include "usbd_desc.h"
-#include "usbd_ctlreq.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_TEMPLATE
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_TEMPLATE_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_TEMPLATE_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_TEMPLATE_Private_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-
-
-
-/** @defgroup USBD_TEMPLATE_Private_FunctionPrototypes
- * @{
- */
-
-
-static uint8_t USBD_TEMPLATE_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_TEMPLATE_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_TEMPLATE_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-static uint8_t *USBD_TEMPLATE_GetCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_TEMPLATE_GetDeviceQualifierDesc (uint16_t *length);
-
-static uint8_t USBD_TEMPLATE_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_TEMPLATE_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_TEMPLATE_EP0_RxReady (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_TEMPLATE_EP0_TxReady (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_TEMPLATE_SOF (USBD_HandleTypeDef *pdev);
-
-static uint8_t USBD_TEMPLATE_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-static uint8_t USBD_TEMPLATE_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum);
-
-/**
- * @}
- */
-
-/** @defgroup USBD_TEMPLATE_Private_Variables
- * @{
- */
-
-USBD_ClassTypeDef USBD_TEMPLATE_ClassDriver =
-{
- USBD_TEMPLATE_Init,
- USBD_TEMPLATE_DeInit,
- USBD_TEMPLATE_Setup,
- USBD_TEMPLATE_EP0_TxReady,
- USBD_TEMPLATE_EP0_RxReady,
- USBD_TEMPLATE_DataIn,
- USBD_TEMPLATE_DataOut,
- USBD_TEMPLATE_SOF,
- USBD_TEMPLATE_IsoINIncomplete,
- USBD_TEMPLATE_IsoOutIncomplete,
- USBD_TEMPLATE_GetCfgDesc,
- USBD_TEMPLATE_GetCfgDesc,
- USBD_TEMPLATE_GetCfgDesc,
- USBD_TEMPLATE_GetDeviceQualifierDesc,
-};
-
-#if defined ( __ICCARM__ ) /*!< IAR Compiler */
- #pragma data_alignment=4
-#endif
-/* USB TEMPLATE device Configuration Descriptor */
-static uint8_t USBD_TEMPLATE_CfgDesc[USB_TEMPLATE_CONFIG_DESC_SIZ] =
-{
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_TEMPLATE_CONFIG_DESC_SIZ,
- /* wTotalLength: Bytes returned */
- 0x00,
- 0x01, /*bNumInterfaces: 1 interface*/
- 0x01, /*bConfigurationValue: Configuration value*/
- 0x02, /*iConfiguration: Index of string descriptor describing the configuration*/
- 0xC0, /*bmAttributes: bus powered and Supprts Remote Wakeup */
- 0x32, /*MaxPower 100 mA: this current is used for detecting Vbus*/
- /* 09 */
-
- /********** Descriptor of TEMPLATE interface 0 Alternate setting 0 **************/
-
-};
-
-#if defined ( __ICCARM__ ) /*!< IAR Compiler */
- #pragma data_alignment=4
-#endif
-/* USB Standard Device Descriptor */
-static uint8_t USBD_TEMPLATE_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] =
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x01,
- 0x00,
-};
-
-/**
- * @}
- */
-
-/** @defgroup USBD_TEMPLATE_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_TEMPLATE_Init
- * Initialize the TEMPLATE interface
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- uint8_t ret = 0;
-
-
- return ret;
-}
-
-/**
- * @brief USBD_TEMPLATE_Init
- * DeInitialize the TEMPLATE layer
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_TEMPLATE_Setup
- * Handle the TEMPLATE specific requests
- * @param pdev: instance
- * @param req: usb requests
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req)
-{
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
- case USB_REQ_TYPE_CLASS :
- switch (req->bRequest)
- {
-
- default:
- USBD_CtlError (pdev, req);
- return USBD_FAIL;
- }
- break;
-
- case USB_REQ_TYPE_STANDARD:
- switch (req->bRequest)
- {
-
- default:
- USBD_CtlError (pdev, req);
- return USBD_FAIL;
- }
- }
- return USBD_OK;
-}
-
-
-/**
- * @brief USBD_TEMPLATE_GetCfgDesc
- * return configuration descriptor
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_TEMPLATE_GetCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_TEMPLATE_CfgDesc);
- return USBD_TEMPLATE_CfgDesc;
-}
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_TEMPLATE_DeviceQualifierDescriptor (uint16_t *length)
-{
- *length = sizeof (USBD_TEMPLATE_DeviceQualifierDesc);
- return USBD_TEMPLATE_DeviceQualifierDesc;
-}
-
-
-/**
- * @brief USBD_TEMPLATE_DataIn
- * handle data IN Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_TEMPLATE_EP0_RxReady
- * handle EP0 Rx Ready event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_EP0_RxReady (USBD_HandleTypeDef *pdev)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_TEMPLATE_EP0_TxReady
- * handle EP0 TRx Ready event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_EP0_TxReady (USBD_HandleTypeDef *pdev)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_TEMPLATE_SOF
- * handle SOF event
- * @param pdev: device instance
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_SOF (USBD_HandleTypeDef *pdev)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_TEMPLATE_IsoINIncomplete
- * handle data ISO IN Incomplete event
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_IsoINIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_TEMPLATE_IsoOutIncomplete
- * handle data ISO OUT Incomplete event
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_IsoOutIncomplete (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
-
- return USBD_OK;
-}
-/**
- * @brief USBD_TEMPLATE_DataOut
- * handle data OUT Stage
- * @param pdev: device instance
- * @param epnum: endpoint index
- * @retval status
- */
-static uint8_t USBD_TEMPLATE_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
-
- return USBD_OK;
-}
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_TEMPLATE_GetDeviceQualifierDesc (uint16_t *length)
-{
- *length = sizeof (USBD_TEMPLATE_DeviceQualifierDesc);
- return USBD_TEMPLATE_DeviceQualifierDesc;
-}
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc/inc/usbd_cdc.h b/stmhal/usbdev/class/cdc/inc/usbd_cdc.h
deleted file mode 100644
index e60fa2de5a..0000000000
--- a/stmhal/usbdev/class/cdc/inc/usbd_cdc.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_cdc_core.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_cdc_core.c file.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-
-#ifndef __USB_CDC_CORE_H_
-#define __USB_CDC_CORE_H_
-
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup usbd_cdc
- * @brief This file is the Header file for USBD_cdc.c
- * @{
- */
-
-
-/** @defgroup usbd_cdc_Exported_Defines
- * @{
- */
-#define CDC_IN_EP 0x81 /* EP1 for data IN */
-#define CDC_OUT_EP 0x01 /* EP1 for data OUT */
-#define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
-
-/* CDC Endpoints parameters: you can fine tune these values depending on the needed baudrates and performance. */
-#define CDC_DATA_HS_MAX_PACKET_SIZE 512 /* Endpoint IN & OUT Packet size */
-#define CDC_DATA_FS_MAX_PACKET_SIZE 64 /* Endpoint IN & OUT Packet size */
-#define CDC_CMD_PACKET_SIZE 8 /* Control Endpoint Packet size */
-
-#define USB_CDC_CONFIG_DESC_SIZ 67
-#define CDC_DATA_HS_IN_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE
-#define CDC_DATA_HS_OUT_PACKET_SIZE CDC_DATA_HS_MAX_PACKET_SIZE
-
-#define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
-#define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
-
-/*---------------------------------------------------------------------*/
-/* CDC definitions */
-/*---------------------------------------------------------------------*/
-
-#define CDC_SEND_ENCAPSULATED_COMMAND 0x00
-#define CDC_GET_ENCAPSULATED_RESPONSE 0x01
-#define CDC_SET_COMM_FEATURE 0x02
-#define CDC_GET_COMM_FEATURE 0x03
-#define CDC_CLEAR_COMM_FEATURE 0x04
-#define CDC_SET_LINE_CODING 0x20
-#define CDC_GET_LINE_CODING 0x21
-#define CDC_SET_CONTROL_LINE_STATE 0x22
-#define CDC_SEND_BREAK 0x23
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_TypesDefinitions
- * @{
- */
-
-/**
- * @}
- */
-typedef struct
-{
- uint32_t bitrate;
- uint8_t format;
- uint8_t paritytype;
- uint8_t datatype;
-}USBD_CDC_LineCodingTypeDef;
-
-typedef struct _USBD_CDC_Itf
-{
- int8_t (* Init) (void);
- int8_t (* DeInit) (void);
- int8_t (* Control) (uint8_t, uint8_t * , uint16_t);
- int8_t (* Receive) (uint8_t *, uint32_t *);
-
-}USBD_CDC_ItfTypeDef;
-
-
-typedef struct
-{
- uint32_t data[CDC_DATA_HS_MAX_PACKET_SIZE/4]; /* Force 32bits alignment */
- uint8_t CmdOpCode;
- uint8_t CmdLength;
- uint8_t *RxBuffer;
- uint8_t *TxBuffer;
- uint32_t RxLength;
- uint32_t TxLength;
-
- __IO uint32_t TxState;
- __IO uint32_t RxState;
-}
-USBD_CDC_HandleTypeDef;
-
-
-
-/** @defgroup USBD_CORE_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CORE_Exported_Variables
- * @{
- */
-
-extern USBD_ClassTypeDef USBD_CDC;
-/**
- * @}
- */
-
-/** @defgroup USB_CORE_Exported_Functions
- * @{
- */
-uint8_t USBD_CDC_RegisterInterface (USBD_HandleTypeDef *pdev,
- USBD_CDC_ItfTypeDef *fops);
-
-uint8_t USBD_CDC_SetTxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff,
- uint16_t length);
-
-uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff);
-
-uint8_t USBD_CDC_ReceivePacket (USBD_HandleTypeDef *pdev);
-
-uint8_t USBD_CDC_TransmitPacket (USBD_HandleTypeDef *pdev);
-/**
- * @}
- */
-
-#endif // __USB_CDC_CORE_H_
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc/inc/usbd_cdc_if_template.h b/stmhal/usbdev/class/cdc/inc/usbd_cdc_if_template.h
deleted file mode 100644
index d29a6ff384..0000000000
--- a/stmhal/usbdev/class/cdc/inc/usbd_cdc_if_template.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_cdc_if_template.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief Header for dfu_mal.c file.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CDC_IF_TEMPLATE_H
-#define __USBD_CDC_IF_TEMPLATE_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_cdc.h"
-
-/* Exported types ------------------------------------------------------------*/
-/* Exported constants --------------------------------------------------------*/
-
-extern USBD_CDC_ItfTypeDef USBD_CDC_Template_fops;
-
-/* Exported macro ------------------------------------------------------------*/
-/* Exported functions ------------------------------------------------------- */
-#endif /* __USBD_CDC_IF_TEMPLATE_H */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc/src/usbd_cdc.c b/stmhal/usbdev/class/cdc/src/usbd_cdc.c
deleted file mode 100644
index 50179a2dea..0000000000
--- a/stmhal/usbdev/class/cdc/src/usbd_cdc.c
+++ /dev/null
@@ -1,907 +0,0 @@
-/**
- ******************************************************************************
- * @file USBD_CDC.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides the high layer firmware functions to manage the
- * following functionalities of the USB CDC Class:
- * - Initialization and Configuration of high and low layer
- * - Enumeration as CDC Device (and enumeration for each implemented memory interface)
- * - OUT/IN data transfer
- * - Command IN transfer (class requests management)
- * - Error management
- *
- * @verbatim
- *
- * ===================================================================
- * CDC Class Driver Description
- * ===================================================================
- * This driver manages the "Universal Serial Bus Class Definitions for Communications Devices
- * Revision 1.2 November 16, 2007" and the sub-protocol specification of "Universal Serial Bus
- * Communications Class Subclass Specification for PSTN Devices Revision 1.2 February 9, 2007"
- * This driver implements the following aspects of the specification:
- * - Device descriptor management
- * - Configuration descriptor management
- * - Enumeration as CDC device with 2 data endpoints (IN and OUT) and 1 command endpoint (IN)
- * - Requests management (as described in section 6.2 in specification)
- * - Abstract Control Model compliant
- * - Union Functional collection (using 1 IN endpoint for control)
- * - Data interface class
-
- * @note
- * For the Abstract Control Model, this core allows only transmitting the requests to
- * lower layer dispatcher (ie. USBD_CDC_vcp.c/.h) which should manage each request and
- * perform relative actions.
- *
- * These aspects may be enriched or modified for a specific user application.
- *
- * This driver doesn't implement the following aspects of the specification
- * (but it is possible to manage these features with some modifications on this driver):
- * - Any class-specific aspect relative to communication classes should be managed by user application.
- * - All communication classes other than PSTN are not managed
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_cdc.h"
-#include "usbd_desc.h"
-#include "usbd_ctlreq.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_CDC
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_CDC_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CDC_Private_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CDC_Private_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CDC_Private_FunctionPrototypes
- * @{
- */
-
-
-static uint8_t USBD_CDC_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_CDC_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-static uint8_t USBD_CDC_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-static uint8_t USBD_CDC_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-static uint8_t USBD_CDC_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-static uint8_t USBD_CDC_EP0_RxReady (USBD_HandleTypeDef *pdev);
-
-static uint8_t *USBD_CDC_GetFSCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_CDC_GetHSCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc (uint16_t *length);
-
-static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc (uint16_t *length);
-
-uint8_t *USBD_CDC_GetDeviceQualifierDescriptor (uint16_t *length);
-
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_CDC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40,
- 0x01,
- 0x00,
-};
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CDC_Private_Variables
- * @{
- */
-
-
-/* CDC interface class callbacks structure */
-USBD_ClassTypeDef USBD_CDC =
-{
- USBD_CDC_Init,
- USBD_CDC_DeInit,
- USBD_CDC_Setup,
- NULL, /* EP0_TxSent, */
- USBD_CDC_EP0_RxReady,
- USBD_CDC_DataIn,
- USBD_CDC_DataOut,
- NULL,
- NULL,
- NULL,
- USBD_CDC_GetHSCfgDesc,
- USBD_CDC_GetFSCfgDesc,
- USBD_CDC_GetOtherSpeedCfgDesc,
- USBD_CDC_GetDeviceQualifierDescriptor,
-};
-
-/* USB CDC device Configuration Descriptor */
-__ALIGN_BEGIN uint8_t USBD_CDC_CfgHSDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
- /*Configuration Descriptor*/
- 0x09, /* bLength: Configuration Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_CDC_CONFIG_DESC_SIZ, /* wTotalLength:no of returned bytes */
- 0x00,
- 0x02, /* bNumInterfaces: 2 interface */
- 0x01, /* bConfigurationValue: Configuration value */
- 0x00, /* iConfiguration: Index of string descriptor describing the configuration */
- 0xC0, /* bmAttributes: self powered */
- 0x32, /* MaxPower 0 mA */
-
- /*---------------------------------------------------------------------------*/
-
- /*Interface Descriptor */
- 0x09, /* bLength: Interface Descriptor size */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType: Interface */
- /* Interface descriptor type */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x01, /* bNumEndpoints: One endpoints used */
- 0x02, /* bInterfaceClass: Communication Interface Class */
- 0x02, /* bInterfaceSubClass: Abstract Control Model */
- 0x01, /* bInterfaceProtocol: Common AT commands */
- 0x00, /* iInterface: */
-
- /*Header Functional Descriptor*/
- 0x05, /* bLength: Endpoint Descriptor size */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x00, /* bDescriptorSubtype: Header Func Desc */
- 0x10, /* bcdCDC: spec release number */
- 0x01,
-
- /*Call Management Functional Descriptor*/
- 0x05, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x01, /* bDescriptorSubtype: Call Management Func Desc */
- 0x00, /* bmCapabilities: D0+D1 */
- 0x01, /* bDataInterface: 1 */
-
- /*ACM Functional Descriptor*/
- 0x04, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x02, /* bDescriptorSubtype: Abstract Control Management desc */
- 0x02, /* bmCapabilities */
-
- /*Union Functional Descriptor*/
- 0x05, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x06, /* bDescriptorSubtype: Union func desc */
- 0x00, /* bMasterInterface: Communication class interface */
- 0x01, /* bSlaveInterface0: Data Class Interface */
-
- /*Endpoint 2 Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_CMD_EP, /* bEndpointAddress */
- 0x03, /* bmAttributes: Interrupt */
- LOBYTE(CDC_CMD_PACKET_SIZE), /* wMaxPacketSize: */
- HIBYTE(CDC_CMD_PACKET_SIZE),
- 0x10, /* bInterval: */
- /*---------------------------------------------------------------------------*/
-
- /*Data class interface descriptor*/
- 0x09, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType: */
- 0x01, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints: Two endpoints used */
- 0x0A, /* bInterfaceClass: CDC */
- 0x00, /* bInterfaceSubClass: */
- 0x00, /* bInterfaceProtocol: */
- 0x00, /* iInterface: */
-
- /*Endpoint OUT Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_OUT_EP, /* bEndpointAddress */
- 0x02, /* bmAttributes: Bulk */
- LOBYTE(CDC_DATA_HS_MAX_PACKET_SIZE), /* wMaxPacketSize: */
- HIBYTE(CDC_DATA_HS_MAX_PACKET_SIZE),
- 0x00, /* bInterval: ignore for Bulk transfer */
-
- /*Endpoint IN Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_IN_EP, /* bEndpointAddress */
- 0x02, /* bmAttributes: Bulk */
- LOBYTE(CDC_DATA_HS_MAX_PACKET_SIZE), /* wMaxPacketSize: */
- HIBYTE(CDC_DATA_HS_MAX_PACKET_SIZE),
- 0x00 /* bInterval: ignore for Bulk transfer */
-} ;
-
-
-/* USB CDC device Configuration Descriptor */
-__ALIGN_BEGIN uint8_t USBD_CDC_CfgFSDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
- /*Configuration Descriptor*/
- 0x09, /* bLength: Configuration Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_CDC_CONFIG_DESC_SIZ, /* wTotalLength:no of returned bytes */
- 0x00,
- 0x02, /* bNumInterfaces: 2 interface */
- 0x01, /* bConfigurationValue: Configuration value */
- 0x00, /* iConfiguration: Index of string descriptor describing the configuration */
- 0xC0, /* bmAttributes: self powered */
- 0x32, /* MaxPower 0 mA */
-
- /*---------------------------------------------------------------------------*/
-
- /*Interface Descriptor */
- 0x09, /* bLength: Interface Descriptor size */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType: Interface */
- /* Interface descriptor type */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x01, /* bNumEndpoints: One endpoints used */
- 0x02, /* bInterfaceClass: Communication Interface Class */
- 0x02, /* bInterfaceSubClass: Abstract Control Model */
- 0x01, /* bInterfaceProtocol: Common AT commands */
- 0x00, /* iInterface: */
-
- /*Header Functional Descriptor*/
- 0x05, /* bLength: Endpoint Descriptor size */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x00, /* bDescriptorSubtype: Header Func Desc */
- 0x10, /* bcdCDC: spec release number */
- 0x01,
-
- /*Call Management Functional Descriptor*/
- 0x05, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x01, /* bDescriptorSubtype: Call Management Func Desc */
- 0x00, /* bmCapabilities: D0+D1 */
- 0x01, /* bDataInterface: 1 */
-
- /*ACM Functional Descriptor*/
- 0x04, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x02, /* bDescriptorSubtype: Abstract Control Management desc */
- 0x02, /* bmCapabilities */
-
- /*Union Functional Descriptor*/
- 0x05, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x06, /* bDescriptorSubtype: Union func desc */
- 0x00, /* bMasterInterface: Communication class interface */
- 0x01, /* bSlaveInterface0: Data Class Interface */
-
- /*Endpoint 2 Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_CMD_EP, /* bEndpointAddress */
- 0x03, /* bmAttributes: Interrupt */
- LOBYTE(CDC_CMD_PACKET_SIZE), /* wMaxPacketSize: */
- HIBYTE(CDC_CMD_PACKET_SIZE),
- 0x10, /* bInterval: */
- /*---------------------------------------------------------------------------*/
-
- /*Data class interface descriptor*/
- 0x09, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType: */
- 0x01, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints: Two endpoints used */
- 0x0A, /* bInterfaceClass: CDC */
- 0x00, /* bInterfaceSubClass: */
- 0x00, /* bInterfaceProtocol: */
- 0x00, /* iInterface: */
-
- /*Endpoint OUT Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_OUT_EP, /* bEndpointAddress */
- 0x02, /* bmAttributes: Bulk */
- LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), /* wMaxPacketSize: */
- HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),
- 0x00, /* bInterval: ignore for Bulk transfer */
-
- /*Endpoint IN Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_IN_EP, /* bEndpointAddress */
- 0x02, /* bmAttributes: Bulk */
- LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE), /* wMaxPacketSize: */
- HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),
- 0x00 /* bInterval: ignore for Bulk transfer */
-} ;
-
-/* USB_OTG_HS_INTERNAL_DMA_ENABLED */
-__ALIGN_BEGIN uint8_t USBD_CDC_OtherSpeedCfgDesc[USB_CDC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION,
- USB_CDC_CONFIG_DESC_SIZ,
- 0x00,
- 0x02, /* bNumInterfaces: 2 interfaces */
- 0x01, /* bConfigurationValue: */
- 0x04, /* iConfiguration: */
- 0xC0, /* bmAttributes: */
- 0x32, /* MaxPower 100 mA */
-
- /*Interface Descriptor */
- 0x09, /* bLength: Interface Descriptor size */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType: Interface */
- /* Interface descriptor type */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x01, /* bNumEndpoints: One endpoints used */
- 0x02, /* bInterfaceClass: Communication Interface Class */
- 0x02, /* bInterfaceSubClass: Abstract Control Model */
- 0x01, /* bInterfaceProtocol: Common AT commands */
- 0x00, /* iInterface: */
-
- /*Header Functional Descriptor*/
- 0x05, /* bLength: Endpoint Descriptor size */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x00, /* bDescriptorSubtype: Header Func Desc */
- 0x10, /* bcdCDC: spec release number */
- 0x01,
-
- /*Call Management Functional Descriptor*/
- 0x05, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x01, /* bDescriptorSubtype: Call Management Func Desc */
- 0x00, /* bmCapabilities: D0+D1 */
- 0x01, /* bDataInterface: 1 */
-
- /*ACM Functional Descriptor*/
- 0x04, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x02, /* bDescriptorSubtype: Abstract Control Management desc */
- 0x02, /* bmCapabilities */
-
- /*Union Functional Descriptor*/
- 0x05, /* bFunctionLength */
- 0x24, /* bDescriptorType: CS_INTERFACE */
- 0x06, /* bDescriptorSubtype: Union func desc */
- 0x00, /* bMasterInterface: Communication class interface */
- 0x01, /* bSlaveInterface0: Data Class Interface */
-
- /*Endpoint 2 Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT , /* bDescriptorType: Endpoint */
- CDC_CMD_EP, /* bEndpointAddress */
- 0x03, /* bmAttributes: Interrupt */
- LOBYTE(CDC_CMD_PACKET_SIZE), /* wMaxPacketSize: */
- HIBYTE(CDC_CMD_PACKET_SIZE),
- 0xFF, /* bInterval: */
-
- /*---------------------------------------------------------------------------*/
-
- /*Data class interface descriptor*/
- 0x09, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_INTERFACE, /* bDescriptorType: */
- 0x01, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints: Two endpoints used */
- 0x0A, /* bInterfaceClass: CDC */
- 0x00, /* bInterfaceSubClass: */
- 0x00, /* bInterfaceProtocol: */
- 0x00, /* iInterface: */
-
- /*Endpoint OUT Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_OUT_EP, /* bEndpointAddress */
- 0x02, /* bmAttributes: Bulk */
- 0x40, /* wMaxPacketSize: */
- 0x00,
- 0x00, /* bInterval: ignore for Bulk transfer */
-
- /*Endpoint IN Descriptor*/
- 0x07, /* bLength: Endpoint Descriptor size */
- USB_DESC_TYPE_ENDPOINT, /* bDescriptorType: Endpoint */
- CDC_IN_EP, /* bEndpointAddress */
- 0x02, /* bmAttributes: Bulk */
- 0x40, /* wMaxPacketSize: */
- 0x00,
- 0x00 /* bInterval */
-};
-
-/**
- * @}
- */
-
-/** @defgroup USBD_CDC_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_CDC_Init
- * Initilaize the CDC interface
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_CDC_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- uint8_t ret = 0;
- USBD_CDC_HandleTypeDef *hcdc;
-
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- CDC_IN_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_HS_IN_PACKET_SIZE);
-
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- CDC_OUT_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_HS_OUT_PACKET_SIZE);
-
- }
- else
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- CDC_IN_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_FS_IN_PACKET_SIZE);
-
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- CDC_OUT_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_FS_OUT_PACKET_SIZE);
- }
- /* Open Command IN EP */
- USBD_LL_OpenEP(pdev,
- CDC_CMD_EP,
- USBD_EP_TYPE_INTR,
- CDC_CMD_PACKET_SIZE);
-
-
- pdev->pClassData = USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));
-
- if(pdev->pClassData == NULL)
- {
- ret = 1;
- }
- else
- {
- hcdc = pdev->pClassData;
-
- /* Init physical Interface components */
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Init();
-
- /* Init Xfer states */
- hcdc->TxState =0;
- hcdc->RxState =0;
-
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Prepare Out endpoint to receive next packet */
- USBD_LL_PrepareReceive(pdev,
- CDC_OUT_EP,
- hcdc->RxBuffer,
- CDC_DATA_HS_OUT_PACKET_SIZE);
- }
- else
- {
- /* Prepare Out endpoint to receive next packet */
- USBD_LL_PrepareReceive(pdev,
- CDC_OUT_EP,
- hcdc->RxBuffer,
- CDC_DATA_FS_OUT_PACKET_SIZE);
- }
-
-
- }
- return ret;
-}
-
-/**
- * @brief USBD_CDC_Init
- * DeInitialize the CDC layer
- * @param pdev: device instance
- * @param cfgidx: Configuration index
- * @retval status
- */
-static uint8_t USBD_CDC_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- uint8_t ret = 0;
-
- /* Open EP IN */
- USBD_LL_CloseEP(pdev,
- CDC_IN_EP);
-
- /* Open EP OUT */
- USBD_LL_CloseEP(pdev,
- CDC_OUT_EP);
-
- /* Open Command IN EP */
- USBD_LL_CloseEP(pdev,
- CDC_CMD_EP);
-
-
- /* DeInit physical Interface components */
- if(pdev->pClassData != NULL)
- {
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->DeInit();
- USBD_free(pdev->pClassData);
- pdev->pClassData = NULL;
- }
-
- return ret;
-}
-
-/**
- * @brief USBD_CDC_Setup
- * Handle the CDC specific requests
- * @param pdev: instance
- * @param req: usb requests
- * @retval status
- */
-static uint8_t USBD_CDC_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
- case USB_REQ_TYPE_CLASS :
- if (req->wLength)
- {
- if (req->bmRequest & 0x80)
- {
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest,
- (uint8_t *)hcdc->data,
- req->wLength);
- USBD_CtlSendData (pdev,
- (uint8_t *)hcdc->data,
- req->wLength);
- }
- else
- {
- hcdc->CmdOpCode = req->bRequest;
- hcdc->CmdLength = req->wLength;
-
- USBD_CtlPrepareRx (pdev,
- (uint8_t *)hcdc->data,
- req->wLength);
- }
- break;
- }
- }
- return USBD_OK;
-}
-
-/**
- * @brief usbd_audio_DataIn
- * Data sent on non-control IN endpoint
- * @param pdev: device instance
- * @param epnum: endpoint number
- * @retval status
- */
-static uint8_t USBD_CDC_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- if(pdev->pClassData != NULL)
- {
-
- hcdc->TxState = 0;
-
- return USBD_OK;
- }
- else
- {
- return USBD_FAIL;
- }
-}
-
-/**
- * @brief USBD_CDC_DataOut
- * Data received on non-control Out endpoint
- * @param pdev: device instance
- * @param epnum: endpoint number
- * @retval status
- */
-static uint8_t USBD_CDC_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- /* Get the received data length */
- hcdc->RxLength = USBD_LL_GetRxDataSize (pdev, epnum);
-
- /* USB data will be immediately processed, this allow next USB traffic being
- NAKed till the end of the application Xfer */
- if(pdev->pClassData != NULL)
- {
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Receive(hcdc->RxBuffer, &hcdc->RxLength);
-
- return USBD_OK;
- }
- else
- {
- return USBD_FAIL;
- }
-}
-
-
-
-/**
- * @brief USBD_CDC_DataOut
- * Data received on non-control Out endpoint
- * @param pdev: device instance
- * @param epnum: endpoint number
- * @retval status
- */
-static uint8_t USBD_CDC_EP0_RxReady (USBD_HandleTypeDef *pdev)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- if((pdev->pUserData != NULL) && (hcdc->CmdOpCode != 0xFF))
- {
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode,
- (uint8_t *)hcdc->data,
- hcdc->CmdLength);
- hcdc->CmdOpCode = 0xFF;
-
- }
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CDC_GetFSCfgDesc
- * Return configuration descriptor
- * @param speed : current device speed
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_CDC_GetFSCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_CDC_CfgFSDesc);
- return USBD_CDC_CfgFSDesc;
-}
-
-/**
- * @brief USBD_CDC_GetHSCfgDesc
- * Return configuration descriptor
- * @param speed : current device speed
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_CDC_GetHSCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_CDC_CfgHSDesc);
- return USBD_CDC_CfgHSDesc;
-}
-
-/**
- * @brief USBD_CDC_GetCfgDesc
- * Return configuration descriptor
- * @param speed : current device speed
- * @param length : pointer data length
- * @retval pointer to descriptor buffer
- */
-static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_CDC_OtherSpeedCfgDesc);
- return USBD_CDC_OtherSpeedCfgDesc;
-}
-
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_CDC_GetDeviceQualifierDescriptor (uint16_t *length)
-{
- *length = sizeof (USBD_CDC_DeviceQualifierDesc);
- return USBD_CDC_DeviceQualifierDesc;
-}
-
-/**
-* @brief USBD_CDC_RegisterInterface
- * @param pdev: device instance
- * @param fops: CD Interface callback
- * @retval status
- */
-uint8_t USBD_CDC_RegisterInterface (USBD_HandleTypeDef *pdev,
- USBD_CDC_ItfTypeDef *fops)
-{
- uint8_t ret = USBD_FAIL;
-
- if(fops != NULL)
- {
- pdev->pUserData= fops;
- ret = USBD_OK;
- }
-
- return ret;
-}
-
-/**
- * @brief USBD_CDC_SetTxBuffer
- * @param pdev: device instance
- * @param pbuff: Tx Buffer
- * @retval status
- */
-uint8_t USBD_CDC_SetTxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff,
- uint16_t length)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- hcdc->TxBuffer = pbuff;
- hcdc->TxLength = length;
-
- return USBD_OK;
-}
-
-
-/**
- * @brief USBD_CDC_SetRxBuffer
- * @param pdev: device instance
- * @param pbuff: Rx Buffer
- * @retval status
- */
-uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- hcdc->RxBuffer = pbuff;
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CDC_DataOut
- * Data received on non-control Out endpoint
- * @param pdev: device instance
- * @param epnum: endpoint number
- * @retval status
- */
-uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- if(pdev->pClassData != NULL)
- {
- if(hcdc->TxState == 0)
- {
-
- /* Transmit next packet */
- USBD_LL_Transmit(pdev,
- CDC_IN_EP,
- hcdc->TxBuffer,
- hcdc->TxLength);
-
- /* Tx Transfer in progress */
- hcdc->TxState = 1;
- return USBD_OK;
- }
- else
- {
- return USBD_BUSY;
- }
- }
- else
- {
- return USBD_FAIL;
- }
-}
-
-
-/**
- * @brief USBD_CDC_ReceivePacket
- * prepare OUT Endpoint for reception
- * @param pdev: device instance
- * @retval status
- */
-uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev)
-{
- USBD_CDC_HandleTypeDef *hcdc = pdev->pClassData;
-
- /* Suspend or Resume USB Out process */
- if(pdev->pClassData != NULL)
- {
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Prepare Out endpoint to receive next packet */
- USBD_LL_PrepareReceive(pdev,
- CDC_OUT_EP,
- hcdc->RxBuffer,
- CDC_DATA_HS_OUT_PACKET_SIZE);
- }
- else
- {
- /* Prepare Out endpoint to receive next packet */
- USBD_LL_PrepareReceive(pdev,
- CDC_OUT_EP,
- hcdc->RxBuffer,
- CDC_DATA_FS_OUT_PACKET_SIZE);
- }
- return USBD_OK;
- }
- else
- {
- return USBD_FAIL;
- }
-}
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc/src/usbd_cdc_if_template.c b/stmhal/usbdev/class/cdc/src/usbd_cdc_if_template.c
deleted file mode 100644
index b6fa5115c0..0000000000
--- a/stmhal/usbdev/class/cdc/src/usbd_cdc_if_template.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_cdc_if_template.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief Generic media access Layer.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_cdc_if_template.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup USBD_CDC
- * @brief usbd core module
- * @{
- */
-
-/** @defgroup USBD_CDC_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CDC_Private_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CDC_Private_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CDC_Private_FunctionPrototypes
- * @{
- */
-
-static int8_t TEMPLATE_Init (void);
-static int8_t TEMPLATE_DeInit (void);
-static int8_t TEMPLATE_Control (uint8_t cmd, uint8_t* pbuf, uint16_t length);
-static int8_t TEMPLATE_Receive (uint8_t* pbuf, uint32_t *Len);
-
-USBD_CDC_ItfTypeDef USBD_CDC_Template_fops =
-{
- TEMPLATE_Init,
- TEMPLATE_DeInit,
- TEMPLATE_Control,
- TEMPLATE_Receive
-};
-
-USBD_CDC_LineCodingTypeDef linecoding =
- {
- 115200, /* baud rate*/
- 0x00, /* stop bits-1*/
- 0x00, /* parity - none*/
- 0x08 /* nb. of bits 8*/
- };
-
-/* Private functions ---------------------------------------------------------*/
-
-/**
- * @brief TEMPLATE_Init
- * Initializes the CDC media low layer
- * @param None
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_Init(void)
-{
- /*
- Add your initialization code here
- */
- return (0);
-}
-
-/**
- * @brief TEMPLATE_DeInit
- * DeInitializes the CDC media low layer
- * @param None
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_DeInit(void)
-{
- /*
- Add your deinitialization code here
- */
- return (0);
-}
-
-
-/**
- * @brief TEMPLATE_Control
- * Manage the CDC class requests
- * @param Cmd: Command code
- * @param Buf: Buffer containing command data (request parameters)
- * @param Len: Number of data to be sent (in bytes)
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_Control (uint8_t cmd, uint8_t* pbuf, uint16_t length)
-{
- switch (cmd)
- {
- case CDC_SEND_ENCAPSULATED_COMMAND:
- /* Add your code here */
- break;
-
- case CDC_GET_ENCAPSULATED_RESPONSE:
- /* Add your code here */
- break;
-
- case CDC_SET_COMM_FEATURE:
- /* Add your code here */
- break;
-
- case CDC_GET_COMM_FEATURE:
- /* Add your code here */
- break;
-
- case CDC_CLEAR_COMM_FEATURE:
- /* Add your code here */
- break;
-
- case CDC_SET_LINE_CODING:
- linecoding.bitrate = (uint32_t)(pbuf[0] | (pbuf[1] << 8) |\
- (pbuf[2] << 16) | (pbuf[3] << 24));
- linecoding.format = pbuf[4];
- linecoding.paritytype = pbuf[5];
- linecoding.datatype = pbuf[6];
-
- /* Add your code here */
- break;
-
- case CDC_GET_LINE_CODING:
- pbuf[0] = (uint8_t)(linecoding.bitrate);
- pbuf[1] = (uint8_t)(linecoding.bitrate >> 8);
- pbuf[2] = (uint8_t)(linecoding.bitrate >> 16);
- pbuf[3] = (uint8_t)(linecoding.bitrate >> 24);
- pbuf[4] = linecoding.format;
- pbuf[5] = linecoding.paritytype;
- pbuf[6] = linecoding.datatype;
-
- /* Add your code here */
- break;
-
- case CDC_SET_CONTROL_LINE_STATE:
- /* Add your code here */
- break;
-
- case CDC_SEND_BREAK:
- /* Add your code here */
- break;
-
- default:
- break;
- }
-
- return (0);
-}
-
-/**
- * @brief TEMPLATE_DataRx
- * Data received over USB OUT endpoint are sent over CDC interface
- * through this function.
- *
- * @note
- * This function will block any OUT packet reception on USB endpoint
- * untill exiting this function. If you exit this function before transfer
- * is complete on CDC interface (ie. using DMA controller) it will result
- * in receiving more data while previous ones are still not sent.
- *
- * @param Buf: Buffer of data to be received
- * @param Len: Number of data received (in bytes)
- * @retval Result of the opeartion: USBD_OK if all operations are OK else USBD_FAIL
- */
-static int8_t TEMPLATE_Receive (uint8_t* Buf, uint32_t *Len)
-{
-
- return (0);
-}
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/cdc_hid/inc/usbd_cdc_hid.h b/stmhal/usbdev/class/cdc_hid/inc/usbd_cdc_hid.h
deleted file mode 100644
index 4725918f9a..0000000000
--- a/stmhal/usbdev/class/cdc_hid/inc/usbd_cdc_hid.h
+++ /dev/null
@@ -1,83 +0,0 @@
-#ifndef _USB_CDC_HID_CORE_H_
-#define _USB_CDC_HID_CORE_H_
-
-#include "usbd_ioreq.h"
-
-// CDC and HID packet sizes
-#define CDC_DATA_FS_MAX_PACKET_SIZE (64) // endpoint IN & OUT packet size
-
-#if 0
-// CDC
-#define USB_CDC_HID_CONFIG_DESC_SIZ (75)
-#define USB_CDC_HID_NUM_INTERFACES (2)
-#define USB_CDC_HID_USE_CDC (1)
-#define USB_CDC_HID_USE_HID (0)
-#define CDC_IN_EP 0x81 /* EP1 for data IN */
-#define CDC_OUT_EP 0x01 /* EP1 for data OUT */
-#define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
-#define HID_IN_EP (0x83)
-#define HID_OUT_EP (0x03)
-#elif 0
-// HID
-#define USB_CDC_HID_CONFIG_DESC_SIZ (32)
-#define USB_CDC_HID_NUM_INTERFACES (1)
-#define USB_CDC_HID_USE_CDC (0)
-#define USB_CDC_HID_USE_HID (1)
-#define CDC_IN_EP 0x81 /* EP1 for data IN */
-#define CDC_OUT_EP 0x01 /* EP1 for data OUT */
-#define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
-#define HID_IFACE_NUM (0)
-#define HID_IN_EP (0x81)
-#define HID_OUT_EP (0x01)
-#else
-// HID + CDC
-#define USB_CDC_HID_CONFIG_DESC_SIZ (100)
-#define USB_CDC_HID_NUM_INTERFACES (3)
-#define USB_CDC_HID_USE_CDC (1)
-#define USB_CDC_HID_USE_HID (1)
-#define CDC_IFACE_NUM (1)
-#define CDC_IN_EP (0x83)
-#define CDC_OUT_EP (0x03)
-#define CDC_CMD_EP (0x82)
-#define HID_IFACE_NUM (0)
-#define HID_IN_EP (0x81)
-#endif
-
-typedef struct {
- uint32_t bitrate;
- uint8_t format;
- uint8_t paritytype;
- uint8_t datatype;
-} USBD_CDC_LineCodingTypeDef;
-
-typedef struct _USBD_CDC_Itf {
- int8_t (* Init) (void);
- int8_t (* DeInit) (void);
- int8_t (* Control) (uint8_t, uint8_t * , uint16_t);
- int8_t (* Receive) (uint8_t *, uint32_t *);
-} USBD_CDC_ItfTypeDef;
-
-typedef struct {
- uint32_t data[CDC_DATA_FS_MAX_PACKET_SIZE/4]; /* Force 32bits alignment */
- uint8_t CmdOpCode;
- uint8_t CmdLength;
- uint8_t *RxBuffer;
- uint8_t *TxBuffer;
- uint32_t RxLength;
- uint32_t TxLength;
-
- __IO uint32_t TxState;
- __IO uint32_t RxState;
-} USBD_CDC_HandleTypeDef;
-
-extern USBD_ClassTypeDef USBD_CDC_HID;
-
-uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, USBD_CDC_ItfTypeDef *fops);
-uint8_t USBD_CDC_SetTxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff, uint16_t length);
-uint8_t USBD_CDC_SetRxBuffer(USBD_HandleTypeDef *pdev, uint8_t *pbuff);
-uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev);
-uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev);
-
-uint8_t USBD_HID_SendReport(USBD_HandleTypeDef *pdev, uint8_t *report, uint16_t len);
-
-#endif // _USB_CDC_HID_CORE_H_
diff --git a/stmhal/usbdev/class/cdc_hid/src/usbd_cdc_hid.c b/stmhal/usbdev/class/cdc_hid/src/usbd_cdc_hid.c
deleted file mode 100644
index 89897e7c97..0000000000
--- a/stmhal/usbdev/class/cdc_hid/src/usbd_cdc_hid.c
+++ /dev/null
@@ -1,654 +0,0 @@
-#include "usbd_ioreq.h"
-#include "usbd_cdc_hid.h"
-
-#define USB_DESC_TYPE_ASSOCIATION (0x0b)
-
-#define CDC_CMD_PACKET_SIZE 8 // Control Endpoint Packet size
-#define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
-#define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
-
-#define HID_MAX_FS_PACKET 0x04
-#define USB_HID_DESC_SIZ 9
-#define HID_MOUSE_REPORT_DESC_SIZE 74
-#define HID_KEYBOARD_REPORT_DESC_SIZE 63
-#define HID_DESCRIPTOR_TYPE 0x21
-#define HID_REPORT_DESC 0x22
-#define HID_REQ_SET_PROTOCOL 0x0B
-#define HID_REQ_GET_PROTOCOL 0x03
-#define HID_REQ_SET_IDLE 0x0A
-#define HID_REQ_GET_IDLE 0x02
-
-typedef enum {
- HID_IDLE = 0,
- HID_BUSY,
-} HID_StateTypeDef;
-
-typedef struct {
- uint32_t Protocol;
- uint32_t IdleState;
- uint32_t AltSetting;
- HID_StateTypeDef state;
-} USBD_HID_HandleTypeDef;
-
-static USBD_CDC_ItfTypeDef *CDC_fops;
-
-static USBD_CDC_HandleTypeDef CDC_ClassData;
-static USBD_HID_HandleTypeDef HID_ClassData;
-
-// I don't think we can make these descriptors constant because they are
-// modified (perhaps unnecessarily) by the USB driver.
-
-// USB Standard Device Descriptor
-__ALIGN_BEGIN static uint8_t USBD_CDC_HID_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = {
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40, // maximum of: 0x40 for CDC, 0x04 for HID
- 0x01,
- 0x00,
-};
-
-// USB CDC HID device Configuration Descriptor
-__ALIGN_BEGIN static uint8_t USBD_CDC_HID_CfgFSDesc[USB_CDC_HID_CONFIG_DESC_SIZ] __ALIGN_END = {
- //--------------------------------------------------------------------------
- // Configuration Descriptor
- 0x09, // bLength: Configuration Descriptor size
- USB_DESC_TYPE_CONFIGURATION, // bDescriptorType: Configuration
- LOBYTE(USB_CDC_HID_CONFIG_DESC_SIZ), // wTotalLength: no of returned bytes
- HIBYTE(USB_CDC_HID_CONFIG_DESC_SIZ),
- USB_CDC_HID_NUM_INTERFACES, // bNumInterfaces: 3 interfaces
- 0x01, // bConfigurationValue: Configuration value
- 0x00, // iConfiguration: Index of string descriptor describing the configuration
- 0x80, // bmAttributes: bus powered; 0xc0 for self powered
- 0xfa, // bMaxPower: in units of 2mA
-
-#if USB_CDC_HID_USE_CDC
- //==========================================================================
- // Interface Association for CDC VCP
- 0x08, // bLength: 8 bytes
- USB_DESC_TYPE_ASSOCIATION, // bDescriptorType: IAD
- CDC_IFACE_NUM, // bFirstInterface: first interface for this association
- 0x02, // bInterfaceCount: nummber of interfaces for this association
- 0x00, // bFunctionClass: ?
- 0x00, // bFunctionSubClass: ?
- 0x00, // bFunctionProtocol: ?
- 0x00, // iFunction: index of string for this function
-
- //--------------------------------------------------------------------------
- // Interface Descriptor
- 0x09, // bLength: Interface Descriptor size
- USB_DESC_TYPE_INTERFACE, // bDescriptorType: Interface
- CDC_IFACE_NUM, // bInterfaceNumber: Number of Interface
- 0x00, // bAlternateSetting: Alternate setting
- 0x01, // bNumEndpoints: One endpoints used
- 0x02, // bInterfaceClass: Communication Interface Class
- 0x02, // bInterfaceSubClass: Abstract Control Model
- 0x01, // bInterfaceProtocol: Common AT commands
- 0x00, // iInterface:
-
- // Header Functional Descriptor
- 0x05, // bLength: Endpoint Descriptor size
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x00, // bDescriptorSubtype: Header Func Desc
- 0x10, // bcdCDC: spec release number
- 0x01, // ?
-
- // Call Management Functional Descriptor
- 0x05, // bFunctionLength
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x01, // bDescriptorSubtype: Call Management Func Desc
- 0x00, // bmCapabilities: D0+D1
- CDC_IFACE_NUM + 1, // bDataInterface: 1
-
- // ACM Functional Descriptor
- 0x04, // bFunctionLength
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x02, // bDescriptorSubtype: Abstract Control Management desc
- 0x02, // bmCapabilities
-
- // Union Functional Descriptor
- 0x05, // bFunctionLength
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x06, // bDescriptorSubtype: Union func desc
- CDC_IFACE_NUM + 0, // bMasterInterface: Communication class interface
- CDC_IFACE_NUM + 1, // bSlaveInterface0: Data Class Interface
-
- // Endpoint 2 Descriptor
- 0x07, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint
- CDC_CMD_EP, // bEndpointAddress
- 0x03, // bmAttributes: Interrupt
- LOBYTE(CDC_CMD_PACKET_SIZE), // wMaxPacketSize:
- HIBYTE(CDC_CMD_PACKET_SIZE),
- 0x20, // bInterval: polling interval in frames of 1ms
-
- //--------------------------------------------------------------------------
- // Data class interface descriptor
- 0x09, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_INTERFACE, // bDescriptorType: interface
- CDC_IFACE_NUM + 1, // bInterfaceNumber: Number of Interface
- 0x00, // bAlternateSetting: Alternate setting
- 0x02, // bNumEndpoints: Two endpoints used
- 0x0A, // bInterfaceClass: CDC
- 0x00, // bInterfaceSubClass: ?
- 0x00, // bInterfaceProtocol: ?
- 0x00, // iInterface:
-
- // Endpoint OUT Descriptor
- 0x07, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint
- CDC_OUT_EP, // bEndpointAddress
- 0x02, // bmAttributes: Bulk
- LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),// wMaxPacketSize:
- HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),
- 0x00, // bInterval: ignore for Bulk transfer
-
- // Endpoint IN Descriptor
- 0x07, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint
- CDC_IN_EP, // bEndpointAddress
- 0x02, // bmAttributes: Bulk
- LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),// wMaxPacketSize:
- HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),
- 0x00, // bInterval: ignore for Bulk transfer
-#endif
-
-#if USB_CDC_HID_USE_HID
- //==========================================================================
- // HID only has 1 interface so doesn't need an IAD
-
- //--------------------------------------------------------------------------
- // Interface Descriptor
- 0x09, // bLength: Interface Descriptor size
- USB_DESC_TYPE_INTERFACE, // bDescriptorType: interface descriptor
- HID_IFACE_NUM, // bInterfaceNumber: Number of Interface
- 0x00, // bAlternateSetting: Alternate setting
- 0x01, // bNumEndpoints
- 0x03, // bInterfaceClass: HID Class
- 0x01, // bInterfaceSubClass: 1=BOOT, 0=no boot
- 0x01, // nInterfaceProtocol: 0=none, 1=keyboard, 2=mouse
- 0x00, // iInterface:
-
- // HID descriptor
- 0x09, // bLength: HID Descriptor size
- HID_DESCRIPTOR_TYPE, // bDescriptorType: HID
- 0x11, // bcdHID: HID Class Spec release number
- 0x01,
- 0x00, // bCountryCode: Hardware target country
- 0x01, // bNumDescriptors: Number of HID class descriptors to follow
- 0x22, // bDescriptorType
- HID_MOUSE_REPORT_DESC_SIZE, // wItemLength: Total length of Report descriptor
- 0x00,
-
- // Endpoint IN descriptor
- 0x07, // bLength: Endpoint descriptor length
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint descriptor type
- HID_IN_EP, // bEndpointAddress: IN
- 0x03, // bmAttributes: Interrupt endpoint type
- LOBYTE(HID_MAX_FS_PACKET), // wMaxPacketSize
- HIBYTE(HID_MAX_FS_PACKET),
- 0x08, // bInterval: Polling interval
-#endif
-};
-
-#if USB_CDC_HID_USE_HID
-/* USB HID device Configuration Descriptor */
-__ALIGN_BEGIN static uint8_t USBD_HID_Desc[USB_HID_DESC_SIZ] __ALIGN_END = {
- 0x09, /*bLength: HID Descriptor size*/
- HID_DESCRIPTOR_TYPE, /*bDescriptorType: HID*/
- 0x11, /*bcdHID: HID Class Spec release number*/
- 0x01,
- 0x00, /*bCountryCode: Hardware target country*/
- 0x01, /*bNumDescriptors: Number of HID class descriptors to follow*/
- 0x22, /*bDescriptorType*/
- HID_MOUSE_REPORT_DESC_SIZE,/*wItemLength: Total length of Report descriptor*/
- 0x00,
-};
-
-__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END = {
- 0x05, 0x01,
- 0x09, 0x02,
- 0xA1, 0x01,
- 0x09, 0x01,
-
- 0xA1, 0x00,
- 0x05, 0x09,
- 0x19, 0x01,
- 0x29, 0x03,
-
- 0x15, 0x00,
- 0x25, 0x01,
- 0x95, 0x03,
- 0x75, 0x01,
-
- 0x81, 0x02,
- 0x95, 0x01,
- 0x75, 0x05,
- 0x81, 0x01,
-
- 0x05, 0x01,
- 0x09, 0x30,
- 0x09, 0x31,
- 0x09, 0x38,
-
- 0x15, 0x81,
- 0x25, 0x7F,
- 0x75, 0x08,
- 0x95, 0x03,
-
- 0x81, 0x06,
- 0xC0, 0x09,
- 0x3c, 0x05,
- 0xff, 0x09,
-
- 0x01, 0x15,
- 0x00, 0x25,
- 0x01, 0x75,
- 0x01, 0x95,
-
- 0x02, 0xb1,
- 0x22, 0x75,
- 0x06, 0x95,
- 0x01, 0xb1,
-
- 0x01, 0xc0
-};
-
-#if 0
-__ALIGN_BEGIN static const uint8_t HID_KEYBOARD_ReportDesc[HID_KEYBOARD_REPORT_DESC_SIZE] __ALIGN_END = {
- // From p69 of http://www.usb.org/developers/devclass_docs/HID1_11.pdf
- 0x05, 0x01, // Usage Page (Generic Desktop),
- 0x09, 0x06, // Usage (Keyboard),
- 0xA1, 0x01, // Collection (Application),
- 0x05, 0x07, // Usage Page (Key Codes);
- 0x19, 0xE0, // Usage Minimum (224),
- 0x29, 0xE7, // Usage Maximum (231),
- 0x15, 0x00, // Logical Minimum (0),
- 0x25, 0x01, // Logical Maximum (1),
- 0x75, 0x01, // Report Size (1),
- 0x95, 0x08, // Report Count (8),
- 0x81, 0x02, // Input (Data, Variable, Absolute), ;Modifier byte
- 0x95, 0x01, // Report Count (1),
- 0x75, 0x08, // Report Size (8),
- 0x81, 0x01, // Input (Constant), ;Reserved byte
- 0x95, 0x05, // Report Count (5),
- 0x75, 0x01, // Report Size (1),
- 0x05, 0x08, // Usage Page (Page# for LEDs),
- 0x19, 0x01, // Usage Minimum (1),
- 0x29, 0x05, // Usage Maximum (5),
- 0x91, 0x02, // Output (Data, Variable, Absolute), ;LED report
- 0x95, 0x01, // Report Count (1),
- 0x75, 0x03, // Report Size (3),
- 0x91, 0x01, // Output (Constant), ;LED report padding
- 0x95, 0x06, // Report Count (6),
- 0x75, 0x08, // Report Size (8),
- 0x15, 0x00, // Logical Minimum (0),
- 0x25, 0x65, // Logical Maximum(101),
- 0x05, 0x07, // Usage Page (Key Codes),
- 0x19, 0x00, // Usage Minimum (0),
- 0x29, 0x65, // Usage Maximum (101),
- 0x81, 0x00, // Input (Data, Array), ;Key arrays (6 bytes)
- 0xC0 // End Collection
-};
-#endif
-#endif
-
-static uint8_t USBD_CDC_HID_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) {
- if (pdev->dev_speed == USBD_SPEED_HIGH) {
- // can't handle high speed
- return 1;
- }
-
-#if USB_CDC_HID_USE_CDC
- //----------------------------------
- // CDC VCP component
-
- // Open EP IN
- USBD_LL_OpenEP(pdev,
- CDC_IN_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_FS_IN_PACKET_SIZE);
-
- // Open EP OUT
- USBD_LL_OpenEP(pdev,
- CDC_OUT_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_FS_OUT_PACKET_SIZE);
-
- // Open Command IN EP
- USBD_LL_OpenEP(pdev,
- CDC_CMD_EP,
- USBD_EP_TYPE_INTR,
- CDC_CMD_PACKET_SIZE);
-
- // Init physical Interface components
- CDC_fops->Init();
-
- // Init Xfer states
- CDC_ClassData.TxState =0;
- CDC_ClassData.RxState =0;
-
- // Prepare Out endpoint to receive next packet
- USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, CDC_ClassData.RxBuffer, CDC_DATA_FS_OUT_PACKET_SIZE);
-#endif
-
-#if USB_CDC_HID_USE_HID
- //----------------------------------
- // HID component
-
- // Open EP IN
- USBD_LL_OpenEP(pdev,
- HID_IN_EP,
- USBD_EP_TYPE_INTR,
- HID_MAX_FS_PACKET);
-
- HID_ClassData.state = HID_IDLE;
-#endif
-
- return 0;
-}
-
-static uint8_t USBD_CDC_HID_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) {
-#if USD_CDC
- //----------------------------------
- // CDC VCP component
-
- // close endpoints
- USBD_LL_CloseEP(pdev, CDC_IN_EP);
- USBD_LL_CloseEP(pdev, CDC_OUT_EP);
- USBD_LL_CloseEP(pdev, CDC_CMD_EP);
-
- // DeInit physical Interface components
- CDC_fops->DeInit();
-#endif
-
-#if USB_CDC_HID_USE_HID
- //----------------------------------
- // HID component
-
- // close endpoints
- USBD_LL_CloseEP(pdev, HID_IN_EP);
-#endif
-
- return 0;
-}
-
-static uint8_t USBD_CDC_HID_Setup(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) {
-
- /*
- printf("SU: %x %x %x %x\n", req->bmRequest, req->bRequest, req->wValue, req->wIndex);
- */
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK) {
-
- // Class request
- case USB_REQ_TYPE_CLASS:
- // req->wIndex is the recipient interface number
- if (0) {
-#if USB_CDC_HID_USE_CDC
- } else if (req->wIndex == CDC_IFACE_NUM) {
- // CDC component
- if (req->wLength) {
- if (req->bmRequest & 0x80) {
- // device-to-host request
- CDC_fops->Control(req->bRequest, (uint8_t*)CDC_ClassData.data, req->wLength);
- USBD_CtlSendData(pdev, (uint8_t*)CDC_ClassData.data, req->wLength);
- } else {
- // host-to-device request
- CDC_ClassData.CmdOpCode = req->bRequest;
- CDC_ClassData.CmdLength = req->wLength;
- USBD_CtlPrepareRx(pdev, (uint8_t*)CDC_ClassData.data, req->wLength);
- }
- } else {
- // Not a Data request
- // Transfer the command to the interface layer
- return CDC_fops->Control(req->bRequest, NULL, req->wValue);
- }
- break;
-#endif
-#if USB_CDC_HID_USE_HID
- } else if (req->wIndex == HID_IFACE_NUM) {
- switch (req->bRequest) {
- case HID_REQ_SET_PROTOCOL:
- HID_ClassData.Protocol = (uint8_t)(req->wValue);
- break;
-
- case HID_REQ_GET_PROTOCOL:
- USBD_CtlSendData (pdev, (uint8_t *)&HID_ClassData.Protocol, 1);
- break;
-
- case HID_REQ_SET_IDLE:
- HID_ClassData.IdleState = (uint8_t)(req->wValue >> 8);
- break;
-
- case HID_REQ_GET_IDLE:
- USBD_CtlSendData (pdev, (uint8_t *)&HID_ClassData.IdleState, 1);
- break;
-
- default:
- USBD_CtlError (pdev, req);
- return USBD_FAIL;
- }
- break;
- }
-#endif
- break;
-
- /* Interface & Endpoint request */
- case USB_REQ_TYPE_STANDARD:
-#if USB_CDC_HID_USE_HID
- // HID only
- switch (req->bRequest) {
- case USB_REQ_GET_DESCRIPTOR: {
- uint16_t len = 0;
- const uint8_t *pbuf = NULL;
- if (req->wValue >> 8 == HID_REPORT_DESC) {
- len = MIN(HID_MOUSE_REPORT_DESC_SIZE , req->wLength);
- pbuf = HID_MOUSE_ReportDesc;
- } else if (req->wValue >> 8 == HID_DESCRIPTOR_TYPE) {
- len = MIN(USB_HID_DESC_SIZ , req->wLength);
- pbuf = USBD_HID_Desc;
- }
- USBD_CtlSendData(pdev, (uint8_t*)pbuf, len);
- break;
- }
-
- case USB_REQ_GET_INTERFACE:
- USBD_CtlSendData (pdev, (uint8_t *)&HID_ClassData.AltSetting, 1);
- break;
-
- case USB_REQ_SET_INTERFACE:
- HID_ClassData.AltSetting = (uint8_t)(req->wValue);
- break;
- }
-#endif
- break;
- }
- return USBD_OK;
-}
-
-static uint8_t USBD_CDC_HID_EP0_RxReady(USBD_HandleTypeDef *pdev) {
- if((CDC_fops != NULL) && (CDC_ClassData.CmdOpCode != 0xFF)) {
- CDC_fops->Control(CDC_ClassData.CmdOpCode, (uint8_t *)CDC_ClassData.data, CDC_ClassData.CmdLength);
- CDC_ClassData.CmdOpCode = 0xFF;
- }
- return USBD_OK;
-}
-
-static uint8_t USBD_CDC_HID_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) {
- switch (epnum) {
-#if USB_CDC_HID_USE_CDC
- case (CDC_IN_EP & 0x7f):
- case (CDC_CMD_EP & 0x7f):
- CDC_ClassData.TxState = 0;
- return USBD_OK;
-#endif
-#if USB_CDC_HID_USE_HID
- case (HID_IN_EP & 0x7f):
- /* Ensure that the FIFO is empty before a new transfer, this condition could
- be caused by a new transfer before the end of the previous transfer */
- HID_ClassData.state = HID_IDLE;
- return USBD_OK;
-#endif
- }
-
- return USBD_OK;
-}
-
-static uint8_t USBD_CDC_HID_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) {
- switch (epnum) {
-#if USB_CDC_HID_USE_CDC
- case (CDC_OUT_EP & 0x7f):
- /* Get the received data length */
- CDC_ClassData.RxLength = USBD_LL_GetRxDataSize (pdev, epnum);
-
- /* USB data will be immediately processed, this allow next USB traffic being
- NAKed till the end of the application Xfer */
- CDC_fops->Receive(CDC_ClassData.RxBuffer, &CDC_ClassData.RxLength);
-
- return USBD_OK;
-#endif
- }
-
- return USBD_OK;
-}
-
-static uint8_t *USBD_CDC_HID_GetFSCfgDesc(uint16_t *length) {
- *length = sizeof(USBD_CDC_HID_CfgFSDesc);
- return USBD_CDC_HID_CfgFSDesc;
-}
-
-static uint8_t *USBD_CDC_HID_GetHSCfgDesc(uint16_t *length) {
- *length = 0;
- return USBD_CDC_HID_CfgFSDesc; // need to return something because the USB driver writes bytes to the result
-}
-
-static uint8_t *USBD_CDC_HID_GetOtherSpeedCfgDesc (uint16_t *length) {
- *length = 0;
- return USBD_CDC_HID_CfgFSDesc; // need to return something because the USB driver writes bytes to the result
-}
-
-uint8_t *USBD_CDC_HID_GetDeviceQualifierDescriptor (uint16_t *length) {
- *length = sizeof(USBD_CDC_HID_DeviceQualifierDesc);
- return USBD_CDC_HID_DeviceQualifierDesc;
-}
-
-uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, USBD_CDC_ItfTypeDef *fops) {
- if (fops == NULL) {
- return USBD_FAIL;
- } else {
- CDC_fops = fops;
- return USBD_OK;
- }
-}
-
-/**
- * @brief USBD_CDC_SetTxBuffer
- * @param pdev: device instance
- * @param pbuff: Tx Buffer
- * @retval status
- */
-uint8_t USBD_CDC_SetTxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff,
- uint16_t length)
-{
- CDC_ClassData.TxBuffer = pbuff;
- CDC_ClassData.TxLength = length;
-
- return USBD_OK;
-}
-
-
-/**
- * @brief USBD_CDC_SetRxBuffer
- * @param pdev: device instance
- * @param pbuff: Rx Buffer
- * @retval status
- */
-uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff)
-{
- CDC_ClassData.RxBuffer = pbuff;
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CDC_DataOut
- * Data received on non-control Out endpoint
- * @param pdev: device instance
- * @param epnum: endpoint number
- * @retval status
- */
-uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) {
- if(CDC_ClassData.TxState == 0) {
-
- /* Transmit next packet */
- USBD_LL_Transmit(pdev,
- CDC_IN_EP,
- CDC_ClassData.TxBuffer,
- CDC_ClassData.TxLength);
-
- /* Tx Transfer in progress */
- CDC_ClassData.TxState = 1;
- return USBD_OK;
- }
- else
- {
- return USBD_BUSY;
- }
-}
-
-
-/**
- * @brief USBD_CDC_ReceivePacket
- * prepare OUT Endpoint for reception
- * @param pdev: device instance
- * @retval status
- */
-uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) {
- // Suspend or Resume USB Out process
- if (pdev->dev_speed == USBD_SPEED_HIGH) {
- return USBD_FAIL;
- }
-
- // Prepare Out endpoint to receive next packet */
- USBD_LL_PrepareReceive(pdev,
- CDC_OUT_EP,
- CDC_ClassData.RxBuffer,
- CDC_DATA_FS_OUT_PACKET_SIZE);
-
- return USBD_OK;
-}
-
-uint8_t USBD_HID_SendReport(USBD_HandleTypeDef *pdev, uint8_t *report, uint16_t len) {
- if (pdev->dev_state == USBD_STATE_CONFIGURED) {
- if (HID_ClassData.state == HID_IDLE) {
- HID_ClassData.state = HID_BUSY;
- USBD_LL_Transmit(pdev, HID_IN_EP, report, len);
- }
- }
- return USBD_OK;
-}
-
-// CDC + HID interface class callbacks structure
-USBD_ClassTypeDef USBD_CDC_HID = {
- USBD_CDC_HID_Init,
- USBD_CDC_HID_DeInit,
- USBD_CDC_HID_Setup,
- NULL, // EP0_TxSent
- USBD_CDC_HID_EP0_RxReady,
- USBD_CDC_HID_DataIn,
- USBD_CDC_HID_DataOut,
- NULL, // SOF
- NULL,
- NULL,
- USBD_CDC_HID_GetHSCfgDesc,
- USBD_CDC_HID_GetFSCfgDesc,
- USBD_CDC_HID_GetOtherSpeedCfgDesc,
- USBD_CDC_HID_GetDeviceQualifierDescriptor,
-};
diff --git a/stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h b/stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h
deleted file mode 100644
index 5299f31e96..0000000000
--- a/stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h
+++ /dev/null
@@ -1,132 +0,0 @@
-#ifndef _USB_CDC_MSC_CORE_H_
-#define _USB_CDC_MSC_CORE_H_
-
-#include "usbd_msc_bot.h"
-#include "usbd_msc_scsi.h"
-#include "usbd_ioreq.h"
-
-// CDC and MSC packet sizes
-#define CDC_DATA_FS_MAX_PACKET_SIZE (64) // endpoint IN & OUT packet size
-#define MSC_MEDIA_PACKET (2048) // was 8192; how low can it go whilst still working?
-
-#if 0
-// CDC
-#define USB_CDC_MSC_CONFIG_DESC_SIZ (75)
-#define NUM_INTERFACES (2)
-#define USE_CDC (1)
-#define USE_MSC (0)
-#define CDC_IN_EP 0x81 /* EP1 for data IN */
-#define CDC_OUT_EP 0x01 /* EP1 for data OUT */
-#define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
-#define MSC_IN_EP (0x83)
-#define MSC_OUT_EP (0x03)
-#elif 0
-// MSC
-#define USB_CDC_MSC_CONFIG_DESC_SIZ (32)
-#define NUM_INTERFACES (1)
-#define USE_CDC (0)
-#define USE_MSC (1)
-#define CDC_IN_EP 0x81 /* EP1 for data IN */
-#define CDC_OUT_EP 0x01 /* EP1 for data OUT */
-#define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
-#define MSC_IFACE_NUM (0)
-#define MSC_IN_EP (0x81)
-#define MSC_OUT_EP (0x01)
-#elif 1
-// CDC + MSC
-#define USB_CDC_MSC_CONFIG_DESC_SIZ (98)
-#define NUM_INTERFACES (3)
-#define USE_CDC (1)
-#define USE_MSC (1)
-#define CDC_IFACE_NUM (0)
-#define CDC_IN_EP 0x81 /* EP1 for data IN */
-#define CDC_OUT_EP 0x01 /* EP1 for data OUT */
-#define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
-#define MSC_IFACE_NUM (2)
-#define MSC_IN_EP (0x83)
-#define MSC_OUT_EP (0x03)
-#else
-// MSC + CDC
-#define USB_CDC_MSC_CONFIG_DESC_SIZ (98)
-#define NUM_INTERFACES (3)
-#define USE_CDC (1)
-#define USE_MSC (1)
-#define CDC_IFACE_NUM (1)
-#define CDC_IN_EP 0x83 /* EP1 for data IN */
-#define CDC_OUT_EP 0x03 /* EP1 for data OUT */
-#define CDC_CMD_EP 0x82 /* EP2 for CDC commands */
-#define MSC_IFACE_NUM (0)
-#define MSC_IN_EP (0x81)
-#define MSC_OUT_EP (0x01)
-#endif
-
-typedef struct {
- uint32_t bitrate;
- uint8_t format;
- uint8_t paritytype;
- uint8_t datatype;
-} USBD_CDC_LineCodingTypeDef;
-
-typedef struct _USBD_CDC_Itf {
- int8_t (* Init) (void);
- int8_t (* DeInit) (void);
- int8_t (* Control) (uint8_t, uint8_t * , uint16_t);
- int8_t (* Receive) (uint8_t *, uint32_t *);
-} USBD_CDC_ItfTypeDef;
-
-typedef struct {
- uint32_t data[CDC_DATA_FS_MAX_PACKET_SIZE/4]; /* Force 32bits alignment */
- uint8_t CmdOpCode;
- uint8_t CmdLength;
- uint8_t *RxBuffer;
- uint8_t *TxBuffer;
- uint32_t RxLength;
- uint32_t TxLength;
-
- __IO uint32_t TxState;
- __IO uint32_t RxState;
-} USBD_CDC_HandleTypeDef;
-
-typedef struct _USBD_STORAGE {
- int8_t (* Init) (uint8_t lun);
- int8_t (* GetCapacity) (uint8_t lun, uint32_t *block_num, uint16_t *block_size);
- int8_t (* IsReady) (uint8_t lun);
- int8_t (* IsWriteProtected) (uint8_t lun);
- int8_t (* Read) (uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
- int8_t (* Write)(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
- int8_t (* GetMaxLun)(void);
- int8_t *pInquiry;
-} USBD_StorageTypeDef;
-
-typedef struct {
- uint32_t max_lun;
- uint32_t interface;
- uint8_t bot_state;
- uint8_t bot_status;
- uint16_t bot_data_length;
- uint8_t bot_data[MSC_MEDIA_PACKET];
- USBD_MSC_BOT_CBWTypeDef cbw;
- USBD_MSC_BOT_CSWTypeDef csw;
-
- USBD_SCSI_SenseTypeDef scsi_sense [SENSE_LIST_DEEPTH];
- uint8_t scsi_sense_head;
- uint8_t scsi_sense_tail;
-
- uint16_t scsi_blk_size;
- uint32_t scsi_blk_nbr;
-
- uint32_t scsi_blk_addr;
- uint32_t scsi_blk_len;
-} USBD_MSC_BOT_HandleTypeDef;
-
-extern USBD_ClassTypeDef USBD_CDC_MSC;
-
-uint8_t USBD_CDC_RegisterInterface (USBD_HandleTypeDef *pdev, USBD_CDC_ItfTypeDef *fops);
-uint8_t USBD_CDC_SetTxBuffer (USBD_HandleTypeDef *pdev, uint8_t *pbuff, uint16_t length);
-uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev, uint8_t *pbuff);
-uint8_t USBD_CDC_ReceivePacket (USBD_HandleTypeDef *pdev);
-uint8_t USBD_CDC_TransmitPacket (USBD_HandleTypeDef *pdev);
-
-uint8_t USBD_MSC_RegisterStorage(USBD_HandleTypeDef *pdev, USBD_StorageTypeDef *fops);
-
-#endif // _USB_CDC_MSC_CORE_H_
diff --git a/stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c b/stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c
deleted file mode 100644
index 07e801e9bd..0000000000
--- a/stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c
+++ /dev/null
@@ -1,578 +0,0 @@
-#include "usbd_ioreq.h"
-#include "usbd_cdc_msc.h"
-
-#define USB_DESC_TYPE_ASSOCIATION (0x0b)
-
-#define CDC_CMD_PACKET_SIZE 8 // Control Endpoint Packet size
-#define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
-#define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE
-
-#define BOT_GET_MAX_LUN 0xFE
-#define BOT_RESET 0xFF
-#define USB_MSC_CONFIG_DESC_SIZ 32
-
-#define MSC_MAX_FS_PACKET 0x40
-
-static USBD_CDC_ItfTypeDef *CDC_fops;
-static USBD_StorageTypeDef *MSC_fops;
-
-static USBD_CDC_HandleTypeDef CDC_ClassData;
-static USBD_MSC_BOT_HandleTypeDef MSC_BOT_ClassData;
-
-// I don't think we can make these descriptors constant because they are
-// modified (perhaps unnecessarily) by the USB driver.
-
-// USB Standard Device Descriptor
-__ALIGN_BEGIN static uint8_t USBD_CDC_MSC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END = {
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- 0x40, // same for CDC and MSC (latter being MSC_MAX_FS_PACKET)
- 0x01,
- 0x00,
-};
-
-// USB CDC MSC device Configuration Descriptor
-__ALIGN_BEGIN static uint8_t USBD_CDC_MSC_CfgFSDesc[USB_CDC_MSC_CONFIG_DESC_SIZ] __ALIGN_END = {
- //--------------------------------------------------------------------------
- // Configuration Descriptor
- 0x09, // bLength: Configuration Descriptor size
- USB_DESC_TYPE_CONFIGURATION, // bDescriptorType: Configuration
- LOBYTE(USB_CDC_MSC_CONFIG_DESC_SIZ), // wTotalLength: no of returned bytes
- HIBYTE(USB_CDC_MSC_CONFIG_DESC_SIZ),
- NUM_INTERFACES, // bNumInterfaces: 3 interfaces
- 0x01, // bConfigurationValue: Configuration value
- 0x00, // iConfiguration: Index of string descriptor describing the configuration
- 0x80, // bmAttributes: bus powered; 0xc0 for self powered
- 0xfa, // bMaxPower: in units of 2mA
-
-#if USE_CDC
- //==========================================================================
- // Interface Association for CDC VCP
- 0x08, // bLength: 8 bytes
- USB_DESC_TYPE_ASSOCIATION, // bDescriptorType: IAD
- CDC_IFACE_NUM, // bFirstInterface: first interface for this association
- 0x02, // bInterfaceCount: nummber of interfaces for this association
- 0x00, // bFunctionClass: ?
- 0x00, // bFunctionSubClass: ?
- 0x00, // bFunctionProtocol: ?
- 0x00, // iFunction: index of string for this function
-
- //--------------------------------------------------------------------------
- // Interface Descriptor
- 0x09, // bLength: Interface Descriptor size
- USB_DESC_TYPE_INTERFACE, // bDescriptorType: Interface
- CDC_IFACE_NUM, // bInterfaceNumber: Number of Interface
- 0x00, // bAlternateSetting: Alternate setting
- 0x01, // bNumEndpoints: One endpoints used
- 0x02, // bInterfaceClass: Communication Interface Class
- 0x02, // bInterfaceSubClass: Abstract Control Model
- 0x01, // bInterfaceProtocol: Common AT commands
- 0x00, // iInterface:
-
- // Header Functional Descriptor
- 0x05, // bLength: Endpoint Descriptor size
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x00, // bDescriptorSubtype: Header Func Desc
- 0x10, // bcdCDC: spec release number
- 0x01, // ?
-
- // Call Management Functional Descriptor
- 0x05, // bFunctionLength
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x01, // bDescriptorSubtype: Call Management Func Desc
- 0x00, // bmCapabilities: D0+D1
- CDC_IFACE_NUM + 1, // bDataInterface: 1
-
- // ACM Functional Descriptor
- 0x04, // bFunctionLength
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x02, // bDescriptorSubtype: Abstract Control Management desc
- 0x02, // bmCapabilities
-
- // Union Functional Descriptor
- 0x05, // bFunctionLength
- 0x24, // bDescriptorType: CS_INTERFACE
- 0x06, // bDescriptorSubtype: Union func desc
- CDC_IFACE_NUM + 0, // bMasterInterface: Communication class interface
- CDC_IFACE_NUM + 1, // bSlaveInterface0: Data Class Interface
-
- // Endpoint 2 Descriptor
- 0x07, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint
- CDC_CMD_EP, // bEndpointAddress
- 0x03, // bmAttributes: Interrupt
- LOBYTE(CDC_CMD_PACKET_SIZE), // wMaxPacketSize:
- HIBYTE(CDC_CMD_PACKET_SIZE),
- 0x20, // bInterval: polling interval in frames of 1ms
-
- //--------------------------------------------------------------------------
- // Data class interface descriptor
- 0x09, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_INTERFACE, // bDescriptorType: interface
- CDC_IFACE_NUM + 1, // bInterfaceNumber: Number of Interface
- 0x00, // bAlternateSetting: Alternate setting
- 0x02, // bNumEndpoints: Two endpoints used
- 0x0A, // bInterfaceClass: CDC
- 0x00, // bInterfaceSubClass: ?
- 0x00, // bInterfaceProtocol: ?
- 0x00, // iInterface:
-
- // Endpoint OUT Descriptor
- 0x07, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint
- CDC_OUT_EP, // bEndpointAddress
- 0x02, // bmAttributes: Bulk
- LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),// wMaxPacketSize:
- HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),
- 0x00, // bInterval: ignore for Bulk transfer
-
- // Endpoint IN Descriptor
- 0x07, // bLength: Endpoint Descriptor size
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint
- CDC_IN_EP, // bEndpointAddress
- 0x02, // bmAttributes: Bulk
- LOBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),// wMaxPacketSize:
- HIBYTE(CDC_DATA_FS_MAX_PACKET_SIZE),
- 0x00, // bInterval: ignore for Bulk transfer
-#endif
-
-#if USE_MSC
- //==========================================================================
- // MSC only has 1 interface so doesn't need an IAD
-
- //--------------------------------------------------------------------------
- // Interface Descriptor
- 0x09, // bLength: Interface Descriptor size
- USB_DESC_TYPE_INTERFACE, // bDescriptorType: interface descriptor
- MSC_IFACE_NUM, // bInterfaceNumber: Number of Interface
- 0x00, // bAlternateSetting: Alternate setting
- 0x02, // bNumEndpoints
- 0x08, // bInterfaceClass: MSC Class
- 0x06, // bInterfaceSubClass : SCSI transparent
- 0x50, // nInterfaceProtocol
- 0x00, // iInterface:
-
- // Endpoint IN descriptor
- 0x07, // bLength: Endpoint descriptor length
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint descriptor type
- MSC_IN_EP, // bEndpointAddress: IN, address 3
- 0x02, // bmAttributes: Bulk endpoint type
- LOBYTE(MSC_MAX_FS_PACKET), // wMaxPacketSize
- HIBYTE(MSC_MAX_FS_PACKET),
- 0x00, // bInterval: ignore for Bulk transfer
-
- // Endpoint OUT descriptor
- 0x07, // bLength: Endpoint descriptor length
- USB_DESC_TYPE_ENDPOINT, // bDescriptorType: Endpoint descriptor type
- MSC_OUT_EP, // bEndpointAddress: OUT, address 3
- 0x02, // bmAttributes: Bulk endpoint type
- LOBYTE(MSC_MAX_FS_PACKET), // wMaxPacketSize
- HIBYTE(MSC_MAX_FS_PACKET),
- 0x00, // bInterval: ignore for Bulk transfer
-#endif
-};
-
-static uint8_t USBD_CDC_MSC_Init(USBD_HandleTypeDef *pdev, uint8_t cfgidx) {
- if (pdev->dev_speed == USBD_SPEED_HIGH) {
- // can't handle high speed
- return 1;
- }
-
-#if USE_CDC
- //----------------------------------
- // CDC VCP component
-
- // Open EP IN
- USBD_LL_OpenEP(pdev,
- CDC_IN_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_FS_IN_PACKET_SIZE);
-
- // Open EP OUT
- USBD_LL_OpenEP(pdev,
- CDC_OUT_EP,
- USBD_EP_TYPE_BULK,
- CDC_DATA_FS_OUT_PACKET_SIZE);
-
- // Open Command IN EP
- USBD_LL_OpenEP(pdev,
- CDC_CMD_EP,
- USBD_EP_TYPE_INTR,
- CDC_CMD_PACKET_SIZE);
-
- // Init physical Interface components
- CDC_fops->Init();
-
- // Init Xfer states
- CDC_ClassData.TxState =0;
- CDC_ClassData.RxState =0;
-
- // Prepare Out endpoint to receive next packet
- USBD_LL_PrepareReceive(pdev, CDC_OUT_EP, CDC_ClassData.RxBuffer, CDC_DATA_FS_OUT_PACKET_SIZE);
-#endif
-
-#if USE_MSC
- //----------------------------------
- // MSC component
-
- // Open EP OUT
- USBD_LL_OpenEP(pdev,
- MSC_OUT_EP,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
-
- // Open EP IN
- USBD_LL_OpenEP(pdev,
- MSC_IN_EP,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
-
- // MSC uses the pClassData pointer because SCSI and BOT reference it
- pdev->pClassData = &MSC_BOT_ClassData;
-
- // Init the BOT layer
- MSC_BOT_Init(pdev);
-#endif
-
- return 0;
-}
-
-static uint8_t USBD_CDC_MSC_DeInit(USBD_HandleTypeDef *pdev, uint8_t cfgidx) {
-#if USD_CDC
- //----------------------------------
- // CDC VCP component
-
- // close endpoints
- USBD_LL_CloseEP(pdev, CDC_IN_EP);
- USBD_LL_CloseEP(pdev, CDC_OUT_EP);
- USBD_LL_CloseEP(pdev, CDC_CMD_EP);
-
- // DeInit physical Interface components
- CDC_fops->DeInit();
-#endif
-
-#if USE_MSC
- //----------------------------------
- // MSC component
-
- // close endpoints
- USBD_LL_CloseEP(pdev, MSC_OUT_EP);
- USBD_LL_CloseEP(pdev, MSC_IN_EP);
-
- // DeInit the BOT layer
- MSC_BOT_DeInit(pdev);
-
- // clear the pointer
- pdev->pClassData = NULL;
-#endif
-
- return 0;
-}
-
-static uint8_t USBD_CDC_MSC_Setup(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req) {
-
- /*
- printf("SU: %x %x %x %x\n", req->bmRequest, req->bRequest, req->wValue, req->wIndex);
- This is what we get when MSC is IFACE=0 and CDC is IFACE=1,2:
- SU: 21 22 0 1 -- USB_REQ_TYPE_CLASS | USB_REQ_RECIPIENT_INTERFACE; CDC_SET_CONTROL_LINE_STATE
- SU: 21 20 0 1 -- USB_REQ_TYPE_CLASS | USB_REQ_RECIPIENT_INTERFACE; CDC_SET_LINE_CODING
- SU: a1 fe 0 0 -- 0x80 | USB_REQ_TYPE_CLASS | USB_REQ_RECIPIENT_INTERFACE; BOT_GET_MAX_LUN; 0; 0
- SU: 21 22 3 1 -- USB_REQ_TYPE_CLASS | USB_REQ_RECIPIENT_INTERFACE; CDC_SET_CONTROL_LINE_STATE
- */
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK) {
-
- // Class request
- case USB_REQ_TYPE_CLASS:
- // req->wIndex is the recipient interface number
- if (0) {
-#if USE_CDC
- } else if (req->wIndex == CDC_IFACE_NUM) {
- // CDC component
- if (req->wLength) {
- if (req->bmRequest & 0x80) {
- // device-to-host request
- CDC_fops->Control(req->bRequest, (uint8_t*)CDC_ClassData.data, req->wLength);
- USBD_CtlSendData(pdev, (uint8_t*)CDC_ClassData.data, req->wLength);
- } else {
- // host-to-device request
- CDC_ClassData.CmdOpCode = req->bRequest;
- CDC_ClassData.CmdLength = req->wLength;
- USBD_CtlPrepareRx(pdev, (uint8_t*)CDC_ClassData.data, req->wLength);
- }
- } else {
- // Not a Data request
- // Transfer the command to the interface layer
- return CDC_fops->Control(req->bRequest, NULL, req->wValue);
- }
- break;
-#endif
-#if USE_MSC
- } else if (req->wIndex == MSC_IFACE_NUM) {
- // MSC component
- switch (req->bRequest) {
- case BOT_GET_MAX_LUN :
-
- if((req->wValue == 0) &&
- (req->wLength == 1) &&
- ((req->bmRequest & 0x80) == 0x80))
- {
- MSC_BOT_ClassData.max_lun = MSC_fops->GetMaxLun();
- USBD_CtlSendData (pdev, (uint8_t *)&MSC_BOT_ClassData.max_lun, 1);
- }
- else
- {
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
-
- case BOT_RESET :
- if((req->wValue == 0) &&
- (req->wLength == 0) &&
- ((req->bmRequest & 0x80) != 0x80))
- {
- MSC_BOT_Reset(pdev);
- }
- else
- {
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
-
- default:
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
- }
-#endif
- break;
-
- /* Interface & Endpoint request */
- case USB_REQ_TYPE_STANDARD:
-#if USE_MSC
- // MSC only
- switch (req->bRequest) {
- case USB_REQ_GET_INTERFACE :
- USBD_CtlSendData(pdev, (uint8_t *)&MSC_BOT_ClassData.interface, 1);
- break;
-
- case USB_REQ_SET_INTERFACE :
- MSC_BOT_ClassData.interface = (uint8_t)(req->wValue);
- break;
-
- case USB_REQ_CLEAR_FEATURE:
- /* Flush the FIFO and Clear the stall status */
- USBD_LL_FlushEP(pdev, (uint8_t)req->wIndex);
-
- /* Re-activate the EP */
- USBD_LL_CloseEP (pdev , (uint8_t)req->wIndex);
- if((((uint8_t)req->wIndex) & 0x80) == 0x80) {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev, MSC_IN_EP, USBD_EP_TYPE_BULK, MSC_MAX_FS_PACKET);
- } else {
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev, MSC_OUT_EP, USBD_EP_TYPE_BULK, MSC_MAX_FS_PACKET);
- }
- /* Handle BOT error */
- MSC_BOT_CplClrFeature(pdev, (uint8_t)req->wIndex);
- break;
- }
-#endif
- break;
- }
- return USBD_OK;
-}
-
-static uint8_t USBD_CDC_MSC_EP0_RxReady(USBD_HandleTypeDef *pdev) {
- if((CDC_fops != NULL) && (CDC_ClassData.CmdOpCode != 0xFF)) {
- CDC_fops->Control(CDC_ClassData.CmdOpCode,
- (uint8_t *)CDC_ClassData.data,
- CDC_ClassData.CmdLength);
- CDC_ClassData.CmdOpCode = 0xFF;
-
- }
- return USBD_OK;
-}
-
-static uint8_t USBD_CDC_MSC_DataIn(USBD_HandleTypeDef *pdev, uint8_t epnum) {
- switch (epnum) {
-#if USE_CDC
- case (CDC_IN_EP & 0x7f):
- case (CDC_CMD_EP & 0x7f):
- CDC_ClassData.TxState = 0;
- return USBD_OK;
-#endif
-
- case (MSC_IN_EP & 0x7f):
- MSC_BOT_DataIn(pdev, epnum);
- return USBD_OK;
- }
-
- return USBD_OK;
-}
-
-static uint8_t USBD_CDC_MSC_DataOut(USBD_HandleTypeDef *pdev, uint8_t epnum) {
- switch (epnum) {
-#if USE_CDC
- case (CDC_OUT_EP & 0x7f):
- /* Get the received data length */
- CDC_ClassData.RxLength = USBD_LL_GetRxDataSize (pdev, epnum);
-
- /* USB data will be immediately processed, this allow next USB traffic being
- NAKed till the end of the application Xfer */
- CDC_fops->Receive(CDC_ClassData.RxBuffer, &CDC_ClassData.RxLength);
-
- return USBD_OK;
-#endif
-
- case (MSC_OUT_EP & 0x7f):
- MSC_BOT_DataOut(pdev, epnum);
- return USBD_OK;
- }
-
- return USBD_OK;
-}
-
-static uint8_t *USBD_CDC_MSC_GetFSCfgDesc(uint16_t *length) {
- *length = sizeof(USBD_CDC_MSC_CfgFSDesc);
- return USBD_CDC_MSC_CfgFSDesc;
-}
-
-static uint8_t *USBD_CDC_MSC_GetHSCfgDesc(uint16_t *length) {
- *length = 0;
- return USBD_CDC_MSC_CfgFSDesc; // need to return something because the USB driver writes bytes to the result
-}
-
-static uint8_t *USBD_CDC_MSC_GetOtherSpeedCfgDesc (uint16_t *length) {
- *length = 0;
- return USBD_CDC_MSC_CfgFSDesc; // need to return something because the USB driver writes bytes to the result
-}
-
-uint8_t *USBD_CDC_MSC_GetDeviceQualifierDescriptor (uint16_t *length) {
- *length = sizeof(USBD_CDC_MSC_DeviceQualifierDesc);
- return USBD_CDC_MSC_DeviceQualifierDesc;
-}
-
-uint8_t USBD_CDC_RegisterInterface(USBD_HandleTypeDef *pdev, USBD_CDC_ItfTypeDef *fops) {
- if (fops == NULL) {
- return USBD_FAIL;
- } else {
- CDC_fops = fops;
- return USBD_OK;
- }
-}
-
-/**
- * @brief USBD_CDC_SetTxBuffer
- * @param pdev: device instance
- * @param pbuff: Tx Buffer
- * @retval status
- */
-uint8_t USBD_CDC_SetTxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff,
- uint16_t length)
-{
- CDC_ClassData.TxBuffer = pbuff;
- CDC_ClassData.TxLength = length;
-
- return USBD_OK;
-}
-
-
-/**
- * @brief USBD_CDC_SetRxBuffer
- * @param pdev: device instance
- * @param pbuff: Rx Buffer
- * @retval status
- */
-uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev,
- uint8_t *pbuff)
-{
- CDC_ClassData.RxBuffer = pbuff;
-
- return USBD_OK;
-}
-
-/**
- * @brief USBD_CDC_DataOut
- * Data received on non-control Out endpoint
- * @param pdev: device instance
- * @param epnum: endpoint number
- * @retval status
- */
-uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev) {
- if(CDC_ClassData.TxState == 0) {
-
- /* Transmit next packet */
- USBD_LL_Transmit(pdev,
- CDC_IN_EP,
- CDC_ClassData.TxBuffer,
- CDC_ClassData.TxLength);
-
- /* Tx Transfer in progress */
- CDC_ClassData.TxState = 1;
- return USBD_OK;
- }
- else
- {
- return USBD_BUSY;
- }
-}
-
-
-/**
- * @brief USBD_CDC_ReceivePacket
- * prepare OUT Endpoint for reception
- * @param pdev: device instance
- * @retval status
- */
-uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev) {
- // Suspend or Resume USB Out process
- if (pdev->dev_speed == USBD_SPEED_HIGH) {
- return USBD_FAIL;
- }
-
- // Prepare Out endpoint to receive next packet */
- USBD_LL_PrepareReceive(pdev,
- CDC_OUT_EP,
- CDC_ClassData.RxBuffer,
- CDC_DATA_FS_OUT_PACKET_SIZE);
-
- return USBD_OK;
-}
-
-uint8_t USBD_MSC_RegisterStorage(USBD_HandleTypeDef *pdev, USBD_StorageTypeDef *fops) {
- if (fops == NULL) {
- return USBD_FAIL;
- } else {
- MSC_fops = fops;
- pdev->pUserData = fops; // MSC uses pUserData because SCSI and BOT reference it
- return USBD_OK;
- }
-}
-
-// CDC + MSC interface class callbacks structure
-USBD_ClassTypeDef USBD_CDC_MSC = {
- USBD_CDC_MSC_Init,
- USBD_CDC_MSC_DeInit,
- USBD_CDC_MSC_Setup,
- NULL, // EP0_TxSent
- USBD_CDC_MSC_EP0_RxReady,
- USBD_CDC_MSC_DataIn,
- USBD_CDC_MSC_DataOut,
- NULL, // SOF
- NULL,
- NULL,
- USBD_CDC_MSC_GetHSCfgDesc,
- USBD_CDC_MSC_GetFSCfgDesc,
- USBD_CDC_MSC_GetOtherSpeedCfgDesc,
- USBD_CDC_MSC_GetDeviceQualifierDescriptor,
-};
diff --git a/stmhal/usbdev/class/cdc_msc/src/usbd_msc_bot.c b/stmhal/usbdev/class/cdc_msc/src/usbd_msc_bot.c
deleted file mode 100644
index 69c34a5838..0000000000
--- a/stmhal/usbdev/class/cdc_msc/src/usbd_msc_bot.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_bot.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the BOT protocol core functions.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_bot.h"
-#include "usbd_msc_scsi.h"
-#include "usbd_cdc_msc.h"
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_BOT
- * @brief BOT protocol module
- * @{
- */
-
-/** @defgroup MSC_BOT_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Variables
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_FunctionPrototypes
- * @{
- */
-static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev);
-
-static void MSC_BOT_SendData (USBD_HandleTypeDef *pdev,
- uint8_t* pbuf,
- uint16_t len);
-
-static void MSC_BOT_Abort(USBD_HandleTypeDef *pdev);
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Functions
- * @{
- */
-
-
-
-/**
-* @brief MSC_BOT_Init
-* Initialize the BOT Process
-* @param pdev: device instance
-* @retval None
-*/
-void MSC_BOT_Init (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->bot_state = USBD_BOT_IDLE;
- hmsc->bot_status = USBD_BOT_STATUS_NORMAL;
-
- hmsc->scsi_sense_tail = 0;
- hmsc->scsi_sense_head = 0;
-
- ((USBD_StorageTypeDef *)pdev->pUserData)->Init(0);
-
- USBD_LL_FlushEP(pdev, MSC_OUT_EP);
- USBD_LL_FlushEP(pdev, MSC_IN_EP);
-
- /* Prapare EP to Receive First BOT Cmd */
- USBD_LL_PrepareReceive (pdev,
- MSC_OUT_EP,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
-}
-
-/**
-* @brief MSC_BOT_Reset
-* Reset the BOT Machine
-* @param pdev: device instance
-* @retval None
-*/
-void MSC_BOT_Reset (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->bot_state = USBD_BOT_IDLE;
- hmsc->bot_status = USBD_BOT_STATUS_RECOVERY;
-
- /* Prapare EP to Receive First BOT Cmd */
- USBD_LL_PrepareReceive (pdev,
- MSC_OUT_EP,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
-}
-
-/**
-* @brief MSC_BOT_DeInit
-* Uninitialize the BOT Machine
-* @param pdev: device instance
-* @retval None
-*/
-void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- hmsc->bot_state = USBD_BOT_IDLE;
-}
-
-/**
-* @brief MSC_BOT_DataIn
-* Handle BOT IN data stage
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval None
-*/
-void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- switch (hmsc->bot_state)
- {
- case USBD_BOT_DATA_IN:
- if(SCSI_ProcessCmd(pdev,
- hmsc->cbw.bLUN,
- &hmsc->cbw.CB[0]) < 0)
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
- }
- break;
-
- case USBD_BOT_SEND_DATA:
- case USBD_BOT_LAST_DATA_IN:
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_PASSED);
-
- break;
-
- default:
- break;
- }
-}
-/**
-* @brief MSC_BOT_DataOut
-* Proccess MSC OUT data
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval None
-*/
-void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- switch (hmsc->bot_state)
- {
- case USBD_BOT_IDLE:
- MSC_BOT_CBW_Decode(pdev);
- break;
-
- case USBD_BOT_DATA_OUT:
-
- if(SCSI_ProcessCmd(pdev,
- hmsc->cbw.bLUN,
- &hmsc->cbw.CB[0]) < 0)
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
- }
-
- break;
-
- default:
- break;
- }
-}
-
-/**
-* @brief MSC_BOT_CBW_Decode
-* Decode the CBW command and set the BOT state machine accordingtly
-* @param pdev: device instance
-* @retval None
-*/
-static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->csw.dTag = hmsc->cbw.dTag;
- hmsc->csw.dDataResidue = hmsc->cbw.dDataLength;
-
- if ((USBD_LL_GetRxDataSize (pdev ,MSC_OUT_EP) != USBD_BOT_CBW_LENGTH) ||
- (hmsc->cbw.dSignature != USBD_BOT_CBW_SIGNATURE)||
- (hmsc->cbw.bLUN > 1) ||
- (hmsc->cbw.bCBLength < 1) ||
- (hmsc->cbw.bCBLength > 16))
- {
-
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
-
- hmsc->bot_status = USBD_BOT_STATUS_ERROR;
- MSC_BOT_Abort(pdev);
-
- }
- else
- {
- if(SCSI_ProcessCmd(pdev,
- hmsc->cbw.bLUN,
- &hmsc->cbw.CB[0]) < 0)
- {
- if(hmsc->bot_state == USBD_BOT_NO_DATA)
- {
- MSC_BOT_SendCSW (pdev,
- USBD_CSW_CMD_FAILED);
- }
- else
- {
- MSC_BOT_Abort(pdev);
- }
- }
- /*Burst xfer handled internally*/
- else if ((hmsc->bot_state != USBD_BOT_DATA_IN) &&
- (hmsc->bot_state != USBD_BOT_DATA_OUT) &&
- (hmsc->bot_state != USBD_BOT_LAST_DATA_IN))
- {
- if (hmsc->bot_data_length > 0)
- {
- MSC_BOT_SendData(pdev,
- hmsc->bot_data,
- hmsc->bot_data_length);
- }
- else if (hmsc->bot_data_length == 0)
- {
- MSC_BOT_SendCSW (pdev,
- USBD_CSW_CMD_PASSED);
- }
- }
- }
-}
-
-/**
-* @brief MSC_BOT_SendData
-* Send the requested data
-* @param pdev: device instance
-* @param buf: pointer to data buffer
-* @param len: Data Length
-* @retval None
-*/
-static void MSC_BOT_SendData(USBD_HandleTypeDef *pdev,
- uint8_t* buf,
- uint16_t len)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- len = MIN (hmsc->cbw.dDataLength, len);
- hmsc->csw.dDataResidue -= len;
- hmsc->csw.bStatus = USBD_CSW_CMD_PASSED;
- hmsc->bot_state = USBD_BOT_SEND_DATA;
-
- USBD_LL_Transmit (pdev, MSC_IN_EP, buf, len);
-}
-
-/**
-* @brief MSC_BOT_SendCSW
-* Send the Command Status Wrapper
-* @param pdev: device instance
-* @param status : CSW status
-* @retval None
-*/
-void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev,
- uint8_t CSW_Status)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->csw.dSignature = USBD_BOT_CSW_SIGNATURE;
- hmsc->csw.bStatus = CSW_Status;
- hmsc->bot_state = USBD_BOT_IDLE;
-
- USBD_LL_Transmit (pdev,
- MSC_IN_EP,
- (uint8_t *)&hmsc->csw,
- USBD_BOT_CSW_LENGTH);
-
- /* Prapare EP to Receive next Cmd */
- USBD_LL_PrepareReceive (pdev,
- MSC_OUT_EP,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
-
-}
-
-/**
-* @brief MSC_BOT_Abort
-* Abort the current transfer
-* @param pdev: device instance
-* @retval status
-*/
-
-static void MSC_BOT_Abort (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if ((hmsc->cbw.bmFlags == 0) &&
- (hmsc->cbw.dDataLength != 0) &&
- (hmsc->bot_status == USBD_BOT_STATUS_NORMAL) )
- {
- USBD_LL_StallEP(pdev, MSC_OUT_EP );
- }
- USBD_LL_StallEP(pdev, MSC_IN_EP);
-
- if(hmsc->bot_status == USBD_BOT_STATUS_ERROR)
- {
- USBD_LL_PrepareReceive (pdev,
- MSC_OUT_EP,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
- }
-}
-
-/**
-* @brief MSC_BOT_CplClrFeature
-* Complete the clear feature request
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval None
-*/
-
-void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if(hmsc->bot_status == USBD_BOT_STATUS_ERROR )/* Bad CBW Signature */
- {
- USBD_LL_StallEP(pdev, MSC_IN_EP);
- hmsc->bot_status = USBD_BOT_STATUS_NORMAL;
- }
- else if(((epnum & 0x80) == 0x80) && ( hmsc->bot_status != USBD_BOT_STATUS_RECOVERY))
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
- }
-
-}
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc_msc/src/usbd_msc_scsi.c b/stmhal/usbdev/class/cdc_msc/src/usbd_msc_scsi.c
deleted file mode 100644
index dd3de90feb..0000000000
--- a/stmhal/usbdev/class/cdc_msc/src/usbd_msc_scsi.c
+++ /dev/null
@@ -1,770 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_scsi.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the USBD SCSI layer functions.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_bot.h"
-#include "usbd_msc_scsi.h"
-#include "usbd_msc_data.h"
-#include "usbd_cdc_msc.h"
-
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_SCSI
- * @brief Mass storage SCSI layer module
- * @{
- */
-
-/** @defgroup MSC_SCSI_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Variables
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_FunctionPrototypes
- * @{
- */
-static int8_t SCSI_TestUnitReady(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_Inquiry(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ReadFormatCapacity(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ReadCapacity10(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_RequestSense (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_StartStopUnit(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ModeSense6 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ModeSense10 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_Write10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params);
-static int8_t SCSI_Read10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params);
-static int8_t SCSI_Verify10(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_CheckAddressRange (USBD_HandleTypeDef *pdev,
- uint8_t lun ,
- uint32_t blk_offset ,
- uint16_t blk_nbr);
-static int8_t SCSI_ProcessRead (USBD_HandleTypeDef *pdev,
- uint8_t lun);
-
-static int8_t SCSI_ProcessWrite (USBD_HandleTypeDef *pdev,
- uint8_t lun);
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Functions
- * @{
- */
-
-
-/**
-* @brief SCSI_ProcessCmd
-* Process SCSI commands
-* @param pdev: device instance
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev,
- uint8_t lun,
- uint8_t *params)
-{
-
- switch (params[0])
- {
- case SCSI_TEST_UNIT_READY:
- return SCSI_TestUnitReady(pdev, lun, params);
-
- case SCSI_REQUEST_SENSE:
- return SCSI_RequestSense (pdev, lun, params);
- case SCSI_INQUIRY:
- return SCSI_Inquiry(pdev, lun, params);
-
- case SCSI_START_STOP_UNIT:
- return SCSI_StartStopUnit(pdev, lun, params);
-
- case SCSI_ALLOW_MEDIUM_REMOVAL:
- return SCSI_StartStopUnit(pdev, lun, params);
-
- case SCSI_MODE_SENSE6:
- return SCSI_ModeSense6 (pdev, lun, params);
-
- case SCSI_MODE_SENSE10:
- return SCSI_ModeSense10 (pdev, lun, params);
-
- case SCSI_READ_FORMAT_CAPACITIES:
- return SCSI_ReadFormatCapacity(pdev, lun, params);
-
- case SCSI_READ_CAPACITY10:
- return SCSI_ReadCapacity10(pdev, lun, params);
-
- case SCSI_READ10:
- return SCSI_Read10(pdev, lun, params);
-
- case SCSI_WRITE10:
- return SCSI_Write10(pdev, lun, params);
-
- case SCSI_VERIFY10:
- return SCSI_Verify10(pdev, lun, params);
-
- default:
- SCSI_SenseCode(pdev,
- lun,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-}
-
-
-/**
-* @brief SCSI_TestUnitReady
-* Process SCSI Test Unit Ready Command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_TestUnitReady(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- /* case 9 : Hi > D0 */
- if (hmsc->cbw.dDataLength != 0)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
-
- hmsc->bot_state = USBD_BOT_NO_DATA;
- return -1;
- }
- hmsc->bot_data_length = 0;
- return 0;
-}
-
-/**
-* @brief SCSI_Inquiry
-* Process Inquiry command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_Inquiry(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- uint8_t* pPage;
- uint16_t len;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if (params[1] & 0x01)/*Evpd is set*/
- {
- pPage = (uint8_t *)MSC_Page00_Inquiry_Data;
- len = LENGTH_INQUIRY_PAGE00;
- }
- else
- {
-
- pPage = (uint8_t *)&((USBD_StorageTypeDef *)pdev->pUserData)->pInquiry[lun * STANDARD_INQUIRY_DATA_LEN];
- len = pPage[4] + 5;
-
- if (params[4] <= len)
- {
- len = params[4];
- }
- }
- hmsc->bot_data_length = len;
-
- while (len)
- {
- len--;
- hmsc->bot_data[len] = pPage[len];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ReadCapacity10
-* Process Read Capacity 10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ReadCapacity10(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->GetCapacity(lun, &hmsc->scsi_blk_nbr, &hmsc->scsi_blk_size) != 0)
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
- else
- {
-
- hmsc->bot_data[0] = (uint8_t)((hmsc->scsi_blk_nbr - 1) >> 24);
- hmsc->bot_data[1] = (uint8_t)((hmsc->scsi_blk_nbr - 1) >> 16);
- hmsc->bot_data[2] = (uint8_t)((hmsc->scsi_blk_nbr - 1) >> 8);
- hmsc->bot_data[3] = (uint8_t)(hmsc->scsi_blk_nbr - 1);
-
- hmsc->bot_data[4] = (uint8_t)(hmsc->scsi_blk_size >> 24);
- hmsc->bot_data[5] = (uint8_t)(hmsc->scsi_blk_size >> 16);
- hmsc->bot_data[6] = (uint8_t)(hmsc->scsi_blk_size >> 8);
- hmsc->bot_data[7] = (uint8_t)(hmsc->scsi_blk_size);
-
- hmsc->bot_data_length = 8;
- return 0;
- }
-}
-/**
-* @brief SCSI_ReadFormatCapacity
-* Process Read Format Capacity command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ReadFormatCapacity(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- uint16_t blk_size;
- uint32_t blk_nbr;
- uint16_t i;
-
- for(i=0 ; i < 12 ; i++)
- {
- hmsc->bot_data[i] = 0;
- }
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->GetCapacity(lun, &blk_nbr, &blk_size) != 0)
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
- else
- {
- hmsc->bot_data[3] = 0x08;
- hmsc->bot_data[4] = (uint8_t)((blk_nbr - 1) >> 24);
- hmsc->bot_data[5] = (uint8_t)((blk_nbr - 1) >> 16);
- hmsc->bot_data[6] = (uint8_t)((blk_nbr - 1) >> 8);
- hmsc->bot_data[7] = (uint8_t)(blk_nbr - 1);
-
- hmsc->bot_data[8] = 0x02;
- hmsc->bot_data[9] = (uint8_t)(blk_size >> 16);
- hmsc->bot_data[10] = (uint8_t)(blk_size >> 8);
- hmsc->bot_data[11] = (uint8_t)(blk_size);
-
- hmsc->bot_data_length = 12;
- return 0;
- }
-}
-/**
-* @brief SCSI_ModeSense6
-* Process Mode Sense6 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ModeSense6 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- uint16_t len = 8 ;
- hmsc->bot_data_length = len;
-
- while (len)
- {
- len--;
- hmsc->bot_data[len] = MSC_Mode_Sense6_data[len];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ModeSense10
-* Process Mode Sense10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ModeSense10 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- uint16_t len = 8;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->bot_data_length = len;
-
- while (len)
- {
- len--;
- hmsc->bot_data[len] = MSC_Mode_Sense10_data[len];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_RequestSense
-* Process Request Sense command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-
-static int8_t SCSI_RequestSense (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- uint8_t i;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- for(i=0 ; i < REQUEST_SENSE_DATA_LEN ; i++)
- {
- hmsc->bot_data[i] = 0;
- }
-
- hmsc->bot_data[0] = 0x70;
- hmsc->bot_data[7] = REQUEST_SENSE_DATA_LEN - 6;
-
- if((hmsc->scsi_sense_head != hmsc->scsi_sense_tail)) {
-
- hmsc->bot_data[2] = hmsc->scsi_sense[hmsc->scsi_sense_head].Skey;
- hmsc->bot_data[12] = hmsc->scsi_sense[hmsc->scsi_sense_head].w.b.ASCQ;
- hmsc->bot_data[13] = hmsc->scsi_sense[hmsc->scsi_sense_head].w.b.ASC;
- hmsc->scsi_sense_head++;
-
- if (hmsc->scsi_sense_head == SENSE_LIST_DEEPTH)
- {
- hmsc->scsi_sense_head = 0;
- }
- }
- hmsc->bot_data_length = REQUEST_SENSE_DATA_LEN;
-
- if (params[4] <= REQUEST_SENSE_DATA_LEN)
- {
- hmsc->bot_data_length = params[4];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_SenseCode
-* Load the last error code in the error list
-* @param lun: Logical unit number
-* @param sKey: Sense Key
-* @param ASC: Additional Sense Key
-* @retval none
-
-*/
-void SCSI_SenseCode(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t sKey, uint8_t ASC)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->scsi_sense[hmsc->scsi_sense_tail].Skey = sKey;
- hmsc->scsi_sense[hmsc->scsi_sense_tail].w.ASC = ASC << 8;
- hmsc->scsi_sense_tail++;
- if (hmsc->scsi_sense_tail == SENSE_LIST_DEEPTH)
- {
- hmsc->scsi_sense_tail = 0;
- }
-}
-/**
-* @brief SCSI_StartStopUnit
-* Process Start Stop Unit command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_StartStopUnit(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- hmsc->bot_data_length = 0;
- return 0;
-}
-
-/**
-* @brief SCSI_Read10
-* Process Read10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_Read10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if(hmsc->bot_state == USBD_BOT_IDLE) /* Idle */
- {
-
- /* case 10 : Ho <> Di */
-
- if ((hmsc->cbw.bmFlags & 0x80) != 0x80)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
-
- hmsc->scsi_blk_addr = (params[2] << 24) | \
- (params[3] << 16) | \
- (params[4] << 8) | \
- params[5];
-
- hmsc->scsi_blk_len = (params[7] << 8) | \
- params[8];
-
-
-
- if( SCSI_CheckAddressRange(pdev, lun, hmsc->scsi_blk_addr, hmsc->scsi_blk_len) < 0)
- {
- return -1; /* error */
- }
-
- hmsc->bot_state = USBD_BOT_DATA_IN;
- hmsc->scsi_blk_addr *= hmsc->scsi_blk_size;
- hmsc->scsi_blk_len *= hmsc->scsi_blk_size;
-
- /* cases 4,5 : Hi <> Dn */
- if (hmsc->cbw.dDataLength != hmsc->scsi_blk_len)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
- }
- hmsc->bot_data_length = MSC_MEDIA_PACKET;
-
- return SCSI_ProcessRead(pdev, lun);
-}
-
-/**
-* @brief SCSI_Write10
-* Process Write10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-
-static int8_t SCSI_Write10 (USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if (hmsc->bot_state == USBD_BOT_IDLE) /* Idle */
- {
-
- /* case 8 : Hi <> Do */
-
- if ((hmsc->cbw.bmFlags & 0x80) == 0x80)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- /* Check whether Media is ready */
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
-
- /* Check If media is write-protected */
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsWriteProtected(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- WRITE_PROTECTED);
- return -1;
- }
-
-
- hmsc->scsi_blk_addr = (params[2] << 24) | \
- (params[3] << 16) | \
- (params[4] << 8) | \
- params[5];
- hmsc->scsi_blk_len = (params[7] << 8) | \
- params[8];
-
- /* check if LBA address is in the right range */
- if(SCSI_CheckAddressRange(pdev,
- lun,
- hmsc->scsi_blk_addr,
- hmsc->scsi_blk_len) < 0)
- {
- return -1; /* error */
- }
-
- hmsc->scsi_blk_addr *= hmsc->scsi_blk_size;
- hmsc->scsi_blk_len *= hmsc->scsi_blk_size;
-
- /* cases 3,11,13 : Hn,Ho <> D0 */
- if (hmsc->cbw.dDataLength != hmsc->scsi_blk_len)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- /* Prepare EP to receive first data packet */
- hmsc->bot_state = USBD_BOT_DATA_OUT;
- USBD_LL_PrepareReceive (pdev,
- MSC_OUT_EP,
- hmsc->bot_data,
- MIN (hmsc->scsi_blk_len, MSC_MEDIA_PACKET));
- }
- else /* Write Process ongoing */
- {
- return SCSI_ProcessWrite(pdev, lun);
- }
- return 0;
-}
-
-
-/**
-* @brief SCSI_Verify10
-* Process Verify10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-
-static int8_t SCSI_Verify10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if ((params[1]& 0x02) == 0x02)
- {
- SCSI_SenseCode (pdev,
- lun,
- ILLEGAL_REQUEST,
- INVALID_FIELED_IN_COMMAND);
- return -1; /* Error, Verify Mode Not supported*/
- }
-
- if(SCSI_CheckAddressRange(pdev,
- lun,
- hmsc->scsi_blk_addr,
- hmsc->scsi_blk_len) < 0)
- {
- return -1; /* error */
- }
- hmsc->bot_data_length = 0;
- return 0;
-}
-
-/**
-* @brief SCSI_CheckAddressRange
-* Check address range
-* @param lun: Logical unit number
-* @param blk_offset: first block address
-* @param blk_nbr: number of block to be processed
-* @retval status
-*/
-static int8_t SCSI_CheckAddressRange (USBD_HandleTypeDef *pdev, uint8_t lun , uint32_t blk_offset , uint16_t blk_nbr)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if ((blk_offset + blk_nbr) > hmsc->scsi_blk_nbr )
- {
- SCSI_SenseCode(pdev,
- lun,
- ILLEGAL_REQUEST,
- ADDRESS_OUT_OF_RANGE);
- return -1;
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ProcessRead
-* Handle Read Process
-* @param lun: Logical unit number
-* @retval status
-*/
-static int8_t SCSI_ProcessRead (USBD_HandleTypeDef *pdev, uint8_t lun)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- uint32_t len;
-
- len = MIN(hmsc->scsi_blk_len , MSC_MEDIA_PACKET);
-
- if( ((USBD_StorageTypeDef *)pdev->pUserData)->Read(lun ,
- hmsc->bot_data,
- hmsc->scsi_blk_addr / hmsc->scsi_blk_size,
- len / hmsc->scsi_blk_size) < 0)
- {
-
- SCSI_SenseCode(pdev,
- lun,
- HARDWARE_ERROR,
- UNRECOVERED_READ_ERROR);
- return -1;
- }
-
-
- USBD_LL_Transmit (pdev,
- MSC_IN_EP,
- hmsc->bot_data,
- len);
-
-
- hmsc->scsi_blk_addr += len;
- hmsc->scsi_blk_len -= len;
-
- /* case 6 : Hi = Di */
- hmsc->csw.dDataResidue -= len;
-
- if (hmsc->scsi_blk_len == 0)
- {
- hmsc->bot_state = USBD_BOT_LAST_DATA_IN;
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ProcessWrite
-* Handle Write Process
-* @param lun: Logical unit number
-* @retval status
-*/
-
-static int8_t SCSI_ProcessWrite (USBD_HandleTypeDef *pdev, uint8_t lun)
-{
- uint32_t len;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- len = MIN(hmsc->scsi_blk_len , MSC_MEDIA_PACKET);
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->Write(lun ,
- hmsc->bot_data,
- hmsc->scsi_blk_addr / hmsc->scsi_blk_size,
- len / hmsc->scsi_blk_size) < 0)
- {
- SCSI_SenseCode(pdev,
- lun,
- HARDWARE_ERROR,
- WRITE_FAULT);
- return -1;
- }
-
-
- hmsc->scsi_blk_addr += len;
- hmsc->scsi_blk_len -= len;
-
- /* case 12 : Ho = Do */
- hmsc->csw.dDataResidue -= len;
-
- if (hmsc->scsi_blk_len == 0)
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_PASSED);
- }
- else
- {
- /* Prapare EP to Receive next packet */
- USBD_LL_PrepareReceive (pdev,
- MSC_OUT_EP,
- hmsc->bot_data,
- MIN (hmsc->scsi_blk_len, MSC_MEDIA_PACKET));
- }
-
- return 0;
-}
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_bot.h b/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_bot.h
deleted file mode 100644
index 41f8ab5a53..0000000000
--- a/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_bot.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_bot.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header for the usbd_msc_bot.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#include "usbd_core.h"
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_MSC_BOT_H
-#define __USBD_MSC_BOT_H
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup MSC_BOT
- * @brief This file is the Header file for usbd_bot.c
- * @{
- */
-
-
-/** @defgroup USBD_CORE_Exported_Defines
- * @{
- */
-#define USBD_BOT_IDLE 0 /* Idle state */
-#define USBD_BOT_DATA_OUT 1 /* Data Out state */
-#define USBD_BOT_DATA_IN 2 /* Data In state */
-#define USBD_BOT_LAST_DATA_IN 3 /* Last Data In Last */
-#define USBD_BOT_SEND_DATA 4 /* Send Immediate data */
-#define USBD_BOT_NO_DATA 5 /* No data Stage */
-
-#define USBD_BOT_CBW_SIGNATURE 0x43425355
-#define USBD_BOT_CSW_SIGNATURE 0x53425355
-#define USBD_BOT_CBW_LENGTH 31
-#define USBD_BOT_CSW_LENGTH 13
-#define USBD_BOT_MAX_DATA 256
-
-/* CSW Status Definitions */
-#define USBD_CSW_CMD_PASSED 0x00
-#define USBD_CSW_CMD_FAILED 0x01
-#define USBD_CSW_PHASE_ERROR 0x02
-
-/* BOT Status */
-#define USBD_BOT_STATUS_NORMAL 0
-#define USBD_BOT_STATUS_RECOVERY 1
-#define USBD_BOT_STATUS_ERROR 2
-
-
-#define USBD_DIR_IN 0
-#define USBD_DIR_OUT 1
-#define USBD_BOTH_DIR 2
-
-/**
- * @}
- */
-
-/** @defgroup MSC_CORE_Private_TypesDefinitions
- * @{
- */
-
-typedef struct
-{
- uint32_t dSignature;
- uint32_t dTag;
- uint32_t dDataLength;
- uint8_t bmFlags;
- uint8_t bLUN;
- uint8_t bCBLength;
- uint8_t CB[16];
- uint8_t ReservedForAlign;
-}
-USBD_MSC_BOT_CBWTypeDef;
-
-
-typedef struct
-{
- uint32_t dSignature;
- uint32_t dTag;
- uint32_t dDataResidue;
- uint8_t bStatus;
- uint8_t ReservedForAlign[3];
-}
-USBD_MSC_BOT_CSWTypeDef;
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_Types
- * @{
- */
-
-/**
- * @}
- */
-/** @defgroup USBD_CORE_Exported_FunctionsPrototypes
- * @{
- */
-void MSC_BOT_Init (USBD_HandleTypeDef *pdev);
-void MSC_BOT_Reset (USBD_HandleTypeDef *pdev);
-void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev);
-void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev,
- uint8_t CSW_Status);
-
-void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-/**
- * @}
- */
-
-#endif /* __USBD_MSC_BOT_H */
-/**
- * @}
- */
-
-/**
-* @}
-*/
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_data.h b/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_data.h
deleted file mode 100644
index f468267f43..0000000000
--- a/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_data.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_data.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header for the usbd_msc_data.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef _USBD_MSC_DATA_H_
-#define _USBD_MSC_DATA_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_conf.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USB_INFO
- * @brief general defines for the usb device library file
- * @{
- */
-
-/** @defgroup USB_INFO_Exported_Defines
- * @{
- */
-#define MODE_SENSE6_LEN 8
-#define MODE_SENSE10_LEN 8
-#define LENGTH_INQUIRY_PAGE00 7
-#define LENGTH_FORMAT_CAPACITIES 20
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_INFO_Exported_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_INFO_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_INFO_Exported_Variables
- * @{
- */
-extern const uint8_t MSC_Page00_Inquiry_Data[];
-extern const uint8_t MSC_Mode_Sense6_data[];
-extern const uint8_t MSC_Mode_Sense10_data[] ;
-
-/**
- * @}
- */
-
-/** @defgroup USBD_INFO_Exported_FunctionsPrototype
- * @{
- */
-
-/**
- * @}
- */
-
-#endif /* _USBD_MSC_DATA_H_ */
-
-/**
- * @}
- */
-
-/**
-* @}
-*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_scsi.h b/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_scsi.h
deleted file mode 100644
index dea247bca8..0000000000
--- a/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_msc_scsi.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_scsi.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header for the usbd_msc_scsi.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_MSC_SCSI_H
-#define __USBD_MSC_SCSI_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_def.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_SCSI
- * @brief header file for the storage disk file
- * @{
- */
-
-/** @defgroup USBD_SCSI_Exported_Defines
- * @{
- */
-
-#define SENSE_LIST_DEEPTH 4
-
-/* SCSI Commands */
-#define SCSI_FORMAT_UNIT 0x04
-#define SCSI_INQUIRY 0x12
-#define SCSI_MODE_SELECT6 0x15
-#define SCSI_MODE_SELECT10 0x55
-#define SCSI_MODE_SENSE6 0x1A
-#define SCSI_MODE_SENSE10 0x5A
-#define SCSI_ALLOW_MEDIUM_REMOVAL 0x1E
-#define SCSI_READ6 0x08
-#define SCSI_READ10 0x28
-#define SCSI_READ12 0xA8
-#define SCSI_READ16 0x88
-
-#define SCSI_READ_CAPACITY10 0x25
-#define SCSI_READ_CAPACITY16 0x9E
-
-#define SCSI_REQUEST_SENSE 0x03
-#define SCSI_START_STOP_UNIT 0x1B
-#define SCSI_TEST_UNIT_READY 0x00
-#define SCSI_WRITE6 0x0A
-#define SCSI_WRITE10 0x2A
-#define SCSI_WRITE12 0xAA
-#define SCSI_WRITE16 0x8A
-
-#define SCSI_VERIFY10 0x2F
-#define SCSI_VERIFY12 0xAF
-#define SCSI_VERIFY16 0x8F
-
-#define SCSI_SEND_DIAGNOSTIC 0x1D
-#define SCSI_READ_FORMAT_CAPACITIES 0x23
-
-#define NO_SENSE 0
-#define RECOVERED_ERROR 1
-#define NOT_READY 2
-#define MEDIUM_ERROR 3
-#define HARDWARE_ERROR 4
-#define ILLEGAL_REQUEST 5
-#define UNIT_ATTENTION 6
-#define DATA_PROTECT 7
-#define BLANK_CHECK 8
-#define VENDOR_SPECIFIC 9
-#define COPY_ABORTED 10
-#define ABORTED_COMMAND 11
-#define VOLUME_OVERFLOW 13
-#define MISCOMPARE 14
-
-
-#define INVALID_CDB 0x20
-#define INVALID_FIELED_IN_COMMAND 0x24
-#define PARAMETER_LIST_LENGTH_ERROR 0x1A
-#define INVALID_FIELD_IN_PARAMETER_LIST 0x26
-#define ADDRESS_OUT_OF_RANGE 0x21
-#define MEDIUM_NOT_PRESENT 0x3A
-#define MEDIUM_HAVE_CHANGED 0x28
-#define WRITE_PROTECTED 0x27
-#define UNRECOVERED_READ_ERROR 0x11
-#define WRITE_FAULT 0x03
-
-#define READ_FORMAT_CAPACITY_DATA_LEN 0x0C
-#define READ_CAPACITY10_DATA_LEN 0x08
-#define MODE_SENSE10_DATA_LEN 0x08
-#define MODE_SENSE6_DATA_LEN 0x04
-#define REQUEST_SENSE_DATA_LEN 0x12
-#define STANDARD_INQUIRY_DATA_LEN 0x24
-#define BLKVFY 0x04
-
-extern uint8_t Page00_Inquiry_Data[];
-extern uint8_t Standard_Inquiry_Data[];
-extern uint8_t Standard_Inquiry_Data2[];
-extern uint8_t Mode_Sense6_data[];
-extern uint8_t Mode_Sense10_data[];
-extern uint8_t Scsi_Sense_Data[];
-extern uint8_t ReadCapacity10_Data[];
-extern uint8_t ReadFormatCapacity_Data [];
-/**
- * @}
- */
-
-
-/** @defgroup USBD_SCSI_Exported_TypesDefinitions
- * @{
- */
-
-typedef struct _SENSE_ITEM {
- char Skey;
- union {
- struct _ASCs {
- char ASC;
- char ASCQ;
- }b;
- unsigned int ASC;
- char *pData;
- } w;
-} USBD_SCSI_SenseTypeDef;
-/**
- * @}
- */
-
-/** @defgroup USBD_SCSI_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_SCSI_Exported_Variables
- * @{
- */
-
-/**
- * @}
- */
-/** @defgroup USBD_SCSI_Exported_FunctionsPrototype
- * @{
- */
-int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev,
- uint8_t lun,
- uint8_t *cmd);
-
-void SCSI_SenseCode(USBD_HandleTypeDef *pdev,
- uint8_t lun,
- uint8_t sKey,
- uint8_t ASC);
-
-/**
- * @}
- */
-
-#endif /* __USBD_MSC_SCSI_H */
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
-* @}
-*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc.c b/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc.c
deleted file mode 100644
index 7817c98b1c..0000000000
--- a/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc.c
+++ /dev/null
@@ -1,609 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_core.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the MSC core functions.
- *
- * @verbatim
- *
- * ===================================================================
- * MSC Class Description
- * ===================================================================
- * This module manages the MSC class V1.0 following the "Universal
- * Serial Bus Mass Storage Class (MSC) Bulk-Only Transport (BOT) Version 1.0
- * Sep. 31, 1999".
- * This driver implements the following aspects of the specification:
- * - Bulk-Only Transport protocol
- * - Subclass : SCSI transparent command set (ref. SCSI Primary Commands - 3 (SPC-3))
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_CORE
- * @brief Mass storage core module
- * @{
- */
-
-/** @defgroup MSC_CORE_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_FunctionPrototypes
- * @{
- */
-uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-uint8_t USBD_MSC_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-uint8_t USBD_MSC_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-uint8_t USBD_MSC_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-
-uint8_t USBD_MSC_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-uint8_t *USBD_MSC_GetHSCfgDesc (uint16_t *length);
-
-uint8_t *USBD_MSC_GetFSCfgDesc (uint16_t *length);
-
-uint8_t *USBD_MSC_GetOtherSpeedCfgDesc (uint16_t *length);
-
-uint8_t *USBD_MSC_GetDeviceQualifierDescriptor (uint16_t *length);
-
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Variables
- * @{
- */
-
-
-USBD_ClassTypeDef USBD_MSC =
-{
- USBD_MSC_Init,
- USBD_MSC_DeInit,
- USBD_MSC_Setup,
- NULL, /*EP0_TxSent*/
- NULL, /*EP0_RxReady*/
- USBD_MSC_DataIn,
- USBD_MSC_DataOut,
- NULL, /*SOF */
- NULL,
- NULL,
- USBD_MSC_GetHSCfgDesc,
- USBD_MSC_GetFSCfgDesc,
- USBD_MSC_GetOtherSpeedCfgDesc,
- USBD_MSC_GetDeviceQualifierDescriptor,
-};
-
-/* USB Mass storage device Configuration Descriptor */
-/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
-__ALIGN_BEGIN uint8_t USBD_MSC_CfgHSDesc[USB_MSC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
-
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_MSC_CONFIG_DESC_SIZ,
-
- 0x00,
- 0x01, /* bNumInterfaces: 1 interface */
- 0x01, /* bConfigurationValue: */
- 0x04, /* iConfiguration: */
- 0xC0, /* bmAttributes: */
- 0x32, /* MaxPower 100 mA */
-
- /******************** Mass Storage interface ********************/
- 0x09, /* bLength: Interface Descriptor size */
- 0x04, /* bDescriptorType: */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints*/
- 0x08, /* bInterfaceClass: MSC Class */
- 0x06, /* bInterfaceSubClass : SCSI transparent*/
- 0x50, /* nInterfaceProtocol */
- 0x05, /* iInterface: */
- /******************** Mass Storage Endpoints ********************/
- 0x07, /*Endpoint descriptor length = 7*/
- 0x05, /*Endpoint descriptor type */
- MSC_EPIN_ADDR, /*Endpoint address (IN, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_HS_PACKET),
- HIBYTE(MSC_MAX_HS_PACKET),
- 0x00, /*Polling interval in milliseconds */
-
- 0x07, /*Endpoint descriptor length = 7 */
- 0x05, /*Endpoint descriptor type */
- MSC_EPOUT_ADDR, /*Endpoint address (OUT, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_HS_PACKET),
- HIBYTE(MSC_MAX_HS_PACKET),
- 0x00 /*Polling interval in milliseconds*/
-};
-
-/* USB Mass storage device Configuration Descriptor */
-/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
-uint8_t USBD_MSC_CfgFSDesc[USB_MSC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
-
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_MSC_CONFIG_DESC_SIZ,
-
- 0x00,
- 0x01, /* bNumInterfaces: 1 interface */
- 0x01, /* bConfigurationValue: */
- 0x04, /* iConfiguration: */
- 0xC0, /* bmAttributes: */
- 0x32, /* MaxPower 100 mA */
-
- /******************** Mass Storage interface ********************/
- 0x09, /* bLength: Interface Descriptor size */
- 0x04, /* bDescriptorType: */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints*/
- 0x08, /* bInterfaceClass: MSC Class */
- 0x06, /* bInterfaceSubClass : SCSI transparent*/
- 0x50, /* nInterfaceProtocol */
- 0x05, /* iInterface: */
- /******************** Mass Storage Endpoints ********************/
- 0x07, /*Endpoint descriptor length = 7*/
- 0x05, /*Endpoint descriptor type */
- MSC_EPIN_ADDR, /*Endpoint address (IN, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_FS_PACKET),
- HIBYTE(MSC_MAX_FS_PACKET),
- 0x00, /*Polling interval in milliseconds */
-
- 0x07, /*Endpoint descriptor length = 7 */
- 0x05, /*Endpoint descriptor type */
- MSC_EPOUT_ADDR, /*Endpoint address (OUT, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_FS_PACKET),
- HIBYTE(MSC_MAX_FS_PACKET),
- 0x00 /*Polling interval in milliseconds*/
-};
-
-__ALIGN_BEGIN uint8_t USBD_MSC_OtherSpeedCfgDesc[USB_MSC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
-
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION,
- USB_MSC_CONFIG_DESC_SIZ,
-
- 0x00,
- 0x01, /* bNumInterfaces: 1 interface */
- 0x01, /* bConfigurationValue: */
- 0x04, /* iConfiguration: */
- 0xC0, /* bmAttributes: */
- 0x32, /* MaxPower 100 mA */
-
- /******************** Mass Storage interface ********************/
- 0x09, /* bLength: Interface Descriptor size */
- 0x04, /* bDescriptorType: */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints*/
- 0x08, /* bInterfaceClass: MSC Class */
- 0x06, /* bInterfaceSubClass : SCSI transparent command set*/
- 0x50, /* nInterfaceProtocol */
- 0x05, /* iInterface: */
- /******************** Mass Storage Endpoints ********************/
- 0x07, /*Endpoint descriptor length = 7*/
- 0x05, /*Endpoint descriptor type */
- MSC_EPIN_ADDR, /*Endpoint address (IN, address 1) */
- 0x02, /*Bulk endpoint type */
- 0x40,
- 0x00,
- 0x00, /*Polling interval in milliseconds */
-
- 0x07, /*Endpoint descriptor length = 7 */
- 0x05, /*Endpoint descriptor type */
- MSC_EPOUT_ADDR, /*Endpoint address (OUT, address 1) */
- 0x02, /*Bulk endpoint type */
- 0x40,
- 0x00,
- 0x00 /*Polling interval in milliseconds*/
-};
-
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN uint8_t USBD_MSC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- MSC_MAX_FS_PACKET,
- 0x01,
- 0x00,
-};
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_MSC_Init
- * Initialize the mass storage configuration
- * @param pdev: device instance
- * @param cfgidx: configuration index
- * @retval status
- */
-uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- int16_t ret = 0;
-
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
-
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
- }
- else
- {
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
-
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
- }
- pdev->pClassData = USBD_malloc(sizeof (USBD_MSC_BOT_HandleTypeDef));
-
- if(pdev->pClassData == NULL)
- {
- ret = 1;
- }
- else
- {
- /* Init the BOT layer */
- MSC_BOT_Init(pdev);
- ret = 0;
- }
-
- return ret;
-}
-
-/**
- * @brief USBD_MSC_DeInit
- * DeInitilaize the mass storage configuration
- * @param pdev: device instance
- * @param cfgidx: configuration index
- * @retval status
- */
-uint8_t USBD_MSC_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- /* Close MSC EPs */
- USBD_LL_CloseEP(pdev,
- MSC_EPOUT_ADDR);
-
- /* Open EP IN */
- USBD_LL_CloseEP(pdev,
- MSC_EPIN_ADDR);
-
-
- /* D-Init the BOT layer */
- MSC_BOT_DeInit(pdev);
-
- /* Free MSC Class Resources */
- if(pdev->pClassData != NULL)
- {
- USBD_free(pdev->pClassData);
- pdev->pClassData = NULL;
- }
- return 0;
-}
-/**
-* @brief USBD_MSC_Setup
-* Handle the MSC specific requests
-* @param pdev: device instance
-* @param req: USB request
-* @retval status
-*/
-uint8_t USBD_MSC_Setup (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
-
- /* Class request */
- case USB_REQ_TYPE_CLASS :
- switch (req->bRequest)
- {
- case BOT_GET_MAX_LUN :
-
- if((req->wValue == 0) &&
- (req->wLength == 1) &&
- ((req->bmRequest & 0x80) == 0x80))
- {
- hmsc->max_lun = ((USBD_StorageTypeDef *)pdev->pUserData)->GetMaxLun();
- USBD_CtlSendData (pdev,
- (uint8_t *)&hmsc->max_lun,
- 1);
- }
- else
- {
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
-
- case BOT_RESET :
- if((req->wValue == 0) &&
- (req->wLength == 0) &&
- ((req->bmRequest & 0x80) != 0x80))
- {
- MSC_BOT_Reset(pdev);
- }
- else
- {
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
-
- default:
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
- /* Interface & Endpoint request */
- case USB_REQ_TYPE_STANDARD:
- switch (req->bRequest)
- {
- case USB_REQ_GET_INTERFACE :
- USBD_CtlSendData (pdev,
- (uint8_t *)&hmsc->interface,
- 1);
- break;
-
- case USB_REQ_SET_INTERFACE :
- hmsc->interface = (uint8_t)(req->wValue);
- break;
-
- case USB_REQ_CLEAR_FEATURE:
-
- /* Flush the FIFO and Clear the stall status */
- USBD_LL_FlushEP(pdev, (uint8_t)req->wIndex);
-
- /* Re-activate the EP */
- USBD_LL_CloseEP (pdev , (uint8_t)req->wIndex);
- if((((uint8_t)req->wIndex) & 0x80) == 0x80)
- {
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
- }
- else
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
- }
- }
- else
- {
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
- }
- else
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
- }
- }
-
- /* Handle BOT error */
- MSC_BOT_CplClrFeature(pdev, (uint8_t)req->wIndex);
- break;
-
- }
- break;
-
- default:
- break;
- }
- return 0;
-}
-
-/**
-* @brief USBD_MSC_DataIn
-* handle data IN Stage
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval status
-*/
-uint8_t USBD_MSC_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- MSC_BOT_DataIn(pdev , epnum);
- return 0;
-}
-
-/**
-* @brief USBD_MSC_DataOut
-* handle data OUT Stage
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval status
-*/
-uint8_t USBD_MSC_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- MSC_BOT_DataOut(pdev , epnum);
- return 0;
-}
-
-/**
-* @brief USBD_MSC_GetHSCfgDesc
-* return configuration descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetHSCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_CfgHSDesc);
- return USBD_MSC_CfgHSDesc;
-}
-
-/**
-* @brief USBD_MSC_GetFSCfgDesc
-* return configuration descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetFSCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_CfgFSDesc);
- return USBD_MSC_CfgFSDesc;
-}
-
-/**
-* @brief USBD_MSC_GetOtherSpeedCfgDesc
-* return other speed configuration descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetOtherSpeedCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_OtherSpeedCfgDesc);
- return USBD_MSC_OtherSpeedCfgDesc;
-}
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetDeviceQualifierDescriptor (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_DeviceQualifierDesc);
- return USBD_MSC_DeviceQualifierDesc;
-}
-
-/**
-* @brief USBD_MSC_RegisterStorage
-* @param fops: storage callback
-* @retval status
-*/
-uint8_t USBD_MSC_RegisterStorage (USBD_HandleTypeDef *pdev,
- USBD_StorageTypeDef *fops)
-{
- if(fops != NULL)
- {
- pdev->pUserData= fops;
- }
- return 0;
-}
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc_data.c b/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc_data.c
deleted file mode 100644
index 4d72bd5fce..0000000000
--- a/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc_data.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_data.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the vital inquiry pages and sense data.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_data.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_DATA
- * @brief Mass storage info/data module
- * @{
- */
-
-/** @defgroup MSC_DATA_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Variables
- * @{
- */
-
-
-/* USB Mass storage Page 0 Inquiry Data */
-const uint8_t MSC_Page00_Inquiry_Data[] = {//7
- 0x00,
- 0x00,
- 0x00,
- (LENGTH_INQUIRY_PAGE00 - 4),
- 0x00,
- 0x80,
- 0x83
-};
-/* USB Mass storage sense 6 Data */
-const uint8_t MSC_Mode_Sense6_data[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00
-};
-/* USB Mass storage sense 10 Data */
-const uint8_t MSC_Mode_Sense10_data[] = {
- 0x00,
- 0x06,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00
-};
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_FunctionPrototypes
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Functions
- * @{
- */
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/cdc_msc_hid/inc/usbd_cdc_msc_hid.h b/stmhal/usbdev/class/inc/usbd_cdc_msc_hid.h
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc_hid/inc/usbd_cdc_msc_hid.h
rename to stmhal/usbdev/class/inc/usbd_cdc_msc_hid.h
diff --git a/stmhal/usbdev/class/inc/usbd_cdc_msc_hid0.h b/stmhal/usbdev/class/inc/usbd_cdc_msc_hid0.h
new file mode 100644
index 0000000000..7bf2cf955d
--- /dev/null
+++ b/stmhal/usbdev/class/inc/usbd_cdc_msc_hid0.h
@@ -0,0 +1,51 @@
+/*
+ * This file is part of the Micro Python project, http://micropython.org/
+ *
+ * The MIT License (MIT)
+ *
+ * Copyright (c) 2015 Damien P. George
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef __MICROPY_INCLUDED_STMHAL_USB_CDC_MSC_HID0_H__
+#define __MICROPY_INCLUDED_STMHAL_USB_CDC_MSC_HID0_H__
+
+// these are exports for the CDC/MSC/HID interface that are independent
+// from any other definitions/declarations
+
+// only CDC_MSC and CDC_HID are available
+typedef enum {
+ USBD_MODE_CDC = 0x01,
+ USBD_MODE_MSC = 0x02,
+ USBD_MODE_HID = 0x04,
+ USBD_MODE_CDC_MSC = 0x03,
+ USBD_MODE_CDC_HID = 0x05,
+ USBD_MODE_MSC_HID = 0x06,
+} usb_device_mode_t;
+
+typedef struct _USBD_HID_ModeInfoTypeDef {
+ uint8_t subclass; // 0=no sub class, 1=boot
+ uint8_t protocol; // 0=none, 1=keyboard, 2=mouse
+ uint8_t max_packet_len; // only support up to 255
+ uint8_t report_desc_len;
+ const uint8_t *report_desc;
+} USBD_HID_ModeInfoTypeDef;
+
+#endif // __MICROPY_INCLUDED_STMHAL_USB_CDC_MSC_HID0_H__
diff --git a/stmhal/usbdev/class/cdc_msc/inc/usbd_msc_bot.h b/stmhal/usbdev/class/inc/usbd_msc_bot.h
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc/inc/usbd_msc_bot.h
rename to stmhal/usbdev/class/inc/usbd_msc_bot.h
diff --git a/stmhal/usbdev/class/cdc_msc/inc/usbd_msc_data.h b/stmhal/usbdev/class/inc/usbd_msc_data.h
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc/inc/usbd_msc_data.h
rename to stmhal/usbdev/class/inc/usbd_msc_data.h
diff --git a/stmhal/usbdev/class/cdc_msc/inc/usbd_msc_scsi.h b/stmhal/usbdev/class/inc/usbd_msc_scsi.h
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc/inc/usbd_msc_scsi.h
rename to stmhal/usbdev/class/inc/usbd_msc_scsi.h
diff --git a/stmhal/usbdev/class/msc/inc/usbd_msc.h b/stmhal/usbdev/class/msc/inc/usbd_msc.h
deleted file mode 100644
index 9329278ded..0000000000
--- a/stmhal/usbdev/class/msc/inc/usbd_msc.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_core.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header for the usbd_msc_core.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef _USB_MSC_CORE_H_
-#define _USB_MSC_CORE_H_
-
-#include "usbd_msc_bot.h"
-#include "usbd_msc_scsi.h"
-#include "usbd_ioreq.h"
-
-/** @addtogroup USBD_MSC_BOT
- * @{
- */
-
-/** @defgroup USBD_MSC
- * @brief This file is the Header file for USBD_msc.c
- * @{
- */
-
-
-/** @defgroup USBD_BOT_Exported_Defines
- * @{
- */
-#define MSC_MAX_FS_PACKET 0x40
-#define MSC_MAX_HS_PACKET 0x200
-
-#define BOT_GET_MAX_LUN 0xFE
-#define BOT_RESET 0xFF
-#define USB_MSC_CONFIG_DESC_SIZ 32
-
-
-#define MSC_EPIN_ADDR 0x81
-#define MSC_EPOUT_ADDR 0x01
-
-/**
- * @}
- */
-
-/** @defgroup USB_CORE_Exported_Types
- * @{
- */
-typedef struct _USBD_STORAGE
-{
- int8_t (* Init) (uint8_t lun);
- int8_t (* GetCapacity) (uint8_t lun, uint32_t *block_num, uint16_t *block_size);
- int8_t (* IsReady) (uint8_t lun);
- int8_t (* IsWriteProtected) (uint8_t lun);
- int8_t (* Read) (uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
- int8_t (* Write)(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len);
- int8_t (* GetMaxLun)(void);
- int8_t *pInquiry;
-
-}USBD_StorageTypeDef;
-
-
-typedef struct
-{
- uint32_t max_lun;
- uint32_t interface;
- uint8_t bot_state;
- uint8_t bot_status;
- uint16_t bot_data_length;
- uint8_t bot_data[MSC_MEDIA_PACKET];
- USBD_MSC_BOT_CBWTypeDef cbw;
- USBD_MSC_BOT_CSWTypeDef csw;
-
- USBD_SCSI_SenseTypeDef scsi_sense [SENSE_LIST_DEEPTH];
- uint8_t scsi_sense_head;
- uint8_t scsi_sense_tail;
-
- uint16_t scsi_blk_size;
- uint32_t scsi_blk_nbr;
-
- uint32_t scsi_blk_addr;
- uint32_t scsi_blk_len;
-}
-USBD_MSC_BOT_HandleTypeDef;
-
-/* Structure for MSC process */
-extern USBD_ClassTypeDef USBD_MSC;
-
-uint8_t USBD_MSC_RegisterStorage (USBD_HandleTypeDef *pdev,
- USBD_StorageTypeDef *fops);
-/**
- * @}
- */
-
-/**
- * @}
- */
-#endif // _USB_MSC_CORE_H_
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/msc/inc/usbd_msc_bot.h b/stmhal/usbdev/class/msc/inc/usbd_msc_bot.h
deleted file mode 100644
index 41f8ab5a53..0000000000
--- a/stmhal/usbdev/class/msc/inc/usbd_msc_bot.h
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_bot.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header for the usbd_msc_bot.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#include "usbd_core.h"
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_MSC_BOT_H
-#define __USBD_MSC_BOT_H
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup MSC_BOT
- * @brief This file is the Header file for usbd_bot.c
- * @{
- */
-
-
-/** @defgroup USBD_CORE_Exported_Defines
- * @{
- */
-#define USBD_BOT_IDLE 0 /* Idle state */
-#define USBD_BOT_DATA_OUT 1 /* Data Out state */
-#define USBD_BOT_DATA_IN 2 /* Data In state */
-#define USBD_BOT_LAST_DATA_IN 3 /* Last Data In Last */
-#define USBD_BOT_SEND_DATA 4 /* Send Immediate data */
-#define USBD_BOT_NO_DATA 5 /* No data Stage */
-
-#define USBD_BOT_CBW_SIGNATURE 0x43425355
-#define USBD_BOT_CSW_SIGNATURE 0x53425355
-#define USBD_BOT_CBW_LENGTH 31
-#define USBD_BOT_CSW_LENGTH 13
-#define USBD_BOT_MAX_DATA 256
-
-/* CSW Status Definitions */
-#define USBD_CSW_CMD_PASSED 0x00
-#define USBD_CSW_CMD_FAILED 0x01
-#define USBD_CSW_PHASE_ERROR 0x02
-
-/* BOT Status */
-#define USBD_BOT_STATUS_NORMAL 0
-#define USBD_BOT_STATUS_RECOVERY 1
-#define USBD_BOT_STATUS_ERROR 2
-
-
-#define USBD_DIR_IN 0
-#define USBD_DIR_OUT 1
-#define USBD_BOTH_DIR 2
-
-/**
- * @}
- */
-
-/** @defgroup MSC_CORE_Private_TypesDefinitions
- * @{
- */
-
-typedef struct
-{
- uint32_t dSignature;
- uint32_t dTag;
- uint32_t dDataLength;
- uint8_t bmFlags;
- uint8_t bLUN;
- uint8_t bCBLength;
- uint8_t CB[16];
- uint8_t ReservedForAlign;
-}
-USBD_MSC_BOT_CBWTypeDef;
-
-
-typedef struct
-{
- uint32_t dSignature;
- uint32_t dTag;
- uint32_t dDataResidue;
- uint8_t bStatus;
- uint8_t ReservedForAlign[3];
-}
-USBD_MSC_BOT_CSWTypeDef;
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CORE_Exported_Types
- * @{
- */
-
-/**
- * @}
- */
-/** @defgroup USBD_CORE_Exported_FunctionsPrototypes
- * @{
- */
-void MSC_BOT_Init (USBD_HandleTypeDef *pdev);
-void MSC_BOT_Reset (USBD_HandleTypeDef *pdev);
-void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev);
-void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev,
- uint8_t CSW_Status);
-
-void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-/**
- * @}
- */
-
-#endif /* __USBD_MSC_BOT_H */
-/**
- * @}
- */
-
-/**
-* @}
-*/
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/msc/inc/usbd_msc_data.h b/stmhal/usbdev/class/msc/inc/usbd_msc_data.h
deleted file mode 100644
index f468267f43..0000000000
--- a/stmhal/usbdev/class/msc/inc/usbd_msc_data.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_data.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header for the usbd_msc_data.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef _USBD_MSC_DATA_H_
-#define _USBD_MSC_DATA_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_conf.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USB_INFO
- * @brief general defines for the usb device library file
- * @{
- */
-
-/** @defgroup USB_INFO_Exported_Defines
- * @{
- */
-#define MODE_SENSE6_LEN 8
-#define MODE_SENSE10_LEN 8
-#define LENGTH_INQUIRY_PAGE00 7
-#define LENGTH_FORMAT_CAPACITIES 20
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_INFO_Exported_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_INFO_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_INFO_Exported_Variables
- * @{
- */
-extern const uint8_t MSC_Page00_Inquiry_Data[];
-extern const uint8_t MSC_Mode_Sense6_data[];
-extern const uint8_t MSC_Mode_Sense10_data[] ;
-
-/**
- * @}
- */
-
-/** @defgroup USBD_INFO_Exported_FunctionsPrototype
- * @{
- */
-
-/**
- * @}
- */
-
-#endif /* _USBD_MSC_DATA_H_ */
-
-/**
- * @}
- */
-
-/**
-* @}
-*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/msc/inc/usbd_msc_scsi.h b/stmhal/usbdev/class/msc/inc/usbd_msc_scsi.h
deleted file mode 100644
index dea247bca8..0000000000
--- a/stmhal/usbdev/class/msc/inc/usbd_msc_scsi.h
+++ /dev/null
@@ -1,193 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_scsi.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header for the usbd_msc_scsi.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_MSC_SCSI_H
-#define __USBD_MSC_SCSI_H
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_def.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_SCSI
- * @brief header file for the storage disk file
- * @{
- */
-
-/** @defgroup USBD_SCSI_Exported_Defines
- * @{
- */
-
-#define SENSE_LIST_DEEPTH 4
-
-/* SCSI Commands */
-#define SCSI_FORMAT_UNIT 0x04
-#define SCSI_INQUIRY 0x12
-#define SCSI_MODE_SELECT6 0x15
-#define SCSI_MODE_SELECT10 0x55
-#define SCSI_MODE_SENSE6 0x1A
-#define SCSI_MODE_SENSE10 0x5A
-#define SCSI_ALLOW_MEDIUM_REMOVAL 0x1E
-#define SCSI_READ6 0x08
-#define SCSI_READ10 0x28
-#define SCSI_READ12 0xA8
-#define SCSI_READ16 0x88
-
-#define SCSI_READ_CAPACITY10 0x25
-#define SCSI_READ_CAPACITY16 0x9E
-
-#define SCSI_REQUEST_SENSE 0x03
-#define SCSI_START_STOP_UNIT 0x1B
-#define SCSI_TEST_UNIT_READY 0x00
-#define SCSI_WRITE6 0x0A
-#define SCSI_WRITE10 0x2A
-#define SCSI_WRITE12 0xAA
-#define SCSI_WRITE16 0x8A
-
-#define SCSI_VERIFY10 0x2F
-#define SCSI_VERIFY12 0xAF
-#define SCSI_VERIFY16 0x8F
-
-#define SCSI_SEND_DIAGNOSTIC 0x1D
-#define SCSI_READ_FORMAT_CAPACITIES 0x23
-
-#define NO_SENSE 0
-#define RECOVERED_ERROR 1
-#define NOT_READY 2
-#define MEDIUM_ERROR 3
-#define HARDWARE_ERROR 4
-#define ILLEGAL_REQUEST 5
-#define UNIT_ATTENTION 6
-#define DATA_PROTECT 7
-#define BLANK_CHECK 8
-#define VENDOR_SPECIFIC 9
-#define COPY_ABORTED 10
-#define ABORTED_COMMAND 11
-#define VOLUME_OVERFLOW 13
-#define MISCOMPARE 14
-
-
-#define INVALID_CDB 0x20
-#define INVALID_FIELED_IN_COMMAND 0x24
-#define PARAMETER_LIST_LENGTH_ERROR 0x1A
-#define INVALID_FIELD_IN_PARAMETER_LIST 0x26
-#define ADDRESS_OUT_OF_RANGE 0x21
-#define MEDIUM_NOT_PRESENT 0x3A
-#define MEDIUM_HAVE_CHANGED 0x28
-#define WRITE_PROTECTED 0x27
-#define UNRECOVERED_READ_ERROR 0x11
-#define WRITE_FAULT 0x03
-
-#define READ_FORMAT_CAPACITY_DATA_LEN 0x0C
-#define READ_CAPACITY10_DATA_LEN 0x08
-#define MODE_SENSE10_DATA_LEN 0x08
-#define MODE_SENSE6_DATA_LEN 0x04
-#define REQUEST_SENSE_DATA_LEN 0x12
-#define STANDARD_INQUIRY_DATA_LEN 0x24
-#define BLKVFY 0x04
-
-extern uint8_t Page00_Inquiry_Data[];
-extern uint8_t Standard_Inquiry_Data[];
-extern uint8_t Standard_Inquiry_Data2[];
-extern uint8_t Mode_Sense6_data[];
-extern uint8_t Mode_Sense10_data[];
-extern uint8_t Scsi_Sense_Data[];
-extern uint8_t ReadCapacity10_Data[];
-extern uint8_t ReadFormatCapacity_Data [];
-/**
- * @}
- */
-
-
-/** @defgroup USBD_SCSI_Exported_TypesDefinitions
- * @{
- */
-
-typedef struct _SENSE_ITEM {
- char Skey;
- union {
- struct _ASCs {
- char ASC;
- char ASCQ;
- }b;
- unsigned int ASC;
- char *pData;
- } w;
-} USBD_SCSI_SenseTypeDef;
-/**
- * @}
- */
-
-/** @defgroup USBD_SCSI_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_SCSI_Exported_Variables
- * @{
- */
-
-/**
- * @}
- */
-/** @defgroup USBD_SCSI_Exported_FunctionsPrototype
- * @{
- */
-int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev,
- uint8_t lun,
- uint8_t *cmd);
-
-void SCSI_SenseCode(USBD_HandleTypeDef *pdev,
- uint8_t lun,
- uint8_t sKey,
- uint8_t ASC);
-
-/**
- * @}
- */
-
-#endif /* __USBD_MSC_SCSI_H */
-/**
- * @}
- */
-
-/**
- * @}
- */
-
-/**
-* @}
-*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/msc/inc/usbd_msc_storage_template.h b/stmhal/usbdev/class/msc/inc/usbd_msc_storage_template.h
deleted file mode 100644
index 1fc030eea6..0000000000
--- a/stmhal/usbdev/class/msc/inc/usbd_msc_storage_template.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_storage.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief header file for the usbd_msc_storage.c file
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-
-#ifndef __USBD_MSC_STORAGE_H_
-#define __USBD_MSC_STORAGE_H_
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-/** @defgroup USBD_STORAGE
- * @brief header file for the USBD_STORAGE.c file
- * @{
- */
-
-/** @defgroup USBD_STORAGE_Exported_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_STORAGE_Exported_Types
- * @{
- */
-
-
-/**
- * @}
- */
-
-
-
-/** @defgroup USBD_STORAGE_Exported_Macros
- * @{
- */
-
-/**
- * @}
- */
-
-/** @defgroup USBD_STORAGE_Exported_Variables
- * @{
- */
-extern USBD_StorageTypeDef USBD_MSC_Template_fops;
-/**
- * @}
- */
-
-/** @defgroup USBD_STORAGE_Exported_FunctionsPrototype
- * @{
- */
-
-
-/**
- * @}
- */
-
-#endif /* __USBD_MSC_STORAGE_H_ */
-
-/**
- * @}
- */
-
-/**
-* @}
-*/
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/msc/src/usbd_msc.c b/stmhal/usbdev/class/msc/src/usbd_msc.c
deleted file mode 100644
index 7817c98b1c..0000000000
--- a/stmhal/usbdev/class/msc/src/usbd_msc.c
+++ /dev/null
@@ -1,609 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_core.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the MSC core functions.
- *
- * @verbatim
- *
- * ===================================================================
- * MSC Class Description
- * ===================================================================
- * This module manages the MSC class V1.0 following the "Universal
- * Serial Bus Mass Storage Class (MSC) Bulk-Only Transport (BOT) Version 1.0
- * Sep. 31, 1999".
- * This driver implements the following aspects of the specification:
- * - Bulk-Only Transport protocol
- * - Subclass : SCSI transparent command set (ref. SCSI Primary Commands - 3 (SPC-3))
- *
- * @endverbatim
- *
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_CORE
- * @brief Mass storage core module
- * @{
- */
-
-/** @defgroup MSC_CORE_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_FunctionPrototypes
- * @{
- */
-uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-uint8_t USBD_MSC_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx);
-
-uint8_t USBD_MSC_Setup (USBD_HandleTypeDef *pdev,
- USBD_SetupReqTypedef *req);
-
-uint8_t USBD_MSC_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-
-uint8_t USBD_MSC_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum);
-
-uint8_t *USBD_MSC_GetHSCfgDesc (uint16_t *length);
-
-uint8_t *USBD_MSC_GetFSCfgDesc (uint16_t *length);
-
-uint8_t *USBD_MSC_GetOtherSpeedCfgDesc (uint16_t *length);
-
-uint8_t *USBD_MSC_GetDeviceQualifierDescriptor (uint16_t *length);
-
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Variables
- * @{
- */
-
-
-USBD_ClassTypeDef USBD_MSC =
-{
- USBD_MSC_Init,
- USBD_MSC_DeInit,
- USBD_MSC_Setup,
- NULL, /*EP0_TxSent*/
- NULL, /*EP0_RxReady*/
- USBD_MSC_DataIn,
- USBD_MSC_DataOut,
- NULL, /*SOF */
- NULL,
- NULL,
- USBD_MSC_GetHSCfgDesc,
- USBD_MSC_GetFSCfgDesc,
- USBD_MSC_GetOtherSpeedCfgDesc,
- USBD_MSC_GetDeviceQualifierDescriptor,
-};
-
-/* USB Mass storage device Configuration Descriptor */
-/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
-__ALIGN_BEGIN uint8_t USBD_MSC_CfgHSDesc[USB_MSC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
-
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_MSC_CONFIG_DESC_SIZ,
-
- 0x00,
- 0x01, /* bNumInterfaces: 1 interface */
- 0x01, /* bConfigurationValue: */
- 0x04, /* iConfiguration: */
- 0xC0, /* bmAttributes: */
- 0x32, /* MaxPower 100 mA */
-
- /******************** Mass Storage interface ********************/
- 0x09, /* bLength: Interface Descriptor size */
- 0x04, /* bDescriptorType: */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints*/
- 0x08, /* bInterfaceClass: MSC Class */
- 0x06, /* bInterfaceSubClass : SCSI transparent*/
- 0x50, /* nInterfaceProtocol */
- 0x05, /* iInterface: */
- /******************** Mass Storage Endpoints ********************/
- 0x07, /*Endpoint descriptor length = 7*/
- 0x05, /*Endpoint descriptor type */
- MSC_EPIN_ADDR, /*Endpoint address (IN, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_HS_PACKET),
- HIBYTE(MSC_MAX_HS_PACKET),
- 0x00, /*Polling interval in milliseconds */
-
- 0x07, /*Endpoint descriptor length = 7 */
- 0x05, /*Endpoint descriptor type */
- MSC_EPOUT_ADDR, /*Endpoint address (OUT, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_HS_PACKET),
- HIBYTE(MSC_MAX_HS_PACKET),
- 0x00 /*Polling interval in milliseconds*/
-};
-
-/* USB Mass storage device Configuration Descriptor */
-/* All Descriptors (Configuration, Interface, Endpoint, Class, Vendor */
-uint8_t USBD_MSC_CfgFSDesc[USB_MSC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
-
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_CONFIGURATION, /* bDescriptorType: Configuration */
- USB_MSC_CONFIG_DESC_SIZ,
-
- 0x00,
- 0x01, /* bNumInterfaces: 1 interface */
- 0x01, /* bConfigurationValue: */
- 0x04, /* iConfiguration: */
- 0xC0, /* bmAttributes: */
- 0x32, /* MaxPower 100 mA */
-
- /******************** Mass Storage interface ********************/
- 0x09, /* bLength: Interface Descriptor size */
- 0x04, /* bDescriptorType: */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints*/
- 0x08, /* bInterfaceClass: MSC Class */
- 0x06, /* bInterfaceSubClass : SCSI transparent*/
- 0x50, /* nInterfaceProtocol */
- 0x05, /* iInterface: */
- /******************** Mass Storage Endpoints ********************/
- 0x07, /*Endpoint descriptor length = 7*/
- 0x05, /*Endpoint descriptor type */
- MSC_EPIN_ADDR, /*Endpoint address (IN, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_FS_PACKET),
- HIBYTE(MSC_MAX_FS_PACKET),
- 0x00, /*Polling interval in milliseconds */
-
- 0x07, /*Endpoint descriptor length = 7 */
- 0x05, /*Endpoint descriptor type */
- MSC_EPOUT_ADDR, /*Endpoint address (OUT, address 1) */
- 0x02, /*Bulk endpoint type */
- LOBYTE(MSC_MAX_FS_PACKET),
- HIBYTE(MSC_MAX_FS_PACKET),
- 0x00 /*Polling interval in milliseconds*/
-};
-
-__ALIGN_BEGIN uint8_t USBD_MSC_OtherSpeedCfgDesc[USB_MSC_CONFIG_DESC_SIZ] __ALIGN_END =
-{
-
- 0x09, /* bLength: Configuation Descriptor size */
- USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION,
- USB_MSC_CONFIG_DESC_SIZ,
-
- 0x00,
- 0x01, /* bNumInterfaces: 1 interface */
- 0x01, /* bConfigurationValue: */
- 0x04, /* iConfiguration: */
- 0xC0, /* bmAttributes: */
- 0x32, /* MaxPower 100 mA */
-
- /******************** Mass Storage interface ********************/
- 0x09, /* bLength: Interface Descriptor size */
- 0x04, /* bDescriptorType: */
- 0x00, /* bInterfaceNumber: Number of Interface */
- 0x00, /* bAlternateSetting: Alternate setting */
- 0x02, /* bNumEndpoints*/
- 0x08, /* bInterfaceClass: MSC Class */
- 0x06, /* bInterfaceSubClass : SCSI transparent command set*/
- 0x50, /* nInterfaceProtocol */
- 0x05, /* iInterface: */
- /******************** Mass Storage Endpoints ********************/
- 0x07, /*Endpoint descriptor length = 7*/
- 0x05, /*Endpoint descriptor type */
- MSC_EPIN_ADDR, /*Endpoint address (IN, address 1) */
- 0x02, /*Bulk endpoint type */
- 0x40,
- 0x00,
- 0x00, /*Polling interval in milliseconds */
-
- 0x07, /*Endpoint descriptor length = 7 */
- 0x05, /*Endpoint descriptor type */
- MSC_EPOUT_ADDR, /*Endpoint address (OUT, address 1) */
- 0x02, /*Bulk endpoint type */
- 0x40,
- 0x00,
- 0x00 /*Polling interval in milliseconds*/
-};
-
-/* USB Standard Device Descriptor */
-__ALIGN_BEGIN uint8_t USBD_MSC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
-{
- USB_LEN_DEV_QUALIFIER_DESC,
- USB_DESC_TYPE_DEVICE_QUALIFIER,
- 0x00,
- 0x02,
- 0x00,
- 0x00,
- 0x00,
- MSC_MAX_FS_PACKET,
- 0x01,
- 0x00,
-};
-/**
- * @}
- */
-
-
-/** @defgroup MSC_CORE_Private_Functions
- * @{
- */
-
-/**
- * @brief USBD_MSC_Init
- * Initialize the mass storage configuration
- * @param pdev: device instance
- * @param cfgidx: configuration index
- * @retval status
- */
-uint8_t USBD_MSC_Init (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- int16_t ret = 0;
-
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
-
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
- }
- else
- {
- /* Open EP OUT */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
-
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
- }
- pdev->pClassData = USBD_malloc(sizeof (USBD_MSC_BOT_HandleTypeDef));
-
- if(pdev->pClassData == NULL)
- {
- ret = 1;
- }
- else
- {
- /* Init the BOT layer */
- MSC_BOT_Init(pdev);
- ret = 0;
- }
-
- return ret;
-}
-
-/**
- * @brief USBD_MSC_DeInit
- * DeInitilaize the mass storage configuration
- * @param pdev: device instance
- * @param cfgidx: configuration index
- * @retval status
- */
-uint8_t USBD_MSC_DeInit (USBD_HandleTypeDef *pdev,
- uint8_t cfgidx)
-{
- /* Close MSC EPs */
- USBD_LL_CloseEP(pdev,
- MSC_EPOUT_ADDR);
-
- /* Open EP IN */
- USBD_LL_CloseEP(pdev,
- MSC_EPIN_ADDR);
-
-
- /* D-Init the BOT layer */
- MSC_BOT_DeInit(pdev);
-
- /* Free MSC Class Resources */
- if(pdev->pClassData != NULL)
- {
- USBD_free(pdev->pClassData);
- pdev->pClassData = NULL;
- }
- return 0;
-}
-/**
-* @brief USBD_MSC_Setup
-* Handle the MSC specific requests
-* @param pdev: device instance
-* @param req: USB request
-* @retval status
-*/
-uint8_t USBD_MSC_Setup (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- switch (req->bmRequest & USB_REQ_TYPE_MASK)
- {
-
- /* Class request */
- case USB_REQ_TYPE_CLASS :
- switch (req->bRequest)
- {
- case BOT_GET_MAX_LUN :
-
- if((req->wValue == 0) &&
- (req->wLength == 1) &&
- ((req->bmRequest & 0x80) == 0x80))
- {
- hmsc->max_lun = ((USBD_StorageTypeDef *)pdev->pUserData)->GetMaxLun();
- USBD_CtlSendData (pdev,
- (uint8_t *)&hmsc->max_lun,
- 1);
- }
- else
- {
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
-
- case BOT_RESET :
- if((req->wValue == 0) &&
- (req->wLength == 0) &&
- ((req->bmRequest & 0x80) != 0x80))
- {
- MSC_BOT_Reset(pdev);
- }
- else
- {
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
-
- default:
- USBD_CtlError(pdev , req);
- return USBD_FAIL;
- }
- break;
- /* Interface & Endpoint request */
- case USB_REQ_TYPE_STANDARD:
- switch (req->bRequest)
- {
- case USB_REQ_GET_INTERFACE :
- USBD_CtlSendData (pdev,
- (uint8_t *)&hmsc->interface,
- 1);
- break;
-
- case USB_REQ_SET_INTERFACE :
- hmsc->interface = (uint8_t)(req->wValue);
- break;
-
- case USB_REQ_CLEAR_FEATURE:
-
- /* Flush the FIFO and Clear the stall status */
- USBD_LL_FlushEP(pdev, (uint8_t)req->wIndex);
-
- /* Re-activate the EP */
- USBD_LL_CloseEP (pdev , (uint8_t)req->wIndex);
- if((((uint8_t)req->wIndex) & 0x80) == 0x80)
- {
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
- }
- else
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPIN_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
- }
- }
- else
- {
- if(pdev->dev_speed == USBD_SPEED_HIGH )
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_HS_PACKET);
- }
- else
- {
- /* Open EP IN */
- USBD_LL_OpenEP(pdev,
- MSC_EPOUT_ADDR,
- USBD_EP_TYPE_BULK,
- MSC_MAX_FS_PACKET);
- }
- }
-
- /* Handle BOT error */
- MSC_BOT_CplClrFeature(pdev, (uint8_t)req->wIndex);
- break;
-
- }
- break;
-
- default:
- break;
- }
- return 0;
-}
-
-/**
-* @brief USBD_MSC_DataIn
-* handle data IN Stage
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval status
-*/
-uint8_t USBD_MSC_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- MSC_BOT_DataIn(pdev , epnum);
- return 0;
-}
-
-/**
-* @brief USBD_MSC_DataOut
-* handle data OUT Stage
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval status
-*/
-uint8_t USBD_MSC_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- MSC_BOT_DataOut(pdev , epnum);
- return 0;
-}
-
-/**
-* @brief USBD_MSC_GetHSCfgDesc
-* return configuration descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetHSCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_CfgHSDesc);
- return USBD_MSC_CfgHSDesc;
-}
-
-/**
-* @brief USBD_MSC_GetFSCfgDesc
-* return configuration descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetFSCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_CfgFSDesc);
- return USBD_MSC_CfgFSDesc;
-}
-
-/**
-* @brief USBD_MSC_GetOtherSpeedCfgDesc
-* return other speed configuration descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetOtherSpeedCfgDesc (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_OtherSpeedCfgDesc);
- return USBD_MSC_OtherSpeedCfgDesc;
-}
-/**
-* @brief DeviceQualifierDescriptor
-* return Device Qualifier descriptor
-* @param length : pointer data length
-* @retval pointer to descriptor buffer
-*/
-uint8_t *USBD_MSC_GetDeviceQualifierDescriptor (uint16_t *length)
-{
- *length = sizeof (USBD_MSC_DeviceQualifierDesc);
- return USBD_MSC_DeviceQualifierDesc;
-}
-
-/**
-* @brief USBD_MSC_RegisterStorage
-* @param fops: storage callback
-* @retval status
-*/
-uint8_t USBD_MSC_RegisterStorage (USBD_HandleTypeDef *pdev,
- USBD_StorageTypeDef *fops)
-{
- if(fops != NULL)
- {
- pdev->pUserData= fops;
- }
- return 0;
-}
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/msc/src/usbd_msc_bot.c b/stmhal/usbdev/class/msc/src/usbd_msc_bot.c
deleted file mode 100644
index a430ce7709..0000000000
--- a/stmhal/usbdev/class/msc/src/usbd_msc_bot.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_bot.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the BOT protocol core functions.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_bot.h"
-#include "usbd_msc.h"
-#include "usbd_msc_scsi.h"
-#include "usbd_ioreq.h"
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_BOT
- * @brief BOT protocol module
- * @{
- */
-
-/** @defgroup MSC_BOT_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Variables
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_FunctionPrototypes
- * @{
- */
-static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev);
-
-static void MSC_BOT_SendData (USBD_HandleTypeDef *pdev,
- uint8_t* pbuf,
- uint16_t len);
-
-static void MSC_BOT_Abort(USBD_HandleTypeDef *pdev);
-/**
- * @}
- */
-
-
-/** @defgroup MSC_BOT_Private_Functions
- * @{
- */
-
-
-
-/**
-* @brief MSC_BOT_Init
-* Initialize the BOT Process
-* @param pdev: device instance
-* @retval None
-*/
-void MSC_BOT_Init (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->bot_state = USBD_BOT_IDLE;
- hmsc->bot_status = USBD_BOT_STATUS_NORMAL;
-
- hmsc->scsi_sense_tail = 0;
- hmsc->scsi_sense_head = 0;
-
- ((USBD_StorageTypeDef *)pdev->pUserData)->Init(0);
-
- USBD_LL_FlushEP(pdev, MSC_EPOUT_ADDR);
- USBD_LL_FlushEP(pdev, MSC_EPIN_ADDR);
-
- /* Prapare EP to Receive First BOT Cmd */
- USBD_LL_PrepareReceive (pdev,
- MSC_EPOUT_ADDR,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
-}
-
-/**
-* @brief MSC_BOT_Reset
-* Reset the BOT Machine
-* @param pdev: device instance
-* @retval None
-*/
-void MSC_BOT_Reset (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->bot_state = USBD_BOT_IDLE;
- hmsc->bot_status = USBD_BOT_STATUS_RECOVERY;
-
- /* Prapare EP to Receive First BOT Cmd */
- USBD_LL_PrepareReceive (pdev,
- MSC_EPOUT_ADDR,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
-}
-
-/**
-* @brief MSC_BOT_DeInit
-* Uninitialize the BOT Machine
-* @param pdev: device instance
-* @retval None
-*/
-void MSC_BOT_DeInit (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- hmsc->bot_state = USBD_BOT_IDLE;
-}
-
-/**
-* @brief MSC_BOT_DataIn
-* Handle BOT IN data stage
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval None
-*/
-void MSC_BOT_DataIn (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- switch (hmsc->bot_state)
- {
- case USBD_BOT_DATA_IN:
- if(SCSI_ProcessCmd(pdev,
- hmsc->cbw.bLUN,
- &hmsc->cbw.CB[0]) < 0)
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
- }
- break;
-
- case USBD_BOT_SEND_DATA:
- case USBD_BOT_LAST_DATA_IN:
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_PASSED);
-
- break;
-
- default:
- break;
- }
-}
-/**
-* @brief MSC_BOT_DataOut
-* Proccess MSC OUT data
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval None
-*/
-void MSC_BOT_DataOut (USBD_HandleTypeDef *pdev,
- uint8_t epnum)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- switch (hmsc->bot_state)
- {
- case USBD_BOT_IDLE:
- MSC_BOT_CBW_Decode(pdev);
- break;
-
- case USBD_BOT_DATA_OUT:
-
- if(SCSI_ProcessCmd(pdev,
- hmsc->cbw.bLUN,
- &hmsc->cbw.CB[0]) < 0)
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
- }
-
- break;
-
- default:
- break;
- }
-}
-
-/**
-* @brief MSC_BOT_CBW_Decode
-* Decode the CBW command and set the BOT state machine accordingtly
-* @param pdev: device instance
-* @retval None
-*/
-static void MSC_BOT_CBW_Decode (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->csw.dTag = hmsc->cbw.dTag;
- hmsc->csw.dDataResidue = hmsc->cbw.dDataLength;
-
- if ((USBD_LL_GetRxDataSize (pdev ,MSC_EPOUT_ADDR) != USBD_BOT_CBW_LENGTH) ||
- (hmsc->cbw.dSignature != USBD_BOT_CBW_SIGNATURE)||
- (hmsc->cbw.bLUN > 1) ||
- (hmsc->cbw.bCBLength < 1) ||
- (hmsc->cbw.bCBLength > 16))
- {
-
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
-
- hmsc->bot_status = USBD_BOT_STATUS_ERROR;
- MSC_BOT_Abort(pdev);
-
- }
- else
- {
- if(SCSI_ProcessCmd(pdev,
- hmsc->cbw.bLUN,
- &hmsc->cbw.CB[0]) < 0)
- {
- if(hmsc->bot_state == USBD_BOT_NO_DATA)
- {
- MSC_BOT_SendCSW (pdev,
- USBD_CSW_CMD_FAILED);
- }
- else
- {
- MSC_BOT_Abort(pdev);
- }
- }
- /*Burst xfer handled internally*/
- else if ((hmsc->bot_state != USBD_BOT_DATA_IN) &&
- (hmsc->bot_state != USBD_BOT_DATA_OUT) &&
- (hmsc->bot_state != USBD_BOT_LAST_DATA_IN))
- {
- if (hmsc->bot_data_length > 0)
- {
- MSC_BOT_SendData(pdev,
- hmsc->bot_data,
- hmsc->bot_data_length);
- }
- else if (hmsc->bot_data_length == 0)
- {
- MSC_BOT_SendCSW (pdev,
- USBD_CSW_CMD_PASSED);
- }
- }
- }
-}
-
-/**
-* @brief MSC_BOT_SendData
-* Send the requested data
-* @param pdev: device instance
-* @param buf: pointer to data buffer
-* @param len: Data Length
-* @retval None
-*/
-static void MSC_BOT_SendData(USBD_HandleTypeDef *pdev,
- uint8_t* buf,
- uint16_t len)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- len = MIN (hmsc->cbw.dDataLength, len);
- hmsc->csw.dDataResidue -= len;
- hmsc->csw.bStatus = USBD_CSW_CMD_PASSED;
- hmsc->bot_state = USBD_BOT_SEND_DATA;
-
- USBD_LL_Transmit (pdev, MSC_EPIN_ADDR, buf, len);
-}
-
-/**
-* @brief MSC_BOT_SendCSW
-* Send the Command Status Wrapper
-* @param pdev: device instance
-* @param status : CSW status
-* @retval None
-*/
-void MSC_BOT_SendCSW (USBD_HandleTypeDef *pdev,
- uint8_t CSW_Status)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->csw.dSignature = USBD_BOT_CSW_SIGNATURE;
- hmsc->csw.bStatus = CSW_Status;
- hmsc->bot_state = USBD_BOT_IDLE;
-
- USBD_LL_Transmit (pdev,
- MSC_EPIN_ADDR,
- (uint8_t *)&hmsc->csw,
- USBD_BOT_CSW_LENGTH);
-
- /* Prapare EP to Receive next Cmd */
- USBD_LL_PrepareReceive (pdev,
- MSC_EPOUT_ADDR,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
-
-}
-
-/**
-* @brief MSC_BOT_Abort
-* Abort the current transfer
-* @param pdev: device instance
-* @retval status
-*/
-
-static void MSC_BOT_Abort (USBD_HandleTypeDef *pdev)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if ((hmsc->cbw.bmFlags == 0) &&
- (hmsc->cbw.dDataLength != 0) &&
- (hmsc->bot_status == USBD_BOT_STATUS_NORMAL) )
- {
- USBD_LL_StallEP(pdev, MSC_EPOUT_ADDR );
- }
- USBD_LL_StallEP(pdev, MSC_EPIN_ADDR);
-
- if(hmsc->bot_status == USBD_BOT_STATUS_ERROR)
- {
- USBD_LL_PrepareReceive (pdev,
- MSC_EPOUT_ADDR,
- (uint8_t *)&hmsc->cbw,
- USBD_BOT_CBW_LENGTH);
- }
-}
-
-/**
-* @brief MSC_BOT_CplClrFeature
-* Complete the clear feature request
-* @param pdev: device instance
-* @param epnum: endpoint index
-* @retval None
-*/
-
-void MSC_BOT_CplClrFeature (USBD_HandleTypeDef *pdev, uint8_t epnum)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if(hmsc->bot_status == USBD_BOT_STATUS_ERROR )/* Bad CBW Signature */
- {
- USBD_LL_StallEP(pdev, MSC_EPIN_ADDR);
- hmsc->bot_status = USBD_BOT_STATUS_NORMAL;
- }
- else if(((epnum & 0x80) == 0x80) && ( hmsc->bot_status != USBD_BOT_STATUS_RECOVERY))
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_FAILED);
- }
-
-}
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/msc/src/usbd_msc_data.c b/stmhal/usbdev/class/msc/src/usbd_msc_data.c
deleted file mode 100644
index 4d72bd5fce..0000000000
--- a/stmhal/usbdev/class/msc/src/usbd_msc_data.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_data.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the vital inquiry pages and sense data.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_data.h"
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_DATA
- * @brief Mass storage info/data module
- * @{
- */
-
-/** @defgroup MSC_DATA_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Defines
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Variables
- * @{
- */
-
-
-/* USB Mass storage Page 0 Inquiry Data */
-const uint8_t MSC_Page00_Inquiry_Data[] = {//7
- 0x00,
- 0x00,
- 0x00,
- (LENGTH_INQUIRY_PAGE00 - 4),
- 0x00,
- 0x80,
- 0x83
-};
-/* USB Mass storage sense 6 Data */
-const uint8_t MSC_Mode_Sense6_data[] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00
-};
-/* USB Mass storage sense 10 Data */
-const uint8_t MSC_Mode_Sense10_data[] = {
- 0x00,
- 0x06,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00
-};
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_FunctionPrototypes
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_DATA_Private_Functions
- * @{
- */
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/msc/src/usbd_msc_scsi.c b/stmhal/usbdev/class/msc/src/usbd_msc_scsi.c
deleted file mode 100644
index ab94d89665..0000000000
--- a/stmhal/usbdev/class/msc/src/usbd_msc_scsi.c
+++ /dev/null
@@ -1,770 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_scsi.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief This file provides all the USBD SCSI layer functions.
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_bot.h"
-#include "usbd_msc_scsi.h"
-#include "usbd_msc.h"
-#include "usbd_msc_data.h"
-
-
-
-/** @addtogroup STM32_USB_OTG_DEVICE_LIBRARY
- * @{
- */
-
-
-/** @defgroup MSC_SCSI
- * @brief Mass storage SCSI layer module
- * @{
- */
-
-/** @defgroup MSC_SCSI_Private_TypesDefinitions
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Defines
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Macros
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Variables
- * @{
- */
-
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_FunctionPrototypes
- * @{
- */
-static int8_t SCSI_TestUnitReady(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_Inquiry(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ReadFormatCapacity(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ReadCapacity10(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_RequestSense (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_StartStopUnit(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ModeSense6 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_ModeSense10 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_Write10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params);
-static int8_t SCSI_Read10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params);
-static int8_t SCSI_Verify10(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params);
-static int8_t SCSI_CheckAddressRange (USBD_HandleTypeDef *pdev,
- uint8_t lun ,
- uint32_t blk_offset ,
- uint16_t blk_nbr);
-static int8_t SCSI_ProcessRead (USBD_HandleTypeDef *pdev,
- uint8_t lun);
-
-static int8_t SCSI_ProcessWrite (USBD_HandleTypeDef *pdev,
- uint8_t lun);
-/**
- * @}
- */
-
-
-/** @defgroup MSC_SCSI_Private_Functions
- * @{
- */
-
-
-/**
-* @brief SCSI_ProcessCmd
-* Process SCSI commands
-* @param pdev: device instance
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-int8_t SCSI_ProcessCmd(USBD_HandleTypeDef *pdev,
- uint8_t lun,
- uint8_t *params)
-{
-
- switch (params[0])
- {
- case SCSI_TEST_UNIT_READY:
- return SCSI_TestUnitReady(pdev, lun, params);
-
- case SCSI_REQUEST_SENSE:
- return SCSI_RequestSense (pdev, lun, params);
- case SCSI_INQUIRY:
- return SCSI_Inquiry(pdev, lun, params);
-
- case SCSI_START_STOP_UNIT:
- return SCSI_StartStopUnit(pdev, lun, params);
-
- case SCSI_ALLOW_MEDIUM_REMOVAL:
- return SCSI_StartStopUnit(pdev, lun, params);
-
- case SCSI_MODE_SENSE6:
- return SCSI_ModeSense6 (pdev, lun, params);
-
- case SCSI_MODE_SENSE10:
- return SCSI_ModeSense10 (pdev, lun, params);
-
- case SCSI_READ_FORMAT_CAPACITIES:
- return SCSI_ReadFormatCapacity(pdev, lun, params);
-
- case SCSI_READ_CAPACITY10:
- return SCSI_ReadCapacity10(pdev, lun, params);
-
- case SCSI_READ10:
- return SCSI_Read10(pdev, lun, params);
-
- case SCSI_WRITE10:
- return SCSI_Write10(pdev, lun, params);
-
- case SCSI_VERIFY10:
- return SCSI_Verify10(pdev, lun, params);
-
- default:
- SCSI_SenseCode(pdev,
- lun,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-}
-
-
-/**
-* @brief SCSI_TestUnitReady
-* Process SCSI Test Unit Ready Command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_TestUnitReady(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- /* case 9 : Hi > D0 */
- if (hmsc->cbw.dDataLength != 0)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
-
- hmsc->bot_state = USBD_BOT_NO_DATA;
- return -1;
- }
- hmsc->bot_data_length = 0;
- return 0;
-}
-
-/**
-* @brief SCSI_Inquiry
-* Process Inquiry command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_Inquiry(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- uint8_t* pPage;
- uint16_t len;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if (params[1] & 0x01)/*Evpd is set*/
- {
- pPage = (uint8_t *)MSC_Page00_Inquiry_Data;
- len = LENGTH_INQUIRY_PAGE00;
- }
- else
- {
-
- pPage = (uint8_t *)&((USBD_StorageTypeDef *)pdev->pUserData)->pInquiry[lun * STANDARD_INQUIRY_DATA_LEN];
- len = pPage[4] + 5;
-
- if (params[4] <= len)
- {
- len = params[4];
- }
- }
- hmsc->bot_data_length = len;
-
- while (len)
- {
- len--;
- hmsc->bot_data[len] = pPage[len];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ReadCapacity10
-* Process Read Capacity 10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ReadCapacity10(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->GetCapacity(lun, &hmsc->scsi_blk_nbr, &hmsc->scsi_blk_size) != 0)
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
- else
- {
-
- hmsc->bot_data[0] = (uint8_t)((hmsc->scsi_blk_nbr - 1) >> 24);
- hmsc->bot_data[1] = (uint8_t)((hmsc->scsi_blk_nbr - 1) >> 16);
- hmsc->bot_data[2] = (uint8_t)((hmsc->scsi_blk_nbr - 1) >> 8);
- hmsc->bot_data[3] = (uint8_t)(hmsc->scsi_blk_nbr - 1);
-
- hmsc->bot_data[4] = (uint8_t)(hmsc->scsi_blk_size >> 24);
- hmsc->bot_data[5] = (uint8_t)(hmsc->scsi_blk_size >> 16);
- hmsc->bot_data[6] = (uint8_t)(hmsc->scsi_blk_size >> 8);
- hmsc->bot_data[7] = (uint8_t)(hmsc->scsi_blk_size);
-
- hmsc->bot_data_length = 8;
- return 0;
- }
-}
-/**
-* @brief SCSI_ReadFormatCapacity
-* Process Read Format Capacity command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ReadFormatCapacity(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- uint16_t blk_size;
- uint32_t blk_nbr;
- uint16_t i;
-
- for(i=0 ; i < 12 ; i++)
- {
- hmsc->bot_data[i] = 0;
- }
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->GetCapacity(lun, &blk_nbr, &blk_size) != 0)
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
- else
- {
- hmsc->bot_data[3] = 0x08;
- hmsc->bot_data[4] = (uint8_t)((blk_nbr - 1) >> 24);
- hmsc->bot_data[5] = (uint8_t)((blk_nbr - 1) >> 16);
- hmsc->bot_data[6] = (uint8_t)((blk_nbr - 1) >> 8);
- hmsc->bot_data[7] = (uint8_t)(blk_nbr - 1);
-
- hmsc->bot_data[8] = 0x02;
- hmsc->bot_data[9] = (uint8_t)(blk_size >> 16);
- hmsc->bot_data[10] = (uint8_t)(blk_size >> 8);
- hmsc->bot_data[11] = (uint8_t)(blk_size);
-
- hmsc->bot_data_length = 12;
- return 0;
- }
-}
-/**
-* @brief SCSI_ModeSense6
-* Process Mode Sense6 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ModeSense6 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- uint16_t len = 8 ;
- hmsc->bot_data_length = len;
-
- while (len)
- {
- len--;
- hmsc->bot_data[len] = MSC_Mode_Sense6_data[len];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ModeSense10
-* Process Mode Sense10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_ModeSense10 (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- uint16_t len = 8;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->bot_data_length = len;
-
- while (len)
- {
- len--;
- hmsc->bot_data[len] = MSC_Mode_Sense10_data[len];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_RequestSense
-* Process Request Sense command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-
-static int8_t SCSI_RequestSense (USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- uint8_t i;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- for(i=0 ; i < REQUEST_SENSE_DATA_LEN ; i++)
- {
- hmsc->bot_data[i] = 0;
- }
-
- hmsc->bot_data[0] = 0x70;
- hmsc->bot_data[7] = REQUEST_SENSE_DATA_LEN - 6;
-
- if((hmsc->scsi_sense_head != hmsc->scsi_sense_tail)) {
-
- hmsc->bot_data[2] = hmsc->scsi_sense[hmsc->scsi_sense_head].Skey;
- hmsc->bot_data[12] = hmsc->scsi_sense[hmsc->scsi_sense_head].w.b.ASCQ;
- hmsc->bot_data[13] = hmsc->scsi_sense[hmsc->scsi_sense_head].w.b.ASC;
- hmsc->scsi_sense_head++;
-
- if (hmsc->scsi_sense_head == SENSE_LIST_DEEPTH)
- {
- hmsc->scsi_sense_head = 0;
- }
- }
- hmsc->bot_data_length = REQUEST_SENSE_DATA_LEN;
-
- if (params[4] <= REQUEST_SENSE_DATA_LEN)
- {
- hmsc->bot_data_length = params[4];
- }
- return 0;
-}
-
-/**
-* @brief SCSI_SenseCode
-* Load the last error code in the error list
-* @param lun: Logical unit number
-* @param sKey: Sense Key
-* @param ASC: Additional Sense Key
-* @retval none
-
-*/
-void SCSI_SenseCode(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t sKey, uint8_t ASC)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- hmsc->scsi_sense[hmsc->scsi_sense_tail].Skey = sKey;
- hmsc->scsi_sense[hmsc->scsi_sense_tail].w.ASC = ASC << 8;
- hmsc->scsi_sense_tail++;
- if (hmsc->scsi_sense_tail == SENSE_LIST_DEEPTH)
- {
- hmsc->scsi_sense_tail = 0;
- }
-}
-/**
-* @brief SCSI_StartStopUnit
-* Process Start Stop Unit command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_StartStopUnit(USBD_HandleTypeDef *pdev, uint8_t lun, uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- hmsc->bot_data_length = 0;
- return 0;
-}
-
-/**
-* @brief SCSI_Read10
-* Process Read10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-static int8_t SCSI_Read10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if(hmsc->bot_state == USBD_BOT_IDLE) /* Idle */
- {
-
- /* case 10 : Ho <> Di */
-
- if ((hmsc->cbw.bmFlags & 0x80) != 0x80)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
-
- hmsc->scsi_blk_addr = (params[2] << 24) | \
- (params[3] << 16) | \
- (params[4] << 8) | \
- params[5];
-
- hmsc->scsi_blk_len = (params[7] << 8) | \
- params[8];
-
-
-
- if( SCSI_CheckAddressRange(pdev, lun, hmsc->scsi_blk_addr, hmsc->scsi_blk_len) < 0)
- {
- return -1; /* error */
- }
-
- hmsc->bot_state = USBD_BOT_DATA_IN;
- hmsc->scsi_blk_addr *= hmsc->scsi_blk_size;
- hmsc->scsi_blk_len *= hmsc->scsi_blk_size;
-
- /* cases 4,5 : Hi <> Dn */
- if (hmsc->cbw.dDataLength != hmsc->scsi_blk_len)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
- }
- hmsc->bot_data_length = MSC_MEDIA_PACKET;
-
- return SCSI_ProcessRead(pdev, lun);
-}
-
-/**
-* @brief SCSI_Write10
-* Process Write10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-
-static int8_t SCSI_Write10 (USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if (hmsc->bot_state == USBD_BOT_IDLE) /* Idle */
- {
-
- /* case 8 : Hi <> Do */
-
- if ((hmsc->cbw.bmFlags & 0x80) == 0x80)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- /* Check whether Media is ready */
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- MEDIUM_NOT_PRESENT);
- return -1;
- }
-
- /* Check If media is write-protected */
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsWriteProtected(lun) !=0 )
- {
- SCSI_SenseCode(pdev,
- lun,
- NOT_READY,
- WRITE_PROTECTED);
- return -1;
- }
-
-
- hmsc->scsi_blk_addr = (params[2] << 24) | \
- (params[3] << 16) | \
- (params[4] << 8) | \
- params[5];
- hmsc->scsi_blk_len = (params[7] << 8) | \
- params[8];
-
- /* check if LBA address is in the right range */
- if(SCSI_CheckAddressRange(pdev,
- lun,
- hmsc->scsi_blk_addr,
- hmsc->scsi_blk_len) < 0)
- {
- return -1; /* error */
- }
-
- hmsc->scsi_blk_addr *= hmsc->scsi_blk_size;
- hmsc->scsi_blk_len *= hmsc->scsi_blk_size;
-
- /* cases 3,11,13 : Hn,Ho <> D0 */
- if (hmsc->cbw.dDataLength != hmsc->scsi_blk_len)
- {
- SCSI_SenseCode(pdev,
- hmsc->cbw.bLUN,
- ILLEGAL_REQUEST,
- INVALID_CDB);
- return -1;
- }
-
- /* Prepare EP to receive first data packet */
- hmsc->bot_state = USBD_BOT_DATA_OUT;
- USBD_LL_PrepareReceive (pdev,
- MSC_EPOUT_ADDR,
- hmsc->bot_data,
- MIN (hmsc->scsi_blk_len, MSC_MEDIA_PACKET));
- }
- else /* Write Process ongoing */
- {
- return SCSI_ProcessWrite(pdev, lun);
- }
- return 0;
-}
-
-
-/**
-* @brief SCSI_Verify10
-* Process Verify10 command
-* @param lun: Logical unit number
-* @param params: Command parameters
-* @retval status
-*/
-
-static int8_t SCSI_Verify10(USBD_HandleTypeDef *pdev, uint8_t lun , uint8_t *params)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if ((params[1]& 0x02) == 0x02)
- {
- SCSI_SenseCode (pdev,
- lun,
- ILLEGAL_REQUEST,
- INVALID_FIELED_IN_COMMAND);
- return -1; /* Error, Verify Mode Not supported*/
- }
-
- if(SCSI_CheckAddressRange(pdev,
- lun,
- hmsc->scsi_blk_addr,
- hmsc->scsi_blk_len) < 0)
- {
- return -1; /* error */
- }
- hmsc->bot_data_length = 0;
- return 0;
-}
-
-/**
-* @brief SCSI_CheckAddressRange
-* Check address range
-* @param lun: Logical unit number
-* @param blk_offset: first block address
-* @param blk_nbr: number of block to be processed
-* @retval status
-*/
-static int8_t SCSI_CheckAddressRange (USBD_HandleTypeDef *pdev, uint8_t lun , uint32_t blk_offset , uint16_t blk_nbr)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- if ((blk_offset + blk_nbr) > hmsc->scsi_blk_nbr )
- {
- SCSI_SenseCode(pdev,
- lun,
- ILLEGAL_REQUEST,
- ADDRESS_OUT_OF_RANGE);
- return -1;
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ProcessRead
-* Handle Read Process
-* @param lun: Logical unit number
-* @retval status
-*/
-static int8_t SCSI_ProcessRead (USBD_HandleTypeDef *pdev, uint8_t lun)
-{
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
- uint32_t len;
-
- len = MIN(hmsc->scsi_blk_len , MSC_MEDIA_PACKET);
-
- if( ((USBD_StorageTypeDef *)pdev->pUserData)->Read(lun ,
- hmsc->bot_data,
- hmsc->scsi_blk_addr / hmsc->scsi_blk_size,
- len / hmsc->scsi_blk_size) < 0)
- {
-
- SCSI_SenseCode(pdev,
- lun,
- HARDWARE_ERROR,
- UNRECOVERED_READ_ERROR);
- return -1;
- }
-
-
- USBD_LL_Transmit (pdev,
- MSC_EPIN_ADDR,
- hmsc->bot_data,
- len);
-
-
- hmsc->scsi_blk_addr += len;
- hmsc->scsi_blk_len -= len;
-
- /* case 6 : Hi = Di */
- hmsc->csw.dDataResidue -= len;
-
- if (hmsc->scsi_blk_len == 0)
- {
- hmsc->bot_state = USBD_BOT_LAST_DATA_IN;
- }
- return 0;
-}
-
-/**
-* @brief SCSI_ProcessWrite
-* Handle Write Process
-* @param lun: Logical unit number
-* @retval status
-*/
-
-static int8_t SCSI_ProcessWrite (USBD_HandleTypeDef *pdev, uint8_t lun)
-{
- uint32_t len;
- USBD_MSC_BOT_HandleTypeDef *hmsc = pdev->pClassData;
-
- len = MIN(hmsc->scsi_blk_len , MSC_MEDIA_PACKET);
-
- if(((USBD_StorageTypeDef *)pdev->pUserData)->Write(lun ,
- hmsc->bot_data,
- hmsc->scsi_blk_addr / hmsc->scsi_blk_size,
- len / hmsc->scsi_blk_size) < 0)
- {
- SCSI_SenseCode(pdev,
- lun,
- HARDWARE_ERROR,
- WRITE_FAULT);
- return -1;
- }
-
-
- hmsc->scsi_blk_addr += len;
- hmsc->scsi_blk_len -= len;
-
- /* case 12 : Ho = Do */
- hmsc->csw.dDataResidue -= len;
-
- if (hmsc->scsi_blk_len == 0)
- {
- MSC_BOT_SendCSW (pdev, USBD_CSW_CMD_PASSED);
- }
- else
- {
- /* Prapare EP to Receive next packet */
- USBD_LL_PrepareReceive (pdev,
- MSC_EPOUT_ADDR,
- hmsc->bot_data,
- MIN (hmsc->scsi_blk_len, MSC_MEDIA_PACKET));
- }
-
- return 0;
-}
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-
-/**
- * @}
- */
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
diff --git a/stmhal/usbdev/class/msc/src/usbd_msc_storage_template.c b/stmhal/usbdev/class/msc/src/usbd_msc_storage_template.c
deleted file mode 100644
index f75f11a9e5..0000000000
--- a/stmhal/usbdev/class/msc/src/usbd_msc_storage_template.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/**
- ******************************************************************************
- * @file usbd_msc_storage_template.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief Memory management layer
- ******************************************************************************
- * @attention
- *
- * © COPYRIGHT 2014 STMicroelectronics
- *
- * 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 obtain a copy of the License at:
- *
- * 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,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- ******************************************************************************
- */
-
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_msc_storage_template.h"
-
-
-/* Private typedef -----------------------------------------------------------*/
-/* Private define ------------------------------------------------------------*/
-/* Private macro -------------------------------------------------------------*/
-/* Private variables ---------------------------------------------------------*/
-/* Private function prototypes -----------------------------------------------*/
-/* Extern function prototypes ------------------------------------------------*/
-/* Private functions ---------------------------------------------------------*/
-
-#define STORAGE_LUN_NBR 1
-#define STORAGE_BLK_NBR 0x10000
-#define STORAGE_BLK_SIZ 0x200
-
-int8_t STORAGE_Init (uint8_t lun);
-
-int8_t STORAGE_GetCapacity (uint8_t lun,
- uint32_t *block_num,
- uint16_t *block_size);
-
-int8_t STORAGE_IsReady (uint8_t lun);
-
-int8_t STORAGE_IsWriteProtected (uint8_t lun);
-
-int8_t STORAGE_Read (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len);
-
-int8_t STORAGE_Write (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len);
-
-int8_t STORAGE_GetMaxLun (void);
-
-/* USB Mass storage Standard Inquiry Data */
-int8_t STORAGE_Inquirydata[] = {//36
-
- /* LUN 0 */
- 0x00,
- 0x80,
- 0x02,
- 0x02,
- (STANDARD_INQUIRY_DATA_LEN - 5),
- 0x00,
- 0x00,
- 0x00,
- 'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
- 'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product : 16 Bytes */
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
- '0', '.', '0' ,'1', /* Version : 4 Bytes */
-};
-
-USBD_StorageTypeDef USBD_MSC_Template_fops =
-{
- STORAGE_Init,
- STORAGE_GetCapacity,
- STORAGE_IsReady,
- STORAGE_IsWriteProtected,
- STORAGE_Read,
- STORAGE_Write,
- STORAGE_GetMaxLun,
- STORAGE_Inquirydata,
-
-};
-/*******************************************************************************
-* Function Name : Read_Memory
-* Description : Handle the Read operation from the microSD card.
-* Input : None.
-* Output : None.
-* Return : None.
-*******************************************************************************/
-int8_t STORAGE_Init (uint8_t lun)
-{
- return (0);
-}
-
-/*******************************************************************************
-* Function Name : Read_Memory
-* Description : Handle the Read operation from the STORAGE card.
-* Input : None.
-* Output : None.
-* Return : None.
-*******************************************************************************/
-int8_t STORAGE_GetCapacity (uint8_t lun, uint32_t *block_num, uint16_t *block_size)
-{
- *block_num = STORAGE_BLK_NBR;
- *block_size = STORAGE_BLK_SIZ;
- return (0);
-}
-
-/*******************************************************************************
-* Function Name : Read_Memory
-* Description : Handle the Read operation from the STORAGE card.
-* Input : None.
-* Output : None.
-* Return : None.
-*******************************************************************************/
-int8_t STORAGE_IsReady (uint8_t lun)
-{
- return (0);
-}
-
-/*******************************************************************************
-* Function Name : Read_Memory
-* Description : Handle the Read operation from the STORAGE card.
-* Input : None.
-* Output : None.
-* Return : None.
-*******************************************************************************/
-int8_t STORAGE_IsWriteProtected (uint8_t lun)
-{
- return 0;
-}
-
-/*******************************************************************************
-* Function Name : Read_Memory
-* Description : Handle the Read operation from the STORAGE card.
-* Input : None.
-* Output : None.
-* Return : None.
-*******************************************************************************/
-int8_t STORAGE_Read (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len)
-{
- return 0;
-}
-/*******************************************************************************
-* Function Name : Write_Memory
-* Description : Handle the Write operation to the STORAGE card.
-* Input : None.
-* Output : None.
-* Return : None.
-*******************************************************************************/
-int8_t STORAGE_Write (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len)
-{
- return (0);
-}
-/*******************************************************************************
-* Function Name : Write_Memory
-* Description : Handle the Write operation to the STORAGE card.
-* Input : None.
-* Output : None.
-* Return : None.
-*******************************************************************************/
-int8_t STORAGE_GetMaxLun (void)
-{
- return (STORAGE_LUN_NBR - 1);
-}
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/class/cdc_msc_hid/src/usbd_cdc_msc_hid.c b/stmhal/usbdev/class/src/usbd_cdc_msc_hid.c
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc_hid/src/usbd_cdc_msc_hid.c
rename to stmhal/usbdev/class/src/usbd_cdc_msc_hid.c
diff --git a/stmhal/usbdev/class/cdc_msc/src/usbd_msc.c b/stmhal/usbdev/class/src/usbd_msc.c
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc/src/usbd_msc.c
rename to stmhal/usbdev/class/src/usbd_msc.c
diff --git a/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc_bot.c b/stmhal/usbdev/class/src/usbd_msc_bot.c
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc_bot.c
rename to stmhal/usbdev/class/src/usbd_msc_bot.c
diff --git a/stmhal/usbdev/class/cdc_msc/src/usbd_msc_data.c b/stmhal/usbdev/class/src/usbd_msc_data.c
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc/src/usbd_msc_data.c
rename to stmhal/usbdev/class/src/usbd_msc_data.c
diff --git a/stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc_scsi.c b/stmhal/usbdev/class/src/usbd_msc_scsi.c
similarity index 100%
rename from stmhal/usbdev/class/cdc_msc_hid/src/usbd_msc_scsi.c
rename to stmhal/usbdev/class/src/usbd_msc_scsi.c