|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
println("MIDIDevice Receive"); |
|
|
println("MIDIDevice Receive"); |
|
|
print(" MIDI Data: "); |
|
|
print(" MIDI Data: "); |
|
|
print_hexbytes(transfer->buffer, rx_size); |
|
|
|
|
|
|
|
|
uint32_t len = (transfer->length - ((transfer->qtd.token >> 16) & 0x7FFF)) >> 2; |
|
|
|
|
|
print_hexbytes(transfer->buffer, len * 4); |
|
|
uint32_t head = rx_head; |
|
|
uint32_t head = rx_head; |
|
|
uint32_t tail = rx_tail; |
|
|
uint32_t tail = rx_tail; |
|
|
uint32_t len = (transfer->length - ((transfer->qtd.token >> 16) & 0x7FFF)) >> 2; |
|
|
|
|
|
for (uint32_t i=0; i < len; i++) { |
|
|
for (uint32_t i=0; i < len; i++) { |
|
|
uint32_t msg = rx_buffer[i]; |
|
|
uint32_t msg = rx_buffer[i]; |
|
|
if (msg) { |
|
|
if (msg) { |
|
|
|
|
|
|
|
|
rx_head = head; |
|
|
rx_head = head; |
|
|
rx_tail = tail; |
|
|
rx_tail = tail; |
|
|
uint32_t avail = (head < tail) ? tail - head - 1 : RX_QUEUE_SIZE - 1 - head + tail; |
|
|
uint32_t avail = (head < tail) ? tail - head - 1 : RX_QUEUE_SIZE - 1 - head + tail; |
|
|
println("rx_size = ", rx_size); |
|
|
|
|
|
|
|
|
//println("rx_size = ", rx_size); |
|
|
println("avail = ", avail); |
|
|
println("avail = ", avail); |
|
|
if (avail >= (uint32_t)(rx_size>>2)) { |
|
|
if (avail >= (uint32_t)(rx_size>>2)) { |
|
|
// enough space to accept another full packet |
|
|
// enough space to accept another full packet |