aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Device/ClassDriver
diff options
context:
space:
mode:
Diffstat (limited to 'Demos/Device/ClassDriver')
-rw-r--r--Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.c24
-rw-r--r--Demos/Device/ClassDriver/USBtoSerial/USBtoSerial.c2
2 files changed, 21 insertions, 5 deletions
diff --git a/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.c b/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.c
index 1c584e71c..5f12d02b4 100644
--- a/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.c
+++ b/Demos/Device/ClassDriver/MassStorage/Lib/DataflashManager.c
@@ -69,7 +69,11 @@ void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* MSInterfaceInfo, co
Dataflash_SendAddressBytes(0, CurrDFPageByte);
/* Wait until endpoint is ready before continuing */
- while (!(Endpoint_IsReadWriteAllowed()));
+ while (!(Endpoint_IsReadWriteAllowed()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
while (TotalBlocks)
{
@@ -85,7 +89,11 @@ void DataflashManager_WriteBlocks(USB_ClassInfo_MS_Device_t* MSInterfaceInfo, co
Endpoint_ClearOUT();
/* Wait until the host has sent another packet */
- while (!(Endpoint_IsReadWriteAllowed()));
+ while (!(Endpoint_IsReadWriteAllowed()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
}
/* Check if end of dataflash page reached */
@@ -197,7 +205,11 @@ void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* MSInterfaceInfo, con
Dataflash_SendByte(0x00);
/* Wait until endpoint is ready before continuing */
- while (!(Endpoint_IsReadWriteAllowed()));
+ while (!(Endpoint_IsReadWriteAllowed()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
while (TotalBlocks)
{
@@ -213,7 +225,11 @@ void DataflashManager_ReadBlocks(USB_ClassInfo_MS_Device_t* MSInterfaceInfo, con
Endpoint_ClearIN();
/* Wait until the endpoint is ready for more data */
- while (!(Endpoint_IsReadWriteAllowed()));
+ while (!(Endpoint_IsReadWriteAllowed()))
+ {
+ if (USB_DeviceState == DEVICE_STATE_Unattached)
+ return;
+ }
}
/* Check if end of dataflash page reached */
diff --git a/Demos/Device/ClassDriver/USBtoSerial/USBtoSerial.c b/Demos/Device/ClassDriver/USBtoSerial/USBtoSerial.c
index ac63f0f9f..89537066c 100644
--- a/Demos/Device/ClassDriver/USBtoSerial/USBtoSerial.c
+++ b/Demos/Device/ClassDriver/USBtoSerial/USBtoSerial.c
@@ -152,7 +152,7 @@ void EVENT_USB_UnhandledControlPacket(void)
*/
ISR(USART1_RX_vect, ISR_BLOCK)
{
- if (USB_IsConnected)
+ if (USB_DeviceState == DEVICE_STATE_Configured)
Buffer_StoreElement(&Tx_Buffer, UDR1);
}