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
				
			
		| 
						 | 
				
			
			@ -148,7 +148,9 @@ void CDC_Device_USBTask(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo)
 | 
			
		|||
	if ((USB_DeviceState != DEVICE_STATE_Configured) || !(CDCInterfaceInfo->State.LineEncoding.BaudRateBPS))
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	#if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
 | 
			
		||||
	CDC_Device_Flush(CDCInterfaceInfo);
 | 
			
		||||
	#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t CDC_Device_SendString(USB_ClassInfo_CDC_Device_t* const CDCInterfaceInfo,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -76,6 +76,16 @@ bool MIDI_Device_ConfigureEndpoints(USB_ClassInfo_MIDI_Device_t* const MIDIInter
 | 
			
		|||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MIDI_Device_USBTask(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo)
 | 
			
		||||
{
 | 
			
		||||
	if (USB_DeviceState != DEVICE_STATE_Configured)
 | 
			
		||||
	  return;
 | 
			
		||||
 | 
			
		||||
	#if !defined(NO_CLASS_DRIVER_AUTOFLUSH)
 | 
			
		||||
	MIDI_Device_Flush(MIDIInterfaceInfo);
 | 
			
		||||
	#endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
uint8_t MIDI_Device_SendEventPacket(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo,
 | 
			
		||||
                                    const MIDI_EventPacket_t* const Event)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -120,6 +120,13 @@
 | 
			
		|||
			 */
 | 
			
		||||
			bool MIDI_Device_ConfigureEndpoints(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** General management task for a given MIDI 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 a MIDI Class configuration and state.
 | 
			
		||||
			 */
 | 
			
		||||
			void MIDI_Device_USBTask(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
 | 
			
		||||
			/** Sends a MIDI event packet to the host. If no host is connected, the event packet is discarded. Events are queued into the
 | 
			
		||||
			 *  endpoint bank until either the endpoint bank is full, or \ref MIDI_Device_Flush() is called. This allows for multiple
 | 
			
		||||
			 *  MIDI events to be packed into a single endpoint packet, increasing data throughput.
 | 
			
		||||
| 
						 | 
				
			
			@ -160,17 +167,6 @@
 | 
			
		|||
			                                    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 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 a MIDI Class configuration and state.
 | 
			
		||||
			 */
 | 
			
		||||
			static inline void MIDI_Device_USBTask(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo) ATTR_NON_NULL_PTR_ARG(1);
 | 
			
		||||
			static inline void MIDI_Device_USBTask(USB_ClassInfo_MIDI_Device_t* const MIDIInterfaceInfo)
 | 
			
		||||
			{
 | 
			
		||||
				(void)MIDIInterfaceInfo;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			/** Processes incoming control requests from the host, that are directed to the given MIDI class interface. This should be
 | 
			
		||||
			 *  linked to the library \ref EVENT_USB_Device_UnhandledControlRequest() event.
 | 
			
		||||
			 *
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -126,7 +126,7 @@ void MS_Device_USBTask(USB_ClassInfo_MS_Device_t* const MSInterfaceInfo)
 | 
			
		|||
			  Endpoint_SelectEndpoint(MSInterfaceInfo->Config.DataINEndpointNumber);
 | 
			
		||||
 | 
			
		||||
			MSInterfaceInfo->State.CommandStatus.Status = CALLBACK_MS_Device_SCSICommandReceived(MSInterfaceInfo) ?
 | 
			
		||||
			                                                                 MS_SCSI_COMMAND_Pass : MS_SCSI_COMMAND_Fail;
 | 
			
		||||
			                                               MS_SCSI_COMMAND_Pass : MS_SCSI_COMMAND_Fail;
 | 
			
		||||
			MSInterfaceInfo->State.CommandStatus.Signature           = MS_CSW_SIGNATURE;
 | 
			
		||||
			MSInterfaceInfo->State.CommandStatus.Tag                 = MSInterfaceInfo->State.CommandBlock.Tag;
 | 
			
		||||
			MSInterfaceInfo->State.CommandStatus.DataTransferResidue = MSInterfaceInfo->State.CommandBlock.DataTransferLength;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue