Scheduler_Start();\r
}\r
\r
-/** Event handler for the USB_Reset event. This fires when the USB interface is reset by the USB host, before the\r
- * enumeration process begins, and enables the control endpoint interrupt so that control requests can be handled\r
- * asynchronously when they arrive rather than when the control endpoint is polled manually.\r
- */\r
-EVENT_HANDLER(USB_Reset)\r
-{\r
- /* Select the control endpoint */\r
- Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);\r
-\r
- /* Enable the endpoint SETUP interrupt ISR for the control endpoint */\r
- USB_INT_Enable(ENDPOINT_INT_SETUP);\r
-}\r
-\r
/** Event handler for the USB_Connect event. This indicates that the device is enumerating via the status LEDs. */\r
EVENT_HANDLER(USB_Connect)\r
{\r
/* Continue with the current stream operation */\r
return STREAMCALLBACK_Continue;\r
}\r
-\r
-/** ISR for the general Pipe/Endpoint interrupt vector. This ISR fires when a control request has been issued to the control endpoint,\r
- * so that the request can be processed. As several elements of the Mass Storage implementation require asynchronous control requests\r
- * (such as endpoint stall clearing and Mass Storage Reset requests during data transfers) this is done via interrupts rather than\r
- * polling so that they can be processed regardless of the rest of the application's state.\r
- */\r
-ISR(ENDPOINT_PIPE_vect, ISR_BLOCK)\r
-{\r
- /* Check if the control endpoint has received a request */\r
- if (Endpoint_HasEndpointInterrupted(ENDPOINT_CONTROLEP))\r
- {\r
- /* Process the control request */\r
- USB_USBTask();\r
-\r
- /* Handshake the endpoint setup interrupt - must be after the call to USB_USBTask() */\r
- USB_INT_Clear(ENDPOINT_INT_SETUP);\r
- }\r
-}\r