CI: Don't use multiple jobs when building under CI, so that output is consistent.
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / HIDClassDevice.c
index 0ea915d..7f18076 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2012.
+     Copyright (C) Dean Camera, 2018.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2018  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
@@ -68,6 +68,10 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
                                Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
 
                                Endpoint_ClearSETUP();
                                Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
 
                                Endpoint_ClearSETUP();
+
+                               if (ReportID)
+                                 Endpoint_Write_8(ReportID);
+
                                Endpoint_Write_Control_Stream_LE(ReportData, ReportSize);
                                Endpoint_ClearOUT();
                        }
                                Endpoint_Write_Control_Stream_LE(ReportData, ReportSize);
                                Endpoint_ClearOUT();
                        }
@@ -144,8 +148,8 @@ bool HID_Device_ConfigureEndpoints(USB_ClassInfo_HID_Device_t* const HIDInterfac
        HIDInterfaceInfo->Config.ReportINEndpoint.Type = EP_TYPE_INTERRUPT;
 
        if (!(Endpoint_ConfigureEndpointTable(&HIDInterfaceInfo->Config.ReportINEndpoint, 1)))
        HIDInterfaceInfo->Config.ReportINEndpoint.Type = EP_TYPE_INTERRUPT;
 
        if (!(Endpoint_ConfigureEndpointTable(&HIDInterfaceInfo->Config.ReportINEndpoint, 1)))
-         return false; 
-       
+         return false;
+
        return true;
 }
 
        return true;
 }
 
@@ -155,8 +159,15 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
          return;
 
        if (HIDInterfaceInfo->State.PrevFrameNum == USB_Device_GetFrameNumber())
          return;
 
        if (HIDInterfaceInfo->State.PrevFrameNum == USB_Device_GetFrameNumber())
-         return;
-         
+       {
+               #if defined(USB_DEVICE_OPT_LOWSPEED)
+               if (!(USB_Options & USB_DEVICE_OPT_LOWSPEED))
+                 return;
+               #else
+               return;
+               #endif
+       }
+
        Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpoint.Address);
 
        if (Endpoint_IsReadWriteAllowed())
        Endpoint_SelectEndpoint(HIDInterfaceInfo->Config.ReportINEndpoint.Address);
 
        if (Endpoint_IsReadWriteAllowed())
@@ -191,7 +202,7 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
 
                        Endpoint_ClearIN();
                }
 
                        Endpoint_ClearIN();
                }
-               
+
                HIDInterfaceInfo->State.PrevFrameNum = USB_Device_GetFrameNumber();
        }
 }
                HIDInterfaceInfo->State.PrevFrameNum = USB_Device_GetFrameNumber();
        }
 }