Fix demos based on the device mode HID class driver, as well as the driver itself. Changed HID device class driver to require the user to give a buffer and size to hold the previously generated report, for comparison purposes, and altered the prototype of the CALLBACK_HID_Device_CreateHIDReport() function so that reports can be sent to the host even if there are no apparent changes (useful for relative movements in mice, etc.).
This commit is contained in:
		
							parent
							
								
									a789619fbe
								
							
						
					
					
						commit
						eb41086947
					
				
					 14 changed files with 135 additions and 74 deletions
				
			
		| 
						 | 
				
			
			@ -36,6 +36,9 @@
 | 
			
		|||
 | 
			
		||||
#include "GenericHID.h"
 | 
			
		||||
 | 
			
		||||
/** Buffer to hold the previously generated HID report, for comparison purposes inside the HID class driver. */
 | 
			
		||||
uint8_t PrevHIDReportBuffer[GENERIC_REPORT_SIZE];
 | 
			
		||||
 | 
			
		||||
/** LUFA HID Class driver interface configuration and state information. This structure is
 | 
			
		||||
 *  passed to all HID Class driver functions, so that multiple instances of the same class
 | 
			
		||||
 *  within a device can be differentiated from one another.
 | 
			
		||||
| 
						 | 
				
			
			@ -48,6 +51,9 @@ USB_ClassInfo_HID_Device_t Generic_HID_Interface =
 | 
			
		|||
 | 
			
		||||
				.ReportINEndpointNumber  = GENERIC_IN_EPNUM,
 | 
			
		||||
				.ReportINEndpointSize    = GENERIC_EPSIZE,
 | 
			
		||||
				
 | 
			
		||||
				.PrevReportINBuffer      = PrevHIDReportBuffer,
 | 
			
		||||
				.PrevReportINBufferSize  = sizeof(PrevHIDReportBuffer),
 | 
			
		||||
			},
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -126,14 +132,17 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
 | 
			
		|||
 *  \param[in] HIDInterfaceInfo  Pointer to the HID class interface configuration structure being referenced
 | 
			
		||||
 *  \param[in,out] ReportID  Report ID requested by the host if non-zero, otherwise callback should set to the generated report ID
 | 
			
		||||
 *  \param[out] ReportData  Pointer to a buffer where the created report should be stored
 | 
			
		||||
 *  \param[out] ReportSize  Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *
 | 
			
		||||
 *  \return Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
 | 
			
		||||
 */
 | 
			
		||||
uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, void* ReportData)
 | 
			
		||||
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                         void* ReportData, uint16_t* ReportSize)
 | 
			
		||||
{
 | 
			
		||||
	// Create generic HID report here
 | 
			
		||||
	
 | 
			
		||||
	return 0;
 | 
			
		||||
	*ReportSize = 0;
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** HID class driver callback function for the processing of HID reports from the host.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,9 +72,9 @@
 | 
			
		|||
		void EVENT_USB_ConfigurationChanged(void);
 | 
			
		||||
		void EVENT_USB_UnhandledControlPacket(void);
 | 
			
		||||
 | 
			
		||||
		uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
		                                             void* ReportData);
 | 
			
		||||
		void     CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                              const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
		bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                                 void* ReportData, uint16_t* ReportSize);
 | 
			
		||||
		void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                          const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
		
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,9 @@
 | 
			
		|||
 | 
			
		||||
#include "Joystick.h"
 | 
			
		||||
 | 
			
		||||
/** Buffer to hold the previously generated HID report, for comparison purposes inside the HID class driver. */
 | 
			
		||||
uint8_t PrevJoystickHIDReportBuffer[sizeof(USB_JoystickReport_Data_t)];
 | 
			
		||||
 | 
			
		||||
/** LUFA HID Class driver interface configuration and state information. This structure is
 | 
			
		||||
 *  passed to all HID Class driver functions, so that multiple instances of the same class
 | 
			
		||||
 *  within a device can be differentiated from one another.
 | 
			
		||||
| 
						 | 
				
			
			@ -48,6 +51,9 @@ USB_ClassInfo_HID_Device_t Joystick_HID_Interface =
 | 
			
		|||
 | 
			
		||||
				.ReportINEndpointNumber  = JOYSTICK_EPNUM,
 | 
			
		||||
				.ReportINEndpointSize    = JOYSTICK_EPSIZE,
 | 
			
		||||
 | 
			
		||||
				.PrevReportINBuffer      = PrevJoystickHIDReportBuffer,
 | 
			
		||||
				.PrevReportINBufferSize  = sizeof(PrevJoystickHIDReportBuffer),
 | 
			
		||||
			},
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -128,10 +134,12 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
 | 
			
		|||
 *  \param[in] HIDInterfaceInfo  Pointer to the HID class interface configuration structure being referenced
 | 
			
		||||
 *  \param[in,out] ReportID  Report ID requested by the host if non-zero, otherwise callback should set to the generated report ID
 | 
			
		||||
 *  \param[out] ReportData  Pointer to a buffer where the created report should be stored
 | 
			
		||||
 *  \param[out] ReportSize  Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *
 | 
			
		||||
 *  \return Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
 | 
			
		||||
 */
 | 
			
		||||
uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, void* ReportData)
 | 
			
		||||
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                         void* ReportData, uint16_t* ReportSize)
 | 
			
		||||
{
 | 
			
		||||
	USB_JoystickReport_Data_t* JoystickReport = (USB_JoystickReport_Data_t*)ReportData;
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +162,8 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H
 | 
			
		|||
	if (ButtonStatus_LCL & BUTTONS_BUTTON1)
 | 
			
		||||
	  JoystickReport->Button |= (1 << 0);
 | 
			
		||||
	  
 | 
			
		||||
	return sizeof(USB_JoystickReport_Data_t);
 | 
			
		||||
	*ReportSize = sizeof(USB_JoystickReport_Data_t);
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** HID class driver callback function for the processing of HID reports from the host.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,9 +83,9 @@
 | 
			
		|||
		void EVENT_USB_ConfigurationChanged(void);
 | 
			
		||||
		void EVENT_USB_UnhandledControlPacket(void);
 | 
			
		||||
 | 
			
		||||
		uint16_t CALLBACK_HID_Device_CreateNextHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
		                                                 void* ReportData);
 | 
			
		||||
		void     CALLBACK_HID_Device_ProcessReceivedHIDReport(USB_ClassInfo_HID_Device_t* HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                                      const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
		bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                                 void* ReportData, uint16_t* ReportSize);
 | 
			
		||||
		void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                          const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,9 @@
 | 
			
		|||
 | 
			
		||||
#include "Keyboard.h"
 | 
			
		||||
 | 
			
		||||
/** Buffer to hold the previously generated Keyboard HID report, for comparison purposes inside the HID class driver. */
 | 
			
		||||
uint8_t PrevKeyboardHIDReportBuffer[sizeof(USB_KeyboardReport_Data_t)];
 | 
			
		||||
 | 
			
		||||
/** LUFA HID Class driver interface configuration and state information. This structure is
 | 
			
		||||
 *  passed to all HID Class driver functions, so that multiple instances of the same class
 | 
			
		||||
 *  within a device can be differentiated from one another.
 | 
			
		||||
| 
						 | 
				
			
			@ -49,6 +52,9 @@ USB_ClassInfo_HID_Device_t Keyboard_HID_Interface =
 | 
			
		|||
 | 
			
		||||
				.ReportINEndpointNumber  = KEYBOARD_EPNUM,
 | 
			
		||||
				.ReportINEndpointSize    = KEYBOARD_EPSIZE,
 | 
			
		||||
 | 
			
		||||
				.PrevReportINBuffer      = PrevKeyboardHIDReportBuffer,
 | 
			
		||||
				.PrevReportINBufferSize  = sizeof(PrevKeyboardHIDReportBuffer),
 | 
			
		||||
			},
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -129,10 +135,12 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
 | 
			
		|||
 *  \param[in] HIDInterfaceInfo  Pointer to the HID class interface configuration structure being referenced
 | 
			
		||||
 *  \param[in,out] ReportID  Report ID requested by the host if non-zero, otherwise callback should set to the generated report ID
 | 
			
		||||
 *  \param[out] ReportData  Pointer to a buffer where the created report should be stored
 | 
			
		||||
 *  \param[out] ReportSize  Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *
 | 
			
		||||
 *  \return Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
 | 
			
		||||
 */
 | 
			
		||||
uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, void* ReportData)
 | 
			
		||||
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                         void* ReportData, uint16_t* ReportSize)
 | 
			
		||||
{
 | 
			
		||||
	USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			@ -154,8 +162,9 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H
 | 
			
		|||
	  
 | 
			
		||||
	if (ButtonStatus_LCL & BUTTONS_BUTTON1)
 | 
			
		||||
	  KeyboardReport->KeyCode[0] = 0x09; // F
 | 
			
		||||
	  
 | 
			
		||||
	return sizeof(USB_KeyboardReport_Data_t);
 | 
			
		||||
	
 | 
			
		||||
	*ReportSize = sizeof(USB_KeyboardReport_Data_t);
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** HID class driver callback function for the processing of HID reports from the host.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -86,9 +86,9 @@
 | 
			
		|||
		void EVENT_USB_ConfigurationChanged(void);
 | 
			
		||||
		void EVENT_USB_UnhandledControlPacket(void);
 | 
			
		||||
 | 
			
		||||
		uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
		                                             void* ReportData);
 | 
			
		||||
		void     CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                              const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
		bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                                 void* ReportData, uint16_t* ReportSize);
 | 
			
		||||
		void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                          const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -37,6 +37,12 @@
 | 
			
		|||
 | 
			
		||||
#include "KeyboardMouse.h"
 | 
			
		||||
 | 
			
		||||
/** Buffer to hold the previously generated Keyboard HID report, for comparison purposes inside the HID class driver. */
 | 
			
		||||
uint8_t PrevKeyboardHIDReportBuffer[sizeof(USB_KeyboardReport_Data_t)];
 | 
			
		||||
 | 
			
		||||
/** Buffer to hold the previously generated Mouse HID report, for comparison purposes inside the HID class driver. */
 | 
			
		||||
uint8_t PrevMouseHIDReportBuffer[sizeof(USB_MouseReport_Data_t)];
 | 
			
		||||
 | 
			
		||||
/** LUFA HID Class driver interface configuration and state information. This structure is
 | 
			
		||||
 *  passed to all HID Class driver functions, so that multiple instances of the same class
 | 
			
		||||
 *  within a device can be differentiated from one another. This is for the keyboard HID
 | 
			
		||||
| 
						 | 
				
			
			@ -50,6 +56,9 @@ USB_ClassInfo_HID_Device_t Keyboard_HID_Interface =
 | 
			
		|||
 | 
			
		||||
				.ReportINEndpointNumber  = KEYBOARD_IN_EPNUM,
 | 
			
		||||
				.ReportINEndpointSize    = HID_EPSIZE,
 | 
			
		||||
 | 
			
		||||
				.PrevReportINBuffer      = PrevKeyboardHIDReportBuffer,
 | 
			
		||||
				.PrevReportINBufferSize  = sizeof(PrevKeyboardHIDReportBuffer),
 | 
			
		||||
			},
 | 
			
		||||
	};
 | 
			
		||||
	
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +75,9 @@ USB_ClassInfo_HID_Device_t Mouse_HID_Interface =
 | 
			
		|||
 | 
			
		||||
				.ReportINEndpointNumber  = MOUSE_IN_EPNUM,
 | 
			
		||||
				.ReportINEndpointSize    = HID_EPSIZE,
 | 
			
		||||
 | 
			
		||||
				.PrevReportINBuffer      = PrevMouseHIDReportBuffer,
 | 
			
		||||
				.PrevReportINBufferSize  = sizeof(PrevMouseHIDReportBuffer),
 | 
			
		||||
			},		
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -151,10 +163,12 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
 | 
			
		|||
 *  \param[in] HIDInterfaceInfo  Pointer to the HID class interface configuration structure being referenced
 | 
			
		||||
 *  \param[in,out] ReportID  Report ID requested by the host if non-zero, otherwise callback should set to the generated report ID
 | 
			
		||||
 *  \param[out] ReportData  Pointer to a buffer where the created report should be stored
 | 
			
		||||
 *  \param[out] ReportSize  Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *
 | 
			
		||||
 *  \return Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
 | 
			
		||||
 */
 | 
			
		||||
uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, void* ReportData)
 | 
			
		||||
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                         void* ReportData, uint16_t* ReportSize)
 | 
			
		||||
{
 | 
			
		||||
	uint8_t JoyStatus_LCL    = Joystick_GetStatus();
 | 
			
		||||
	uint8_t ButtonStatus_LCL = Buttons_GetStatus();
 | 
			
		||||
| 
						 | 
				
			
			@ -179,8 +193,9 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H
 | 
			
		|||
 | 
			
		||||
		if (JoyStatus_LCL & JOY_PRESS)
 | 
			
		||||
		  KeyboardReport->KeyCode[0] = 0x08; // E
 | 
			
		||||
		  
 | 
			
		||||
		return sizeof(USB_KeyboardReport_Data_t);
 | 
			
		||||
		
 | 
			
		||||
		*ReportSize = sizeof(USB_KeyboardReport_Data_t);
 | 
			
		||||
		return false;
 | 
			
		||||
	}
 | 
			
		||||
	else
 | 
			
		||||
	{
 | 
			
		||||
| 
						 | 
				
			
			@ -203,7 +218,8 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H
 | 
			
		|||
		if (JoyStatus_LCL & JOY_PRESS)
 | 
			
		||||
		  MouseReport->Button  = (1 << 0);
 | 
			
		||||
		
 | 
			
		||||
		return sizeof(USB_MouseReport_Data_t);		
 | 
			
		||||
		*ReportSize = sizeof(USB_MouseReport_Data_t);
 | 
			
		||||
		return true;		
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -90,9 +90,9 @@
 | 
			
		|||
		void EVENT_USB_ConfigurationChanged(void);
 | 
			
		||||
		void EVENT_USB_UnhandledControlPacket(void);
 | 
			
		||||
 | 
			
		||||
		uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
		                                             void* ReportData);
 | 
			
		||||
		void     CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                              const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
		bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                                 void* ReportData, uint16_t* ReportSize);
 | 
			
		||||
		void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                          const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
		
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,6 +36,9 @@
 | 
			
		|||
 | 
			
		||||
#include "Mouse.h"
 | 
			
		||||
 | 
			
		||||
/** Buffer to hold the previously generated Mouse HID report, for comparison purposes inside the HID class driver. */
 | 
			
		||||
uint8_t PrevMouseHIDReportBuffer[sizeof(USB_MouseReport_Data_t)];
 | 
			
		||||
 | 
			
		||||
/** LUFA HID Class driver interface configuration and state information. This structure is
 | 
			
		||||
 *  passed to all HID Class driver functions, so that multiple instances of the same class
 | 
			
		||||
 *  within a device can be differentiated from one another.
 | 
			
		||||
| 
						 | 
				
			
			@ -48,6 +51,9 @@ USB_ClassInfo_HID_Device_t Mouse_HID_Interface =
 | 
			
		|||
 | 
			
		||||
				.ReportINEndpointNumber  = MOUSE_EPNUM,
 | 
			
		||||
				.ReportINEndpointSize    = MOUSE_EPSIZE,
 | 
			
		||||
 | 
			
		||||
				.PrevReportINBuffer      = PrevMouseHIDReportBuffer,
 | 
			
		||||
				.PrevReportINBufferSize  = sizeof(PrevMouseHIDReportBuffer),
 | 
			
		||||
			},
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -128,10 +134,12 @@ ISR(TIMER0_COMPA_vect, ISR_BLOCK)
 | 
			
		|||
 *  \param[in] HIDInterfaceInfo  Pointer to the HID class interface configuration structure being referenced
 | 
			
		||||
 *  \param[in,out] ReportID  Report ID requested by the host if non-zero, otherwise callback should set to the generated report ID
 | 
			
		||||
 *  \param[out] ReportData  Pointer to a buffer where the created report should be stored
 | 
			
		||||
 *  \param[out] ReportSize  Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *
 | 
			
		||||
 *  \return Number of bytes written in the report (or zero if no report is to be sent
 | 
			
		||||
 *  \return Boolean true to force the sending of the report, false to let the library determine if it needs to be sent
 | 
			
		||||
 */
 | 
			
		||||
uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID, void* ReportData)
 | 
			
		||||
bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                         void* ReportData, uint16_t* ReportSize)
 | 
			
		||||
{
 | 
			
		||||
	USB_MouseReport_Data_t* MouseReport = (USB_MouseReport_Data_t*)ReportData;
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			@ -154,7 +162,8 @@ uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const H
 | 
			
		|||
	if (ButtonStatus_LCL & BUTTONS_BUTTON1)
 | 
			
		||||
	  MouseReport->Button |= (1 << 1);
 | 
			
		||||
	
 | 
			
		||||
	return sizeof(USB_MouseReport_Data_t);
 | 
			
		||||
	*ReportSize = sizeof(USB_MouseReport_Data_t);
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** HID class driver callback function for the processing of HID reports from the host.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -85,9 +85,9 @@
 | 
			
		|||
		void EVENT_USB_ConfigurationChanged(void);
 | 
			
		||||
		void EVENT_USB_UnhandledControlPacket(void);
 | 
			
		||||
 | 
			
		||||
		uint16_t CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
		                                             void* ReportData);
 | 
			
		||||
		void     CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                              const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
		bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                                 void* ReportData, uint16_t* ReportSize);
 | 
			
		||||
		void CALLBACK_HID_Device_ProcessHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, const uint8_t ReportID, 
 | 
			
		||||
		                                          const void* ReportData, const uint16_t ReportSize);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue