Added new ReportType parameter to the HID Device Class driver CALLBACK_HID_Device_Cre...
authorDean Camera <dean@fourwalledcubicle.com>
Mon, 23 Nov 2009 13:22:33 +0000 (13:22 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Mon, 23 Nov 2009 13:22:33 +0000 (13:22 +0000)
23 files changed:
Demos/Device/ClassDriver/CDCMouse/CDCMouse.c
Demos/Device/ClassDriver/CDCMouse/CDCMouse.h
Demos/Device/ClassDriver/GenericHID/GenericHID.c
Demos/Device/ClassDriver/GenericHID/GenericHID.h
Demos/Device/ClassDriver/Joystick/Joystick.c
Demos/Device/ClassDriver/Joystick/Joystick.h
Demos/Device/ClassDriver/Keyboard/Keyboard.c
Demos/Device/ClassDriver/Keyboard/Keyboard.h
Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.c
Demos/Device/ClassDriver/KeyboardMouse/KeyboardMouse.h
Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.c
Demos/Device/ClassDriver/MassStorageKeyboard/MassStorageKeyboard.h
Demos/Device/ClassDriver/Mouse/Mouse.c
Demos/Device/ClassDriver/Mouse/Mouse.h
Demos/DualRole/ClassDriver/MouseHostDevice/DeviceFunctions.c
Demos/DualRole/ClassDriver/MouseHostDevice/DeviceFunctions.h
Demos/DualRole/ClassDriver/MouseHostDevice/HostFunctions.c
LUFA/Drivers/USB/Class/Device/HID.c
LUFA/Drivers/USB/Class/Device/HID.h
LUFA/ManPages/ChangeLog.txt
LUFA/ManPages/MigrationInformation.txt
Projects/Magstripe/Magstripe.c
Projects/Magstripe/Magstripe.h

index e21e0bc..3c7fe5b 100644 (file)
@@ -198,7 +198,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;\r
                \r
 {\r
        USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;\r
                \r
index 002fe3b..bee1b04 100644 (file)
@@ -76,7 +76,7 @@
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 #endif\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 #endif\r
index 5e26580..7ff886e 100644 (file)
@@ -142,7 +142,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        if (HIDReportEcho.ReportID)\r
          *ReportID = HIDReportEcho.ReportID;\r
 {\r
        if (HIDReportEcho.ReportID)\r
          *ReportID = HIDReportEcho.ReportID;\r
index 004daf5..4a13c42 100644 (file)
@@ -72,7 +72,7 @@
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
                \r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
                \r
index 00bcb6f..987fe10 100644 (file)
@@ -136,7 +136,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        USB_JoystickReport_Data_t* JoystickReport = (USB_JoystickReport_Data_t*)ReportData;\r
        \r
 {\r
        USB_JoystickReport_Data_t* JoystickReport = (USB_JoystickReport_Data_t*)ReportData;\r
        \r
index d25ccc1..c87c1c6 100644 (file)
@@ -85,7 +85,7 @@
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
index 002d24a..5ba15cd 100644 (file)
@@ -137,7 +137,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
        \r
 {\r
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
        \r
index c6310cf..098501c 100644 (file)
@@ -77,7 +77,7 @@
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
index caa33f9..8db7283 100644 (file)
@@ -165,7 +165,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        uint8_t JoyStatus_LCL    = Joystick_GetStatus();\r
        uint8_t ButtonStatus_LCL = Buttons_GetStatus();\r
 {\r
        uint8_t JoyStatus_LCL    = Joystick_GetStatus();\r
        uint8_t ButtonStatus_LCL = Buttons_GetStatus();\r
index a9368a4..8c73521 100644 (file)
@@ -71,7 +71,7 @@
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
                \r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
                \r
index 4e68f5c..3d734e0 100644 (file)
@@ -187,7 +187,7 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
        \r
 {\r
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
        \r
index 3ca03f1..c82fb78 100644 (file)
@@ -91,7 +91,7 @@
                bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                bool CALLBACK_MS_Device_SCSICommandReceived(USB_ClassInfo_MS_Device_t* MSInterfaceInfo);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
index c29cc15..36ef71b 100644 (file)
@@ -136,7 +136,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;\r
                \r
 {\r
        USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;\r
                \r
index 635736d..6ab919f 100644 (file)
@@ -76,7 +76,7 @@
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
 \r
index 47a1913..532b1a1 100644 (file)
@@ -104,7 +104,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;\r
                \r
 {\r
        USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;\r
                \r
index 5fc2d84..37026df 100644 (file)
                extern USB_ClassInfo_HID_Device_t Mouse_HID_Device_Interface;\r
                \r
        /* Function Prototypes: */\r
                extern USB_ClassInfo_HID_Device_t Mouse_HID_Device_Interface;\r
                \r
        /* Function Prototypes: */\r
+               bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
+               void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
+                                                         const void* ReportData, const uint16_t ReportSize);\r
+\r
                void EVENT_USB_Device_Connect(void);\r
                void EVENT_USB_Device_Disconnect(void);\r
                void EVENT_USB_Device_ConfigurationChanged(void);\r
                void EVENT_USB_Device_Connect(void);\r
                void EVENT_USB_Device_Disconnect(void);\r
                void EVENT_USB_Device_ConfigurationChanged(void);\r
index a503f1c..eb0252a 100644 (file)
@@ -50,7 +50,7 @@ USB_ClassInfo_HID_Host_t Mouse_HID_Host_Interface =
                                .HIDInterfaceProtocol   = HID_BOOT_MOUSE_PROTOCOL,\r
                        },\r
        };\r
                                .HIDInterfaceProtocol   = HID_BOOT_MOUSE_PROTOCOL,\r
                        },\r
        };\r
-       \r
+\r
 \r
 /** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and\r
  *  starts the library USB task to begin the enumeration and USB management process.\r
 \r
 /** Event handler for the USB_DeviceAttached event. This indicates that a device has been attached to the host, and\r
  *  starts the library USB task to begin the enumeration and USB management process.\r
index a9f1c9c..94cbf5d 100644 (file)
@@ -50,10 +50,11 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
 \r
                                uint16_t ReportINSize = 0;\r
                                uint8_t  ReportID     = (USB_ControlRequest.wValue & 0xFF);\r
 \r
                                uint16_t ReportINSize = 0;\r
                                uint8_t  ReportID     = (USB_ControlRequest.wValue & 0xFF);\r
+                               uint8_t  ReportType   = (USB_ControlRequest.wValue >> 8) - 1;\r
 \r
                                memset(HIDInterfaceInfo->Config.PrevReportINBuffer, 0, HIDInterfaceInfo->Config.PrevReportINBufferSize);\r
                                \r
 \r
                                memset(HIDInterfaceInfo->Config.PrevReportINBuffer, 0, HIDInterfaceInfo->Config.PrevReportINBufferSize);\r
                                \r
-                               CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID,\r
+                               CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportType,\r
                                                                    HIDInterfaceInfo->Config.PrevReportINBuffer, &ReportINSize);\r
 \r
                                Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);\r
                                                                    HIDInterfaceInfo->Config.PrevReportINBuffer, &ReportINSize);\r
 \r
                                Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);\r
@@ -158,7 +159,8 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
 \r
                memset(ReportINData, 0, sizeof(ReportINData));\r
 \r
 \r
                memset(ReportINData, 0, sizeof(ReportINData));\r
 \r
-               bool ForceSend         = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportINData, &ReportINSize);\r
+               bool ForceSend         = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, REPORT_ITEM_TYPE_In,\r
+                                                                            ReportINData, &ReportINSize);\r
                bool StatesChanged     = false;\r
                bool IdlePeriodElapsed = (HIDInterfaceInfo->State.IdleCount && !(HIDInterfaceInfo->State.IdleMSRemaining));\r
                \r
                bool StatesChanged     = false;\r
                bool IdlePeriodElapsed = (HIDInterfaceInfo->State.IdleCount && !(HIDInterfaceInfo->State.IdleMSRemaining));\r
                \r
index 25348f6..d51327c 100644 (file)
                         *  \param[in,out] ReportID  If preset to a non-zero value, this is the report ID being requested by the host. If zero, this should\r
                         *                 be set to the report ID of the generated HID input report (if any). If multiple reports are not sent via the\r
                         *                 given HID interface, this parameter should be ignored.\r
                         *  \param[in,out] ReportID  If preset to a non-zero value, this is the report ID being requested by the host. If zero, this should\r
                         *                 be set to the report ID of the generated HID input report (if any). If multiple reports are not sent via the\r
                         *                 given HID interface, this parameter should be ignored.\r
-                        *  \param[out] ReportData  Pointer to a buffer where the generated HID report should be stored.\r
+                        *  \param[in] ReportType  Type of HID report to generate, either \ref REPORT_ITEM_TYPE_In or \ref REPORT_ITEM_TYPE_Feature\r
+                        *  \param[out] ReportData  Pointer to a buffer where the generated HID report should be stored\r
                         *  \param[out] ReportSize  Number of bytes in the generated input report, or zero if no report is to be sent\r
                         *\r
                         *  \return Boolean true to force the sending of the report even if it is identical to the previous report and still within\r
                         *          the idle period (useful for devices which report relative movement), false otherwise\r
                         */\r
                        bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                         *  \param[out] ReportSize  Number of bytes in the generated input report, or zero if no report is to be sent\r
                         *\r
                         *  \return Boolean true to force the sending of the report even if it is identical to the previous report and still within\r
                         *          the idle period (useful for devices which report relative movement), false otherwise\r
                         */\r
                        bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                     void* ReportData, uint16_t* ReportSize) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2)\r
-                                                                ATTR_NON_NULL_PTR_ARG(3) ATTR_NON_NULL_PTR_ARG(4);\r
+                                                     const uint8_t ReportType, void* ReportData, uint16_t* ReportSize) ATTR_NON_NULL_PTR_ARG(1)\r
+                                                                ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(4) ATTR_NON_NULL_PTR_ARG(5);\r
                        \r
                        /** HID class driver callback for the user processing of a received HID OUT report. This callback may fire in response to\r
                         *  either HID class control requests from the host, or by the normal HID endpoint polling procedure. Inside this callback\r
                        \r
                        /** HID class driver callback for the user processing of a received HID OUT report. This callback may fire in response to\r
                         *  either HID class control requests from the host, or by the normal HID endpoint polling procedure. Inside this callback\r
index a69eb9a..0aa3daf 100644 (file)
@@ -18,6 +18,8 @@
   *  - The SCSI_Request_Sense_Response_t and SCSI_Inquiry_Response_t type defines are now part of the Mass Storage Class\r
   *    driver common defines, rather than being defined in the Host mode Class driver section only\r
   *  - The USB_MODE_HOST token is now defined even when host mode is not available\r
   *  - The SCSI_Request_Sense_Response_t and SCSI_Inquiry_Response_t type defines are now part of the Mass Storage Class\r
   *    driver common defines, rather than being defined in the Host mode Class driver section only\r
   *  - The USB_MODE_HOST token is now defined even when host mode is not available\r
+  *  - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to\r
+  *    indicate the report type to generate\r
   *\r
   *  <b>Fixed:</b>\r
   *  - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver\r
   *\r
   *  <b>Fixed:</b>\r
   *  - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver\r
index 89bba96..aad002d 100644 (file)
@@ -12,7 +12,9 @@
  *\r
  * \section Sec_MigrationXXXXXX Migrating from 091122 to XXXXXX\r
  *  \r
  *\r
  * \section Sec_MigrationXXXXXX Migrating from 091122 to XXXXXX\r
  *  \r
- *  <b>There is no migration information for this version.</b>\r
+ *  <b>Device Mode</b>\r
+ *    - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to\r
+ *      indicate the report type to generate. Existing applications may simply add and ignore this additional parameter.\r
  *\r
  * \section Sec_Migration091122 Migrating from 090924 to 091122\r
  *  \r
  *\r
  * \section Sec_Migration091122 Migrating from 090924 to 091122\r
  *  \r
index 69f17c7..b30590f 100644 (file)
@@ -169,7 +169,7 @@ void EVENT_USB_Device_StartOfFrame(void)
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
  *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent\r
  */\r
 bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                         void* ReportData, uint16_t* ReportSize)\r
+                                         const uint8_t ReportType, void* ReportData, uint16_t* ReportSize)\r
 {\r
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
 \r
 {\r
        USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
 \r
index 36e4d70..cd1fd9c 100644 (file)
@@ -75,7 +75,7 @@
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
                void EVENT_USB_Device_StartOfFrame(void);\r
 \r
                bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,\r
-                                                 void* ReportData, uint16_t* ReportSize);\r
+                                                 const uint8_t ReportType, void* ReportData, uint16_t* ReportSize);\r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
                                                                                                                  \r
                void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, \r
                                                          const void* ReportData, const uint16_t ReportSize);\r
                                                                                                                  \r