Added new ReportType parameter to the HID Device Class driver CALLBACK_HID_Device_CreateHIDReport() callback to indicate the report type to generate.
This commit is contained in:
		
							parent
							
								
									c438d01f87
								
							
						
					
					
						commit
						8b009bc113
					
				
					 23 changed files with 36 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -50,10 +50,11 @@ void HID_Device_ProcessControlRequest(USB_ClassInfo_HID_Device_t* const HIDInter
 | 
			
		|||
 | 
			
		||||
				uint16_t ReportINSize = 0;
 | 
			
		||||
				uint8_t  ReportID     = (USB_ControlRequest.wValue & 0xFF);
 | 
			
		||||
				uint8_t  ReportType   = (USB_ControlRequest.wValue >> 8) - 1;
 | 
			
		||||
 | 
			
		||||
				memset(HIDInterfaceInfo->Config.PrevReportINBuffer, 0, HIDInterfaceInfo->Config.PrevReportINBufferSize);
 | 
			
		||||
				
 | 
			
		||||
				CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID,
 | 
			
		||||
				CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportType,
 | 
			
		||||
				                                    HIDInterfaceInfo->Config.PrevReportINBuffer, &ReportINSize);
 | 
			
		||||
 | 
			
		||||
				Endpoint_SelectEndpoint(ENDPOINT_CONTROLEP);
 | 
			
		||||
| 
						 | 
				
			
			@ -158,7 +159,8 @@ void HID_Device_USBTask(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo)
 | 
			
		|||
 | 
			
		||||
		memset(ReportINData, 0, sizeof(ReportINData));
 | 
			
		||||
 | 
			
		||||
		bool ForceSend         = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, ReportINData, &ReportINSize);
 | 
			
		||||
		bool ForceSend         = CALLBACK_HID_Device_CreateHIDReport(HIDInterfaceInfo, &ReportID, REPORT_ITEM_TYPE_In,
 | 
			
		||||
		                                                             ReportINData, &ReportINSize);
 | 
			
		||||
		bool StatesChanged     = false;
 | 
			
		||||
		bool IdlePeriodElapsed = (HIDInterfaceInfo->State.IdleCount && !(HIDInterfaceInfo->State.IdleMSRemaining));
 | 
			
		||||
		
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -147,15 +147,16 @@
 | 
			
		|||
			 *  \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
 | 
			
		||||
			 *                 be set to the report ID of the generated HID input report (if any). If multiple reports are not sent via the
 | 
			
		||||
			 *                 given HID interface, this parameter should be ignored.
 | 
			
		||||
			 *  \param[out] ReportData  Pointer to a buffer where the generated HID report should be stored.
 | 
			
		||||
			 *  \param[in] ReportType  Type of HID report to generate, either \ref REPORT_ITEM_TYPE_In or \ref REPORT_ITEM_TYPE_Feature
 | 
			
		||||
			 *  \param[out] ReportData  Pointer to a buffer where the generated HID report should be stored
 | 
			
		||||
			 *  \param[out] ReportSize  Number of bytes in the generated input report, or zero if no report is to be sent
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \return Boolean true to force the sending of the report even if it is identical to the previous report and still within
 | 
			
		||||
			 *          the idle period (useful for devices which report relative movement), false otherwise
 | 
			
		||||
			 */
 | 
			
		||||
			bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDInterfaceInfo, uint8_t* const ReportID,
 | 
			
		||||
                                                     void* ReportData, uint16_t* ReportSize) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2)
 | 
			
		||||
			                                         ATTR_NON_NULL_PTR_ARG(3) ATTR_NON_NULL_PTR_ARG(4);
 | 
			
		||||
                                                     const uint8_t ReportType, void* ReportData, uint16_t* ReportSize) ATTR_NON_NULL_PTR_ARG(1)
 | 
			
		||||
			                                         ATTR_NON_NULL_PTR_ARG(2) ATTR_NON_NULL_PTR_ARG(4) ATTR_NON_NULL_PTR_ARG(5);
 | 
			
		||||
			
 | 
			
		||||
			/** HID class driver callback for the user processing of a received HID OUT report. This callback may fire in response to
 | 
			
		||||
			 *  either HID class control requests from the host, or by the normal HID endpoint polling procedure. Inside this callback
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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
 | 
			
		||||
  *    driver common defines, rather than being defined in the Host mode Class driver section only
 | 
			
		||||
  *  - The USB_MODE_HOST token is now defined even when host mode is not available
 | 
			
		||||
  *  - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to
 | 
			
		||||
  *    indicate the report type to generate
 | 
			
		||||
  *
 | 
			
		||||
  *  <b>Fixed:</b>
 | 
			
		||||
  *  - Added missing CDC_Host_CreateBlockingStream() function code to the CDC Host Class driver
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,7 +12,9 @@
 | 
			
		|||
 *
 | 
			
		||||
 * \section Sec_MigrationXXXXXX Migrating from 091122 to XXXXXX
 | 
			
		||||
 *  
 | 
			
		||||
 *  <b>There is no migration information for this version.</b>
 | 
			
		||||
 *  <b>Device Mode</b>
 | 
			
		||||
 *    - The CALLBACK_HID_Device_CreateHIDReport() HID Device Class driver callback now has a new ReportType parameter to
 | 
			
		||||
 *      indicate the report type to generate. Existing applications may simply add and ignore this additional parameter.
 | 
			
		||||
 *
 | 
			
		||||
 * \section Sec_Migration091122 Migrating from 090924 to 091122
 | 
			
		||||
 *  
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue