\r
for (;;)\r
{\r
- switch (USB_HostState)\r
- {\r
- case HOST_STATE_Addressed:\r
- LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
-\r
- uint16_t ConfigDescriptorSize;\r
- uint8_t ConfigDescriptorData[512];\r
-\r
- if (USB_Host_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData,\r
- sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful)\r
- {\r
- puts_P(PSTR("Error Retrieving Configuration Descriptor.\r\n"));\r
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
- USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
- break;\r
- }\r
-\r
- if (HID_Host_ConfigurePipes(&Device_HID_Interface,\r
- ConfigDescriptorSize, ConfigDescriptorData) != HID_ENUMERROR_NoError)\r
- {\r
- puts_P(PSTR("Attached Device Not a Valid HID Device.\r\n"));\r
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
- USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
- break;\r
- }\r
-\r
- if (USB_Host_SetDeviceConfiguration(1) != HOST_SENDCONTROL_Successful)\r
- {\r
- puts_P(PSTR("Error Setting Device Configuration.\r\n"));\r
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
- USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
- break;\r
- }\r
-\r
- if (HID_Host_SetReportProtocol(&Device_HID_Interface) != 0)\r
- {\r
- puts_P(PSTR("Error Setting Report Protocol Mode.\r\n"));\r
- LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
- USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
- break;\r
- }\r
-\r
- puts_P(PSTR("HID Device Enumerated.\r\n"));\r
- LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
- USB_HostState = HOST_STATE_Configured;\r
- break;\r
- case HOST_STATE_Configured:\r
- LEDs_SetAllLEDs(LEDMASK_USB_BUSY);\r
- \r
- OutputReportSizes();\r
- OutputParsedReportItems();\r
- \r
- LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
- USB_HostState = HOST_STATE_WaitForDeviceRemoval;\r
- break;\r
- }\r
-\r
+ RetrieveDeviceData();\r
+ \r
HID_Host_USBTask(&Device_HID_Interface);\r
USB_USBTask();\r
}\r
}\r
\r
+/** Task to retrieve the HID device information from an attached device, and output\r
+ * the relevant data to the serial port for analysis.\r
+ */\r
+void RetrieveDeviceData(void)\r
+{\r
+ if (USB_CurrentMode != USB_MODE_Host)\r
+ return;\r
+ \r
+ LEDs_SetAllLEDs(LEDMASK_USB_BUSY);\r
+ \r
+ OutputReportSizes();\r
+ OutputParsedReportItems();\r
+ \r
+ LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
+ USB_Host_SetDeviceConfiguration(0);\r
+}\r
+\r
/** Prints a summary of the device's HID report sizes from the HID parser output to the serial port\r
* for display to the user.\r
*/\r
*/\r
void EVENT_USB_Host_DeviceEnumerationComplete(void)\r
{\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ENUMERATING);\r
+\r
+ uint16_t ConfigDescriptorSize;\r
+ uint8_t ConfigDescriptorData[512];\r
+\r
+ if (USB_Host_GetDeviceConfigDescriptor(1, &ConfigDescriptorSize, ConfigDescriptorData,\r
+ sizeof(ConfigDescriptorData)) != HOST_GETCONFIG_Successful)\r
+ {\r
+ puts_P(PSTR("Error Retrieving Configuration Descriptor.\r\n"));\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ return;\r
+ }\r
+\r
+ if (HID_Host_ConfigurePipes(&Device_HID_Interface,\r
+ ConfigDescriptorSize, ConfigDescriptorData) != HID_ENUMERROR_NoError)\r
+ {\r
+ puts_P(PSTR("Attached Device Not a Valid HID Device.\r\n"));\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ return;\r
+ }\r
+\r
+ if (USB_Host_SetDeviceConfiguration(1) != HOST_SENDCONTROL_Successful)\r
+ {\r
+ puts_P(PSTR("Error Setting Device Configuration.\r\n"));\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ return;\r
+ }\r
+\r
+ if (HID_Host_SetReportProtocol(&Device_HID_Interface) != 0)\r
+ {\r
+ puts_P(PSTR("Error Setting Report Protocol Mode.\r\n"));\r
+ LEDs_SetAllLEDs(LEDMASK_USB_ERROR);\r
+ USB_Host_SetDeviceConfiguration(0);\r
+ return;\r
+ }\r
+\r
+ puts_P(PSTR("HID Device Enumerated.\r\n"));\r
LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
}\r
\r