You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
607 lines
19 KiB
607 lines
19 KiB
Index: Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc/usbd_msc.h
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
--- Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc/usbd_msc.h (date 1511202099000)
|
|
+++ Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Inc/usbd_msc.h (revision )
|
|
@@ -58,9 +58,10 @@
|
|
#define BOT_RESET 0xFF
|
|
#define USB_MSC_CONFIG_DESC_SIZ 32
|
|
|
|
-
|
|
+#ifndef MSC_CUSTOM_EPS
|
|
#define MSC_EPIN_ADDR 0x81
|
|
-#define MSC_EPOUT_ADDR 0x01
|
|
+#define MSC_EPOUT_ADDR 0x01
|
|
+#endif
|
|
|
|
/**
|
|
* @}
|
|
@@ -107,7 +108,7 @@
|
|
USBD_MSC_BOT_HandleTypeDef;
|
|
|
|
/* Structure for MSC process */
|
|
-extern USBD_ClassTypeDef USBD_MSC;
|
|
+extern USBD_ClassTypeDef USBD_MSC;
|
|
#define USBD_MSC_CLASS &USBD_MSC
|
|
|
|
uint8_t USBD_MSC_RegisterStorage (USBD_HandleTypeDef *pdev,
|
|
@@ -118,8 +119,34 @@
|
|
|
|
/**
|
|
* @}
|
|
- */
|
|
+ */
|
|
|
|
+// XXX "static" moved here for use in composite driver
|
|
+
|
|
+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);
|
|
+
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
Index: Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
--- Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h (date 1511202099000)
|
|
+++ Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Inc/usbd_cdc.h (revision )
|
|
@@ -48,10 +48,12 @@
|
|
|
|
/** @defgroup usbd_cdc_Exported_Defines
|
|
* @{
|
|
- */
|
|
+ */
|
|
+#ifndef CDC_CUSTOM_EPS
|
|
#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 */
|
|
+#endif
|
|
|
|
/* 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 */
|
|
@@ -159,9 +161,38 @@
|
|
uint8_t USBD_CDC_ReceivePacket (USBD_HandleTypeDef *pdev);
|
|
|
|
uint8_t USBD_CDC_TransmitPacket (USBD_HandleTypeDef *pdev);
|
|
+
|
|
+void USBD_CDC_TransmitDone (USBD_HandleTypeDef *pdev);
|
|
/**
|
|
* @}
|
|
*/
|
|
+
|
|
+// XXX exported "static" for composite driver
|
|
+uint8_t USBD_CDC_Init (USBD_HandleTypeDef *pdev,
|
|
+ uint8_t cfgidx);
|
|
+
|
|
+uint8_t USBD_CDC_DeInit (USBD_HandleTypeDef *pdev,
|
|
+ uint8_t cfgidx);
|
|
+
|
|
+uint8_t USBD_CDC_Setup (USBD_HandleTypeDef *pdev,
|
|
+ USBD_SetupReqTypedef *req);
|
|
+
|
|
+uint8_t USBD_CDC_DataIn (USBD_HandleTypeDef *pdev,
|
|
+ uint8_t epnum);
|
|
+
|
|
+uint8_t USBD_CDC_DataOut (USBD_HandleTypeDef *pdev,
|
|
+ uint8_t epnum);
|
|
+
|
|
+uint8_t USBD_CDC_EP0_RxReady (USBD_HandleTypeDef *pdev);
|
|
+
|
|
+uint8_t *USBD_CDC_GetFSCfgDesc (uint16_t *length);
|
|
+
|
|
+uint8_t *USBD_CDC_GetHSCfgDesc (uint16_t *length);
|
|
+
|
|
+uint8_t *USBD_CDC_GetOtherSpeedCfgDesc (uint16_t *length);
|
|
+
|
|
+uint8_t *USBD_CDC_GetDeviceQualifierDescriptor (uint16_t *length);
|
|
+
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
Index: Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
--- Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h (date 1511202099000)
|
|
+++ Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h (revision )
|
|
@@ -99,6 +99,7 @@
|
|
#define USB_DESC_TYPE_ENDPOINT 5
|
|
#define USB_DESC_TYPE_DEVICE_QUALIFIER 6
|
|
#define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 7
|
|
+#define USB_DESC_TYPE_IFACE_ASSOCIATION 11
|
|
#define USB_DESC_TYPE_BOS 0x0F
|
|
|
|
#define USB_CONFIG_REMOTE_WAKEUP 2
|
|
@@ -147,7 +148,7 @@
|
|
|
|
typedef struct usb_setup_req
|
|
{
|
|
-
|
|
+
|
|
uint8_t bmRequest;
|
|
uint8_t bRequest;
|
|
uint16_t wValue;
|
|
@@ -230,7 +231,7 @@
|
|
uint32_t dev_config_status;
|
|
USBD_SpeedTypeDef dev_speed;
|
|
USBD_EndpointTypeDef ep_in[15];
|
|
- USBD_EndpointTypeDef ep_out[15];
|
|
+ USBD_EndpointTypeDef ep_out[15];
|
|
uint32_t ep0_state;
|
|
uint32_t ep0_data_len;
|
|
uint8_t dev_state;
|
|
@@ -242,10 +243,14 @@
|
|
|
|
USBD_SetupReqTypedef request;
|
|
USBD_DescriptorsTypeDef *pDesc;
|
|
- USBD_ClassTypeDef *pClass;
|
|
- void *pClassData;
|
|
- void *pUserData;
|
|
- void *pData;
|
|
+ USBD_ClassTypeDef *pClass; // the composite class
|
|
+ void *pClassData;
|
|
+ void *pUserData;
|
|
+ void *pClassData2; // used for secondary class
|
|
+ void *pUserData2; // used for secondary class
|
|
+ void *pClassData3; // used for tertiary class
|
|
+ void *pUserData3; // used for tertiary class
|
|
+ void *pData; // this is a pointer to the low level registers struct
|
|
} USBD_HandleTypeDef;
|
|
|
|
/**
|
|
@@ -262,8 +267,14 @@
|
|
|
|
#define LOBYTE(x) ((uint8_t)(x & 0x00FF))
|
|
#define HIBYTE(x) ((uint8_t)((x & 0xFF00) >>8))
|
|
+
|
|
+#ifndef MIN
|
|
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
|
+#endif
|
|
+
|
|
+#ifndef MAX
|
|
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
|
+#endif
|
|
|
|
|
|
#if defined ( __GNUC__ )
|
|
Index: Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
--- Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c (date 1511202099000)
|
|
+++ Middlewares/ST/STM32_USB_Device_Library/Class/CDC/Src/usbd_cdc.c (revision )
|
|
@@ -59,6 +59,7 @@
|
|
*/
|
|
|
|
/* Includes ------------------------------------------------------------------*/
|
|
+#include "usbd_msc.h" // for rejecting bad control messages
|
|
#include "usbd_cdc.h"
|
|
#include "usbd_desc.h"
|
|
#include "usbd_ctlreq.h"
|
|
@@ -103,34 +104,7 @@
|
|
* @{
|
|
*/
|
|
|
|
-
|
|
-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);
|
|
-
|
|
+#ifndef CDC_COMPOSITE
|
|
/* USB Standard Device Descriptor */
|
|
__ALIGN_BEGIN static uint8_t USBD_CDC_DeviceQualifierDesc[USB_LEN_DEV_QUALIFIER_DESC] __ALIGN_END =
|
|
{
|
|
@@ -156,7 +130,7 @@
|
|
|
|
|
|
/* CDC interface class callbacks structure */
|
|
-USBD_ClassTypeDef USBD_CDC =
|
|
+USBD_ClassTypeDef USBD_CDC =
|
|
{
|
|
USBD_CDC_Init,
|
|
USBD_CDC_DeInit,
|
|
@@ -172,6 +146,7 @@
|
|
USBD_CDC_GetFSCfgDesc,
|
|
USBD_CDC_GetOtherSpeedCfgDesc,
|
|
USBD_CDC_GetDeviceQualifierDescriptor,
|
|
+ NULL
|
|
};
|
|
|
|
/* USB CDC device Configuration Descriptor */
|
|
@@ -456,6 +431,7 @@
|
|
0x00,
|
|
0x00 /* bInterval */
|
|
};
|
|
+#endif
|
|
|
|
/**
|
|
* @}
|
|
@@ -463,7 +439,7 @@
|
|
|
|
/** @defgroup USBD_CDC_Private_Functions
|
|
* @{
|
|
- */
|
|
+ */
|
|
|
|
/**
|
|
* @brief USBD_CDC_Init
|
|
@@ -472,7 +448,7 @@
|
|
* @param cfgidx: Configuration index
|
|
* @retval status
|
|
*/
|
|
-static uint8_t USBD_CDC_Init (USBD_HandleTypeDef *pdev,
|
|
+uint8_t USBD_CDC_Init (USBD_HandleTypeDef *pdev,
|
|
uint8_t cfgidx)
|
|
{
|
|
uint8_t ret = 0;
|
|
@@ -514,18 +490,18 @@
|
|
CDC_CMD_PACKET_SIZE);
|
|
|
|
|
|
- pdev->pClassData = USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));
|
|
+ pdev->pClassData2 = USBD_malloc(sizeof (USBD_CDC_HandleTypeDef));
|
|
|
|
- if(pdev->pClassData == NULL)
|
|
+ if(pdev->pClassData2 == NULL)
|
|
{
|
|
ret = 1;
|
|
}
|
|
else
|
|
{
|
|
- hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
/* Init physical Interface components */
|
|
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Init();
|
|
+ ((USBD_CDC_ItfTypeDef *)pdev->pUserData2)->Init();
|
|
|
|
/* Init Xfer states */
|
|
hcdc->TxState =0;
|
|
@@ -560,7 +536,7 @@
|
|
* @param cfgidx: Configuration index
|
|
* @retval status
|
|
*/
|
|
-static uint8_t USBD_CDC_DeInit (USBD_HandleTypeDef *pdev,
|
|
+uint8_t USBD_CDC_DeInit (USBD_HandleTypeDef *pdev,
|
|
uint8_t cfgidx)
|
|
{
|
|
uint8_t ret = 0;
|
|
@@ -579,11 +555,11 @@
|
|
|
|
|
|
/* DeInit physical Interface components */
|
|
- if(pdev->pClassData != NULL)
|
|
+ if(pdev->pClassData2 != NULL)
|
|
{
|
|
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->DeInit();
|
|
- USBD_free(pdev->pClassData);
|
|
- pdev->pClassData = NULL;
|
|
+ ((USBD_CDC_ItfTypeDef *)pdev->pUserData2)->DeInit();
|
|
+ USBD_free(pdev->pClassData2);
|
|
+ pdev->pClassData2 = NULL;
|
|
}
|
|
|
|
return ret;
|
|
@@ -596,20 +572,23 @@
|
|
* @param req: usb requests
|
|
* @retval status
|
|
*/
|
|
-static uint8_t USBD_CDC_Setup (USBD_HandleTypeDef *pdev,
|
|
+uint8_t USBD_CDC_Setup (USBD_HandleTypeDef *pdev,
|
|
USBD_SetupReqTypedef *req)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
static uint8_t ifalt = 0;
|
|
|
|
switch (req->bmRequest & USB_REQ_TYPE_MASK)
|
|
{
|
|
case USB_REQ_TYPE_CLASS :
|
|
+ if (req->bRequest == BOT_GET_MAX_LUN) break; // Not ours!
|
|
+ if (req->bRequest == BOT_RESET) break; // Not ours!
|
|
+
|
|
if (req->wLength)
|
|
{
|
|
if (req->bmRequest & 0x80)
|
|
{
|
|
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest,
|
|
+ ((USBD_CDC_ItfTypeDef *)pdev->pUserData2)->Control(req->bRequest,
|
|
(uint8_t *)hcdc->data,
|
|
req->wLength);
|
|
USBD_CtlSendData (pdev,
|
|
@@ -629,7 +608,7 @@
|
|
}
|
|
else
|
|
{
|
|
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(req->bRequest,
|
|
+ ((USBD_CDC_ItfTypeDef *)pdev->pUserData2)->Control(req->bRequest,
|
|
(uint8_t*)req,
|
|
0);
|
|
}
|
|
@@ -661,14 +640,15 @@
|
|
* @param epnum: endpoint number
|
|
* @retval status
|
|
*/
|
|
-static uint8_t USBD_CDC_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum)
|
|
+uint8_t USBD_CDC_DataIn (USBD_HandleTypeDef *pdev, uint8_t epnum)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
- if(pdev->pClassData != NULL)
|
|
+ if(pdev->pClassData2 != NULL)
|
|
{
|
|
|
|
hcdc->TxState = 0;
|
|
+ USBD_CDC_TransmitDone(pdev);
|
|
|
|
return USBD_OK;
|
|
}
|
|
@@ -685,18 +665,18 @@
|
|
* @param epnum: endpoint number
|
|
* @retval status
|
|
*/
|
|
-static uint8_t USBD_CDC_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum)
|
|
+uint8_t USBD_CDC_DataOut (USBD_HandleTypeDef *pdev, uint8_t epnum)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
/* 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)
|
|
+ if(pdev->pClassData2 != NULL)
|
|
{
|
|
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Receive(hcdc->RxBuffer, &hcdc->RxLength);
|
|
+ ((USBD_CDC_ItfTypeDef *)pdev->pUserData2)->Receive(hcdc->RxBuffer, &hcdc->RxLength);
|
|
|
|
return USBD_OK;
|
|
}
|
|
@@ -715,13 +695,13 @@
|
|
* @param epnum: endpoint number
|
|
* @retval status
|
|
*/
|
|
-static uint8_t USBD_CDC_EP0_RxReady (USBD_HandleTypeDef *pdev)
|
|
+uint8_t USBD_CDC_EP0_RxReady (USBD_HandleTypeDef *pdev)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
- if((pdev->pUserData != NULL) && (hcdc->CmdOpCode != 0xFF))
|
|
+ if((pdev->pUserData2 != NULL) && (hcdc->CmdOpCode != 0xFF))
|
|
{
|
|
- ((USBD_CDC_ItfTypeDef *)pdev->pUserData)->Control(hcdc->CmdOpCode,
|
|
+ ((USBD_CDC_ItfTypeDef *)pdev->pUserData2)->Control(hcdc->CmdOpCode,
|
|
(uint8_t *)hcdc->data,
|
|
hcdc->CmdLength);
|
|
hcdc->CmdOpCode = 0xFF;
|
|
@@ -730,6 +710,7 @@
|
|
return USBD_OK;
|
|
}
|
|
|
|
+#ifndef CDC_COMPOSITE
|
|
/**
|
|
* @brief USBD_CDC_GetFSCfgDesc
|
|
* Return configuration descriptor
|
|
@@ -737,7 +718,7 @@
|
|
* @param length : pointer data length
|
|
* @retval pointer to descriptor buffer
|
|
*/
|
|
-static uint8_t *USBD_CDC_GetFSCfgDesc (uint16_t *length)
|
|
+uint8_t *USBD_CDC_GetFSCfgDesc (uint16_t *length)
|
|
{
|
|
*length = sizeof (USBD_CDC_CfgFSDesc);
|
|
return USBD_CDC_CfgFSDesc;
|
|
@@ -750,7 +731,7 @@
|
|
* @param length : pointer data length
|
|
* @retval pointer to descriptor buffer
|
|
*/
|
|
-static uint8_t *USBD_CDC_GetHSCfgDesc (uint16_t *length)
|
|
+uint8_t *USBD_CDC_GetHSCfgDesc (uint16_t *length)
|
|
{
|
|
*length = sizeof (USBD_CDC_CfgHSDesc);
|
|
return USBD_CDC_CfgHSDesc;
|
|
@@ -763,7 +744,7 @@
|
|
* @param length : pointer data length
|
|
* @retval pointer to descriptor buffer
|
|
*/
|
|
-static uint8_t *USBD_CDC_GetOtherSpeedCfgDesc (uint16_t *length)
|
|
+uint8_t *USBD_CDC_GetOtherSpeedCfgDesc (uint16_t *length)
|
|
{
|
|
*length = sizeof (USBD_CDC_OtherSpeedCfgDesc);
|
|
return USBD_CDC_OtherSpeedCfgDesc;
|
|
@@ -780,6 +761,7 @@
|
|
*length = sizeof (USBD_CDC_DeviceQualifierDesc);
|
|
return USBD_CDC_DeviceQualifierDesc;
|
|
}
|
|
+#endif
|
|
|
|
/**
|
|
* @brief USBD_CDC_RegisterInterface
|
|
@@ -794,7 +776,7 @@
|
|
|
|
if(fops != NULL)
|
|
{
|
|
- pdev->pUserData= fops;
|
|
+ pdev->pUserData2= fops;
|
|
ret = USBD_OK;
|
|
}
|
|
|
|
@@ -811,7 +793,7 @@
|
|
uint8_t *pbuff,
|
|
uint16_t length)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
hcdc->TxBuffer = pbuff;
|
|
hcdc->TxLength = length;
|
|
@@ -829,7 +811,7 @@
|
|
uint8_t USBD_CDC_SetRxBuffer (USBD_HandleTypeDef *pdev,
|
|
uint8_t *pbuff)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
hcdc->RxBuffer = pbuff;
|
|
|
|
@@ -845,9 +827,9 @@
|
|
*/
|
|
uint8_t USBD_CDC_TransmitPacket(USBD_HandleTypeDef *pdev)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
- if(pdev->pClassData != NULL)
|
|
+ if(pdev->pClassData2 != NULL)
|
|
{
|
|
if(hcdc->TxState == 0)
|
|
{
|
|
@@ -882,10 +864,10 @@
|
|
*/
|
|
uint8_t USBD_CDC_ReceivePacket(USBD_HandleTypeDef *pdev)
|
|
{
|
|
- USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData;
|
|
+ USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*) pdev->pClassData2;
|
|
|
|
/* Suspend or Resume USB Out process */
|
|
- if(pdev->pClassData != NULL)
|
|
+ if(pdev->pClassData2 != NULL)
|
|
{
|
|
if(pdev->dev_speed == USBD_SPEED_HIGH )
|
|
{
|
|
Index: Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
--- Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c (date 1511202099000)
|
|
+++ Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc.c (revision )
|
|
@@ -116,7 +116,7 @@
|
|
* @{
|
|
*/
|
|
|
|
-
|
|
+#ifndef MSC_COMPOSITE
|
|
USBD_ClassTypeDef USBD_MSC =
|
|
{
|
|
USBD_MSC_Init,
|
|
@@ -279,6 +279,7 @@
|
|
0x01,
|
|
0x00,
|
|
};
|
|
+#endif
|
|
/**
|
|
* @}
|
|
*/
|
|
@@ -530,6 +531,7 @@
|
|
return 0;
|
|
}
|
|
|
|
+#ifndef MSC_COMPOSITE
|
|
/**
|
|
* @brief USBD_MSC_GetHSCfgDesc
|
|
* return configuration descriptor
|
|
@@ -576,6 +578,7 @@
|
|
*length = sizeof (USBD_MSC_DeviceQualifierDesc);
|
|
return USBD_MSC_DeviceQualifierDesc;
|
|
}
|
|
+#endif
|
|
|
|
/**
|
|
* @brief USBD_MSC_RegisterStorage
|
|
Index: Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c
|
|
IDEA additional info:
|
|
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
<+>UTF-8
|
|
===================================================================
|
|
--- Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c (date 1511202099000)
|
|
+++ Middlewares/ST/STM32_USB_Device_Library/Class/MSC/Src/usbd_msc_scsi.c (revision )
|
|
@@ -190,14 +190,27 @@
|
|
INVALID_CDB);
|
|
return -1;
|
|
}
|
|
-
|
|
- if(((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun) !=0 )
|
|
+
|
|
+ // XXX THIS SECTION IS MODIFIED FOR NOTIFY!
|
|
+ // https://www.microchip.com/forums/m401735.aspx
|
|
+ int8_t changeStatus = ((USBD_StorageTypeDef *)pdev->pUserData)->IsReady(lun);
|
|
+ if(changeStatus != 0)
|
|
{
|
|
- SCSI_SenseCode(pdev,
|
|
- lun,
|
|
- NOT_READY,
|
|
- MEDIUM_NOT_PRESENT);
|
|
-
|
|
+ if (changeStatus == -1)
|
|
+ {
|
|
+ SCSI_SenseCode(pdev,
|
|
+ lun,
|
|
+ UNIT_ATTENTION,
|
|
+ MEDIUM_HAVE_CHANGED);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ SCSI_SenseCode(pdev,
|
|
+ lun,
|
|
+ NOT_READY,
|
|
+ MEDIUM_NOT_PRESENT);
|
|
+ }
|
|
+
|
|
hmsc->bot_state = USBD_BOT_NO_DATA;
|
|
return -1;
|
|
}
|
|
|