Remove incomplete MIDIToneGenerator project.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / HID.c
index 88bb609..e38d35a 100644 (file)
@@ -48,23 +48,21 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
                case REQ_GetReport:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
-                               Endpoint_ClearSETUP();  
+                               uint16_t ReportSize = 0;
+                               uint8_t  ReportID   = (USB_ControlRequest.wValue & 0xFF);
+                               uint8_t  ReportType = (USB_ControlRequest.wValue >> 8) - 1;
+                               uint8_t  ReportData[HIDInterfaceInfo->Config.PrevReportINBufferSize];
 
-                               uint16_t ReportINSize = 0;
-                               uint8_t  ReportID     = (USB_ControlRequest.wValue & 0xFF);
-                               uint8_t  ReportType   = (USB_ControlRequest.wValue >> 8) - 1;
-                               uint8_t  ReportINData[HIDInterfaceInfo->Config.PrevReportINBufferSize];
+                               memset(ReportData, 0, sizeof(ReportData));
 
-                               memset(ReportINData, 0, sizeof(ReportINData));
-
-                               CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportType,
-                                                                   HIDInterfaceInfo->Config.PrevReportINBuffer, &ReportINSize);
+                               CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportType, ReportData, &ReportSize);
                                
                                if (HIDInterfaceInfo->Config.PrevReportINBuffer != NULL)
-                                 memcpy(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINData, HIDInterfaceInfo->Config.PrevReportINBufferSize);
+                                 memcpy(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportData, HIDInterfaceInfo->Config.PrevReportINBufferSize);
 
+                               Endpoint_ClearSETUP();
                                Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
-                               Endpoint_Write_Control_Stream_LE(HIDInterfaceInfo->Config.PrevReportINBuffer, ReportINSize);
+                               Endpoint_Write_Control_Stream_LE(ReportData, ReportSize);
                                Endpoint_ClearOUT();
                        }
                
@@ -72,15 +70,16 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
                case REQ_SetReport:
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
-                               Endpoint_ClearSETUP();
-                               
-                               uint16_t ReportOUTSize = USB_ControlRequest.wLength;
-                               uint8_t  ReportOUTData[ReportOUTSize];
-                               uint8_t  ReportID = (USB_ControlRequest.wValue & 0xFF);
+                               uint16_t ReportSize = USB_ControlRequest.wLength;
+                               uint8_t  ReportID   = (USB_ControlRequest.wValue & 0xFF);
+                               uint8_t  ReportType = (USB_ControlRequest.wValue >> 8) - 1;
+                               uint8_t  ReportData[ReportSize];
 
-                               Endpoint_Read_Control_Stream_LE(ReportOUTData, ReportOUTSize);
-                               CALLBACK_HID_Device_ProcessHIDReport(HIDInterfaceInfo, ReportID, ReportOUTData, ReportOUTSize);
+                               Endpoint_ClearSETUP();
+                               Endpoint_Read_Control_Stream_LE(ReportData, ReportSize);
                                Endpoint_ClearIN();                             
+
+                               CALLBACK_HID_Device_ProcessHIDReport(HIDInterfaceInfo, ReportID, ReportType, ReportData, ReportSize);
                        }
                        
                        break;
@@ -88,10 +87,8 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
-
                                Endpoint_Write_Byte(HIDInterfaceInfo->State.UsingReportProtocol);
                                Endpoint_ClearIN();
-
                                Endpoint_ClearStatusStage();
                        }
                        
@@ -100,10 +97,9 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
-
-                               HIDInterfaceInfo->State.UsingReportProtocol = ((USB_ControlRequest.wValue & 0xFF) != 0x00);
-                               
                                Endpoint_ClearStatusStage();
+
+                               HIDInterfaceInfo->State.UsingReportProtocol = ((USB_ControlRequest.wValue & 0xFF) != 0x00);                             
                        }
                        
                        break;
@@ -111,10 +107,9 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
                        if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
                        {
                                Endpoint_ClearSETUP();
-                                       
-                               HIDInterfaceInfo->State.IdleCount = ((USB_ControlRequest.wValue & 0xFF00) >> 6);
-                                       
                                Endpoint_ClearStatusStage();
+
+                               HIDInterfaceInfo->State.IdleCount = ((USB_ControlRequest.wValue & 0xFF00) >> 6);
                        }
                        
                        break;
@@ -122,10 +117,8 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
                        if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
                        {               
                                Endpoint_ClearSETUP();
-                               
                                Endpoint_Write_Byte(HIDInterfaceInfo->State.IdleCount >> 2);
                                Endpoint_ClearIN();
-
                                Endpoint_ClearStatusStage();
                        }