forked from PAWPAW-Mirror/lib_xua
Add test for zero packet on egress to avoid invalid FIFO pop
This commit is contained in:
@@ -13,7 +13,7 @@
|
|||||||
#include "iap_user.h"
|
#include "iap_user.h"
|
||||||
#include "coprocessor_user.h"
|
#include "coprocessor_user.h"
|
||||||
#endif
|
#endif
|
||||||
//#define MIDI_LOOPBACK 1
|
|
||||||
int icount = 0;
|
int icount = 0;
|
||||||
static unsigned makeSymbol(unsigned data)
|
static unsigned makeSymbol(unsigned data)
|
||||||
{
|
{
|
||||||
@@ -89,7 +89,7 @@ void usb_midi(
|
|||||||
|
|
||||||
struct midi_in_parse_state mips;
|
struct midi_in_parse_state mips;
|
||||||
|
|
||||||
// the symbol fifo (to go out of uart)
|
// the symbol fifo (to go out of uart).
|
||||||
queue_t symbol_fifo;
|
queue_t symbol_fifo;
|
||||||
unsigned symbol_fifo_arr[USB_MIDI_DEVICE_OUT_FIFO_SIZE]; // Used for 32bit USB MIDI events
|
unsigned symbol_fifo_arr[USB_MIDI_DEVICE_OUT_FIFO_SIZE]; // Used for 32bit USB MIDI events
|
||||||
|
|
||||||
@@ -264,7 +264,7 @@ void usb_midi(
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
// Received as packet from USB
|
||||||
case !authenticating => midi_get_ack_or_data(c_midi, is_ack, datum):
|
case !authenticating => midi_get_ack_or_data(c_midi, is_ack, datum):
|
||||||
|
|
||||||
if (is_ack)
|
if (is_ack)
|
||||||
@@ -281,6 +281,7 @@ void usb_midi(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
// A midi packet from the host
|
||||||
{
|
{
|
||||||
unsigned midi[3];
|
unsigned midi[3];
|
||||||
unsigned size;
|
unsigned size;
|
||||||
@@ -327,7 +328,7 @@ void usb_midi(
|
|||||||
midi_from_host_overflow = 1;
|
midi_from_host_overflow = 1;
|
||||||
}
|
}
|
||||||
// Drop through to the isTX guarded case
|
// Drop through to the isTX guarded case
|
||||||
if (!isTX)
|
if (!isTX && size > 0) // do not start tx'ing if this packet has no size
|
||||||
{
|
{
|
||||||
t :> txT; // Should be enough to trigger the other case
|
t :> txT; // Should be enough to trigger the other case
|
||||||
isTX = 1;
|
isTX = 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user