CONTROL_LINE_OUT_* masks to determine the RTS and DTR line states using the following code:\r
*/\r
\r
- /* Acknowledge status stage */\r
- while (!(Endpoint_IsINReady()));\r
- Endpoint_ClearIN();\r
+ Endpoint_ClearStatusStage();\r
}\r
\r
break;\r
void CDC_Task(void)\r
{\r
/* Device must be connected and configured for the task to run */\r
- if (!(USB_IsConnected) || !(USB_ConfigurationNumber))\r
+ if (USB_DeviceState != DEVICE_STATE_Configured)\r
return;\r
\r
#if 0\r
if (Tx_Buffer.Elements)\r
{\r
/* Wait until Serial Tx Endpoint Ready for Read/Write */\r
- while (!(Endpoint_IsReadWriteAllowed()));\r
+ while (!(Endpoint_IsReadWriteAllowed()))\r
+ {\r
+ if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+ return;\r
+ }\r
\r
/* Write the bytes from the buffer to the endpoint while space is available */\r
while (Tx_Buffer.Elements && Endpoint_IsReadWriteAllowed())\r
if (IsFull && !(Tx_Buffer.Elements))\r
{\r
/* Wait until Serial Tx Endpoint Ready for Read/Write */\r
- while (!(Endpoint_IsReadWriteAllowed()));\r
-\r
+ while (!(Endpoint_IsReadWriteAllowed()))\r
+ {\r
+ if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+ return;\r
+ }\r
+ \r
/* Send an empty packet to terminate the transfer */\r
Endpoint_ClearIN();\r
}\r
ISR(USART1_RX_vect, ISR_BLOCK)\r
{\r
/* Only store received characters if the USB interface is connected */\r
- if (USB_IsConnected)\r
- {\r
- /* Character received, store it into the buffer */\r
- Buffer_StoreElement(&Tx_Buffer, UDR1);\r
- }\r
+ if (USB_DeviceState != DEVICE_STATE_Configured)\r
+ Buffer_StoreElement(&Tx_Buffer, UDR1);\r
}\r
\r
/** Reconfigures the USART to match the current serial port settings issued by the host as closely as possible. */\r