Update UC3 platform driver support to use the bitmasks defined in the header files...
[pub/USBasp.git] / Projects / HIDReportViewer / HIDReportViewer.c
index 49f81f2..c7a73e7 100644 (file)
@@ -74,68 +74,30 @@ int main(void)
 \r
        for (;;)\r
        {\r
 \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
                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
 /** 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
@@ -276,6 +238,43 @@ void EVENT_USB_Host_DeviceUnattached(void)
  */\r
 void EVENT_USB_Host_DeviceEnumerationComplete(void)\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
        LEDs_SetAllLEDs(LEDMASK_USB_READY);\r
 }\r
 \r