Removed new Start of Frame event from the library; performance suffered far too much and it was only useful in one of the standard classes (HID). Altered HID demos to use the previous method of tracking millisecond periods via a hardware timer rather than the SOF events.
Fixed MIDI class driver blocking on unread events to the host.
This commit is contained in:
parent
74b7c07e96
commit
7c5444b89a
24 changed files with 78 additions and 109 deletions
|
@ -45,7 +45,7 @@ void USB_HID_ProcessControlPacket(USB_ClassInfo_HID_t* HIDInterfaceInfo)
|
|||
{
|
||||
Endpoint_ClearSETUP();
|
||||
|
||||
uint8_t ReportINData[HIDInterfaceInfo->ReportBufferSize];
|
||||
uint8_t ReportINData[HIDInterfaceInfo->ReportINBufferSize];
|
||||
uint16_t ReportINSize;
|
||||
|
||||
memset(ReportINData, 0, sizeof(ReportINData));
|
||||
|
@ -146,12 +146,6 @@ bool USB_HID_ConfigureEndpoints(USB_ClassInfo_HID_t* HIDInterfaceInfo)
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
void USB_HID_RegisterStartOfFrame(USB_ClassInfo_HID_t* HIDInterfaceInfo)
|
||||
{
|
||||
if (HIDInterfaceInfo->IdleMSRemaining)
|
||||
HIDInterfaceInfo->IdleMSRemaining--;
|
||||
}
|
||||
|
||||
void USB_HID_USBTask(USB_ClassInfo_HID_t* HIDInterfaceInfo)
|
||||
{
|
||||
|
@ -166,7 +160,7 @@ void USB_HID_USBTask(USB_ClassInfo_HID_t* HIDInterfaceInfo)
|
|||
if (HIDInterfaceInfo->IdleCount && !(HIDInterfaceInfo->IdleMSRemaining))
|
||||
HIDInterfaceInfo->IdleMSRemaining = HIDInterfaceInfo->IdleCount;
|
||||
|
||||
uint8_t ReportINData[HIDInterfaceInfo->ReportBufferSize];
|
||||
uint8_t ReportINData[HIDInterfaceInfo->ReportINBufferSize];
|
||||
uint16_t ReportINSize;
|
||||
|
||||
memset(ReportINData, 0, sizeof(ReportINData));
|
||||
|
@ -174,13 +168,7 @@ void USB_HID_USBTask(USB_ClassInfo_HID_t* HIDInterfaceInfo)
|
|||
ReportINSize = CALLBACK_USB_HID_CreateNextHIDReport(HIDInterfaceInfo, ReportINData);
|
||||
|
||||
if (ReportINSize)
|
||||
{
|
||||
Endpoint_Write_Stream_LE(ReportINData, ReportINSize
|
||||
#if !defined(NO_STREAM_CALLBACKS)
|
||||
, NO_STREAM_CALLBACK
|
||||
#endif
|
||||
);
|
||||
}
|
||||
Endpoint_Write_Stream_LE(ReportINData, ReportINSize, NO_STREAM_CALLBACK);
|
||||
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
|
@ -195,13 +183,7 @@ void USB_HID_USBTask(USB_ClassInfo_HID_t* HIDInterfaceInfo)
|
|||
uint8_t ReportOUTData[ReportOUTSize];
|
||||
|
||||
if (ReportOUTSize)
|
||||
{
|
||||
Endpoint_Read_Stream_LE(ReportOUTData, ReportOUTSize
|
||||
#if !defined(NO_STREAM_CALLBACKS)
|
||||
, NO_STREAM_CALLBACK
|
||||
#endif
|
||||
);
|
||||
}
|
||||
Endpoint_Read_Stream_LE(ReportOUTData, ReportOUTSize, NO_STREAM_CALLBACK);
|
||||
|
||||
CALLBACK_USB_HID_ProcessReceivedHIDReport(HIDInterfaceInfo, ReportOUTData, ReportOUTSize);
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@
|
|||
uint8_t ReportOUTEndpointNumber; /**< Endpoint number of the HID interface's OUT report endpoint, if used */
|
||||
uint16_t ReportOUTEndpointSize; /**< Size in bytes of the HID interface's OUT report endpoint, if used */
|
||||
|
||||
uint8_t ReportBufferSize;
|
||||
uint8_t ReportINBufferSize;
|
||||
|
||||
bool UsingReportProtocol; /**< Indicates if the HID interface is set to Boot or Report protocol mode */
|
||||
uint16_t IdleCount; /**< Report idle period, in ms, set by the host */
|
||||
|
@ -106,7 +106,6 @@
|
|||
/* Function Prototypes: */
|
||||
bool USB_HID_ConfigureEndpoints(USB_ClassInfo_HID_t* HIDInterfaceInfo);
|
||||
void USB_HID_ProcessControlPacket(USB_ClassInfo_HID_t* HIDInterfaceInfo);
|
||||
void USB_HID_RegisterStartOfFrame(USB_ClassInfo_HID_t* HIDInterfaceInfo);
|
||||
void USB_HID_USBTask(USB_ClassInfo_HID_t* HIDInterfaceInfo);
|
||||
|
||||
uint16_t CALLBACK_USB_HID_CreateNextHIDReport(USB_ClassInfo_HID_t* HIDInterfaceInfo, void* ReportData);
|
||||
|
|
|
@ -55,36 +55,18 @@ bool USB_MIDI_ConfigureEndpoints(USB_ClassInfo_MIDI_t* MIDIInterfaceInfo)
|
|||
return true;
|
||||
}
|
||||
|
||||
void USB_MIDI_SendNoteChange(USB_ClassInfo_MIDI_t* MIDIInterfaceInfo, const uint8_t Pitch, const bool OnOff,
|
||||
const uint8_t CableID, const uint8_t Channel)
|
||||
{
|
||||
if (!(USB_IsConnected))
|
||||
return;
|
||||
|
||||
Endpoint_SelectEndpoint(MIDIInterfaceInfo->DataINEndpointNumber);
|
||||
while (!(Endpoint_IsReadWriteAllowed()));
|
||||
|
||||
uint8_t Command = ((OnOff)? MIDI_COMMAND_NOTE_ON : MIDI_COMMAND_NOTE_OFF);
|
||||
|
||||
Endpoint_Write_Byte((CableID << 4) | (Command >> 4));
|
||||
|
||||
Endpoint_Write_Byte(Command | Channel);
|
||||
Endpoint_Write_Byte(Pitch);
|
||||
Endpoint_Write_Byte(MIDI_STANDARD_VELOCITY);
|
||||
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
|
||||
void USB_MIDI_SendEventPacket(USB_ClassInfo_MIDI_t* MIDIInterfaceInfo, USB_MIDI_EventPacket_t* Event)
|
||||
{
|
||||
if (!(USB_IsConnected))
|
||||
return;
|
||||
|
||||
Endpoint_SelectEndpoint(MIDIInterfaceInfo->DataINEndpointNumber);
|
||||
while (!(Endpoint_IsReadWriteAllowed()));
|
||||
|
||||
Endpoint_Write_Stream_LE(Event, sizeof(USB_MIDI_EventPacket_t), NO_STREAM_CALLBACK);
|
||||
Endpoint_ClearIN();
|
||||
if (Endpoint_IsReadWriteAllowed());
|
||||
{
|
||||
Endpoint_Write_Stream_LE(Event, sizeof(USB_MIDI_EventPacket_t), NO_STREAM_CALLBACK);
|
||||
Endpoint_ClearIN();
|
||||
}
|
||||
}
|
||||
|
||||
bool USB_MIDI_ReceiveEventPacket(USB_ClassInfo_MIDI_t* MIDIInterfaceInfo, USB_MIDI_EventPacket_t* Event)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue