Break device mode class driver interfaces into seperate config and state structs...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Host / CDC.c
index 32cc9e6..6eca8ae 100644 (file)
@@ -41,22 +41,22 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(void)
        uint8_t  FoundEndpoints = 0;\r
        \r
        if (USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, NULL) != HOST_SENDCONTROL_Successful)\r
-         return ControlError;\r
+         return CDC_ENUMERROR_ControlError;\r
        \r
        if (ConfigDescriptorSize > 512)\r
-         return DescriptorTooLarge;\r
+         return CDC_ENUMERROR_DescriptorTooLarge;\r
          \r
        ConfigDescriptorData = alloca(ConfigDescriptorSize);\r
 \r
        USB_GetDeviceConfigDescriptor(&ConfigDescriptorSize, ConfigDescriptorData);\r
        \r
        if (DESCRIPTOR_TYPE(ConfigDescriptorData) != DTYPE_Configuration)\r
-         return InvalidConfigDataReturned;\r
+         return CDC_ENUMERROR_InvalidConfigDataReturned;\r
        \r
        if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
                                      DComp_CDC_Host_NextCDCControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
        {\r
-               return NoCDCInterfaceFound;\r
+               return CDC_ENUMERROR_NoCDCInterfaceFound;\r
        }\r
 \r
        while (FoundEndpoints != ((1 << CDC_NOTIFICATIONPIPE) | (1 << CDC_DATAPIPE_IN) | (1 << CDC_DATAPIPE_OUT)))\r
@@ -72,7 +72,7 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(void)
                                                              DComp_CDC_Host_NextCDCDataInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
                                {\r
                                        /* Descriptor not found, error out */\r
-                                       return NoCDCInterfaceFound;\r
+                                       return CDC_ENUMERROR_NoCDCInterfaceFound;\r
                                }\r
                        }\r
                        else\r
@@ -89,14 +89,14 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(void)
                                if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
                                                              DComp_CDC_Host_NextCDCControlInterface) != DESCRIPTOR_SEARCH_COMP_Found)\r
                                {\r
-                                       return NoCDCInterfaceFound;\r
+                                       return CDC_ENUMERROR_NoCDCInterfaceFound;\r
                                }\r
                        }\r
 \r
                        if (USB_GetNextDescriptorComp(&ConfigDescriptorSize, &ConfigDescriptorData,\r
                                                      DComp_CDC_Host_NextInterfaceCDCDataEndpoint) != DESCRIPTOR_SEARCH_COMP_Found)\r
                        {\r
-                               return NoEndpointFound;\r
+                               return CDC_ENUMERROR_NoEndpointFound;\r
                        }\r
                }\r
                \r
@@ -139,7 +139,7 @@ static uint8_t CDC_Host_ProcessConfigDescriptor(void)
                }\r
        }\r
 \r
-       return SuccessfulConfigRead;\r
+       return CDC_ENUMERROR_NoError;\r
 }\r
 \r
 static uint8_t DComp_CDC_Host_NextCDCControlInterface(void* CurrentDescriptor)\r
@@ -192,25 +192,19 @@ static uint8_t DComp_CDC_Host_NextInterfaceCDCDataEndpoint(void* CurrentDescript
        return DESCRIPTOR_SEARCH_NotFound;\r
 }\r
 \r
-void CDC_Host_Task(void)\r
+void CDC_Host_USBTask(USB_ClassInfo_CDC_Host_t* CDCInterfaceInfo)\r
 {\r
        uint8_t ErrorCode;\r
 \r
        switch (USB_HostState)\r
        {\r
                case HOST_STATE_Addressed:\r
-                       USB_ControlRequest = (USB_Request_Header_t)\r
-                               {\r
-                                       .bmRequestType = (REQDIR_HOSTTODEVICE | REQTYPE_STANDARD | REQREC_DEVICE),\r
-                                       .bRequest      = REQ_SetConfiguration,\r
-                                       .wValue        = 1,\r
-                                       .wIndex        = 0,\r
-                                       .wLength       = 0,\r
-                               };\r
-\r
-                       Pipe_SelectPipe(PIPE_CONTROLPIPE);\r
+                       if ((ErrorCode = CDC_Host_ProcessConfigDescriptor()) != SuccessfulConfigRead)\r
+                       {\r
+                               USB_HostState = HOST_STATE_Unattached;\r
+                       }\r
 \r
-                       if ((ErrorCode = USB_Host_SendControlRequest(NULL)) != HOST_SENDCONTROL_Successful)\r
+                       if ((ErrorCode = USB_Host_SetDeviceConfiguration(1)) != HOST_SENDCONTROL_Successful)\r
                        {\r
                                USB_HostState = HOST_STATE_Unattached;\r
                        }\r
@@ -218,10 +212,6 @@ void CDC_Host_Task(void)
                        USB_HostState = HOST_STATE_Configured;\r
                        break;\r
                case HOST_STATE_Configured:\r
-                       if ((ErrorCode = CDC_Host_ProcessConfigDescriptor()) != SuccessfulConfigRead)\r
-                       {\r
-                               USB_HostState = HOST_STATE_Unattached;\r
-                       }\r
                                \r
                        USB_HostState = HOST_STATE_Ready;\r
                        break;\r