Added new NO_CLASS_DRIVER_AUTOFLUSH compile time option to disable automatic flushing of interfaces when the USB management tasks for each driver is called.
The MIDI class drivers now automatically flushes the MIDI interface when the MIDI class driver's USBTask() function is called.
This commit is contained in:
		
							parent
							
								
									08de757811
								
							
						
					
					
						commit
						710f31c540
					
				
					 10 changed files with 53 additions and 24 deletions
				
			
		| 
						 | 
				
			
			@ -226,7 +226,9 @@ void CDC_Host_USBTask(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo)
 | 
			
		|||
 | 
			
		||||
	Pipe_Freeze();
 | 
			
		||||
 | 
			
		||||
	#if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
 | 
			
		||||
	CDC_Host_Flush(CDCInterfaceInfo);
 | 
			
		||||
	#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Host_SetLineEncoding(USB_ClassInfo_CDC_Host_t* const CDCInterfaceInfo)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,6 +141,16 @@ static uint8_t DCOMP_MIDI_Host_NextMIDIStreamingDataEndpoint(void* const Current
 | 
			
		|||
	return DESCRIPTOR_SEARCH_NotFound;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MIDIInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	#if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
 | 
			
		||||
	MIDI_Host_Flush(MIDIInterfaceInfo);
 | 
			
		||||
	#endif	
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MIDI_Host_Flush(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(MIDIInterfaceInfo->State.IsActive))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -137,6 +137,13 @@
 | 
			
		|||
			                                 uint16_t ConfigDescriptorSize,
 | 
			
		||||
			                                 void* DeviceConfigDescriptor) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(3);
 | 
			
		||||
 | 
			
		||||
			/** General management task for a given MIDI host class interface, required for the correct operation of the interface. This should
 | 
			
		||||
			 *  be called frequently in the main program loop, before the master USB management task \ref USB_USBTask().
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \param[in,out] MIDIInterfaceInfo  Pointer to a structure containing an MIDI Class host configuration and state.
 | 
			
		||||
			 */
 | 
			
		||||
			void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Sends a MIDI event packet to the device. If no device is connected, the event packet is discarded.
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \pre This function must only be called when the Host state machine is in the \ref HOST_STATE_Configured state or the
 | 
			
		||||
| 
						 | 
				
			
			@ -174,18 +181,6 @@
 | 
			
		|||
			bool MIDI_Host_ReceiveEventPacket(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo,
 | 
			
		||||
			                                  MIDI_EventPacket_t* const Event) ATTR_NON_NULL_PTR_ARG(1) ATTR_NON_NULL_PTR_ARG(2);
 | 
			
		||||
 | 
			
		||||
		/* Inline Functions: */
 | 
			
		||||
			/** General management task for a given MIDI host class interface, required for the correct operation of the interface. This should
 | 
			
		||||
			 *  be called frequently in the main program loop, before the master USB management task \ref USB_USBTask().
 | 
			
		||||
			 *
 | 
			
		||||
			 *  \param[in,out] MIDIInterfaceInfo  Pointer to a structure containing an MIDI Class host configuration and state.
 | 
			
		||||
			 */
 | 
			
		||||
			static inline void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			static inline void MIDI_Host_USBTask(USB_ClassInfo_MIDI_Host_t* const MIDIInterfaceInfo)
 | 
			
		||||
			{
 | 
			
		||||
				(void)MIDIInterfaceInfo;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
	/* Private Interface - For use in library only: */
 | 
			
		||||
	#if !defined(__DOXYGEN__)
 | 
			
		||||
		/* Function Prototypes: */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -142,7 +142,12 @@ static uint8_t DCOMP_PRNT_Host_NextPRNTInterfaceEndpoint(void* CurrentDescriptor
 | 
			
		|||
 | 
			
		||||
void PRNT_Host_USBTask(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if ((USB_HostState != HOST_STATE_Configured) || !(PRNTInterfaceInfo->State.IsActive))
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	#if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
 | 
			
		||||
	PRNT_Host_Flush(PRNTInterfaceInfo);
 | 
			
		||||
	#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t PRNT_Host_SetBidirectionalMode(USB_ClassInfo_PRNT_Host_t* const PRNTInterfaceInfo)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue