Fixed PDI programming mode in the AVRISP programmer project not exiting programming...
[pub/USBasp.git] / LUFA / Drivers / USB / Class / Device / HID.h
index de2ef9c..15b428a 100644 (file)
@@ -1,13 +1,13 @@
 /*\r
              LUFA Library\r
 /*\r
              LUFA Library\r
-     Copyright (C) Dean Camera, 2009.\r
+     Copyright (C) Dean Camera, 2010.\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
               \r
   dean [at] fourwalledcubicle [dot] com\r
       www.fourwalledcubicle.com\r
 */\r
 \r
 /*\r
-  Copyright 2009  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
+  Copyright 2010  Dean Camera (dean [at] fourwalledcubicle [dot] com)\r
 \r
   Permission to use, copy, modify, distribute, and sell this \r
   software and its documentation for any purpose is hereby granted\r
 \r
   Permission to use, copy, modify, distribute, and sell this \r
   software and its documentation for any purpose is hereby granted\r
                        extern "C" {\r
                #endif\r
 \r
                        extern "C" {\r
                #endif\r
 \r
+       /* Preprocessor Checks: */\r
+               #if !defined(__INCLUDE_FROM_HID_DRIVER)\r
+                       #error Do not include this file directly. Include LUFA/Drivers/Class/HID.h instead.\r
+               #endif\r
+\r
        /* Public Interface - May be used in end-application: */\r
                /* Type Defines: */\r
                        /** Class state structure. An instance of this structure should be made for each HID interface\r
        /* Public Interface - May be used in end-application: */\r
                /* Type Defines: */\r
                        /** Class state structure. An instance of this structure should be made for each HID interface\r
                         */\r
                        void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                        \r
                         */\r
                        void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
                        \r
-                       /** Indicates that a millisecond of idle time has elapsed on the given HID interface, and the interface's idle count should be\r
-                        *  decremented. This should be called once per millisecond so that hardware key-repeats function correctly. It is recommended\r
-                        *  that this be called by the \ref EVENT_USB_Device_StartOfFrame() event, once SOF events have been enabled via\r
-                        *  \ref USB_Device_EnableSOFEvents();.\r
-                        *\r
-                        *  \param[in,out] HIDInterfaceInfo  Pointer to a structure containing a HID Class configuration and state\r
-                        */\r
-                       void HID_Device_MillisecondElapsed(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);\r
-                       \r
                        /** HID class driver callback for the user creation of a HID IN report. This callback may fire in response to either\r
                         *  HID class control requests from the host, or by the normal HID endpoint polling procedure. Inside this callback the\r
                         *  user is responsible for the creation of the next HID input report to be sent to the host.\r
                        /** HID class driver callback for the user creation of a HID IN report. This callback may fire in response to either\r
                         *  HID class control requests from the host, or by the normal HID endpoint polling procedure. Inside this callback the\r
                         *  user is responsible for the creation of the next HID input report to be sent to the host.\r
                                                                  const void* ReportData, const uint16_t ReportSize) ATTR_NON_NULL_PTR_ARG(1)\r
                                                                  ATTR_NON_NULL_PTR_ARG(3);\r
 \r
                                                                  const void* ReportData, const uint16_t ReportSize) ATTR_NON_NULL_PTR_ARG(1)\r
                                                                  ATTR_NON_NULL_PTR_ARG(3);\r
 \r
+               /* Inline Functions: */\r
+                       /** Indicates that a millisecond of idle time has elapsed on the given HID interface, and the interface's idle count should be\r
+                        *  decremented. This should be called once per millisecond so that hardware key-repeats function correctly. It is recommended\r
+                        *  that this be called by the \ref EVENT_USB_Device_StartOfFrame() event, once SOF events have been enabled via\r
+                        *  \ref USB_Device_EnableSOFEvents();.\r
+                        *\r
+                        *  \param[in,out] HIDInterfaceInfo  Pointer to a structure containing a HID Class configuration and state\r
+                        */\r
+                       static inline void HID_Device_MillisecondElapsed(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo);\r
+                       static inline void HID_Device_MillisecondElapsed(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo)\r
+                       {\r
+                               if (HIDInterfaceInfo->State.IdleMSRemaining)\r
+                                 HIDInterfaceInfo->State.IdleMSRemaining--;\r
+                       }\r
+                       \r
        /* Disable C linkage for C++ Compilers: */\r
                #if defined(__cplusplus)\r
                        }\r
        /* Disable C linkage for C++ Compilers: */\r
                #if defined(__cplusplus)\r
                        }\r