Mark build test makefiles as being incompatible with parallel make builds, as they...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / HIDClassDevice.c
index cf0d457..e4b5653 100644 (file)
@@ -7,7 +7,7 @@
 */
 
 /*
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
@@ -141,13 +141,11 @@ bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* const HIDInterfac
        HIDInterfaceInfo->State.UsingReportProtocol = true;
        HIDInterfaceInfo->State.IdleCount           = 500;
 
        HIDInterfaceInfo->State.UsingReportProtocol = true;
        HIDInterfaceInfo->State.IdleCount           = 500;
 
-       if (!(Endpoint_ConfigureEndpoint(HIDInterfaceInfo->Config.ReportINEndpointNumber, EP_TYPE_INTERRUPT,
-                                                                        ENDPOINT_DIR_IN, HIDInterfaceInfo->Config.ReportINEndpointSize,
-                                                                        HIDInterfaceInfo->Config.ReportINEndpointDoubleBank ? ENDPOINT_BANK_DOUBLE : ENDPOINT_BANK_SINGLE)))
-       {
-               return false;
-       }
+       HIDInterfaceInfo->Config.ReportINEndpoint.Type = EP_TYPE_INTERRUPT;
 
 
+       if (!(Endpoint_ConfigureEndpointTable(&HIDInterfaceInfo->Config.ReportINEndpoint, 1)))
+         return false; 
+       
        return true;
 }
 
        return true;
 }
 
@@ -156,7 +154,10 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
        if (USB_DeviceState != DEVICE_STATE_Configured)
          return;
 
        if (USB_DeviceState != DEVICE_STATE_Configured)
          return;
 
-       Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpointNumber);
+       if (HIDInterfaceInfo->State.PrevFrameNum == USB_Device_GetFrameNumber())
+         return;
+         
+       Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpoint.Address);
 
        if (Endpoint_IsReadWriteAllowed())
        {
 
        if (Endpoint_IsReadWriteAllowed())
        {
@@ -181,7 +182,7 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
                {
                        HIDInterfaceInfo->State.IdleMSRemaining = HIDInterfaceInfo->State.IdleCount;
 
                {
                        HIDInterfaceInfo->State.IdleMSRemaining = HIDInterfaceInfo->State.IdleCount;
 
-                       Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpointNumber);
+                       Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpoint.Address);
 
                        if (ReportID)
                          Endpoint_Write_8(ReportID);
 
                        if (ReportID)
                          Endpoint_Write_8(ReportID);
@@ -190,6 +191,8 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
 
                        Endpoint_ClearIN();
                }
 
                        Endpoint_ClearIN();
                }
+               
+               HIDInterfaceInfo->State.PrevFrameNum = USB_Device_GetFrameNumber();
        }
 }
 
        }
 }