Endpoint_ClearSETUP();\r
\r
/* Wait until the generic report has been sent by the host */\r
- while (!(Endpoint_IsOUTReceived()));\r
+ while (!(Endpoint_IsOUTReceived()))\r
+ {\r
+ if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+ return;\r
+ }\r
\r
Endpoint_Read_Control_Stream_LE(&GenericData, sizeof(GenericData));\r
\r
Endpoint_ClearOUT();\r
\r
/* Wait until the host is ready to receive the request confirmation */\r
- while (!(Endpoint_IsINReady()));\r
+ while (!(Endpoint_IsINReady()))\r
+ {\r
+ if (USB_DeviceState == DEVICE_STATE_Unattached)\r
+ return;\r
+ }\r
\r
/* Handshake the request by sending an empty IN packet */\r
Endpoint_ClearIN();\r
void HID_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
Endpoint_SelectEndpoint(GENERIC_OUT_EPNUM);\r