New fixes for SYSEX handling.

pull/195/head
Holger Wirtz 3 years ago
parent 7518c34cf6
commit c41f02b2d7
  1. 35
      src/serialmididevice.cpp

@ -60,26 +60,20 @@ void CSerialMIDIDevice::Process (void)
return; return;
} }
printf("Incoming MIDI data:\n"); if (m_pConfig->GetMIDIDumpEnabled ())
for (uint16_t i = 0; i < nResult; i++)
{ {
if((i % 8) == 0) printf("Incoming MIDI data:\n");
printf("%04d:",i); for (uint16_t i = 0; i < nResult; i++)
printf(" 0x%02x",Buffer[i]); {
if((i > 1 ) && (i % 8) == 0) if((i % 8) == 0)
printf("%04d:",i);
printf(" 0x%02x",Buffer[i]);
if((i > 1 ) && (i % 8) == 0)
printf("\n");
}
if((nResult % 8) != 0)
printf("\n"); printf("\n");
} }
if((i % 8) != 0)
printf("\n");
if(Buffer[0] == 0xF0)
{
// SYSEX found
m_nSysEx=nResult;
memcpy(m_SerialMessage, Buffer, nResult);
return;
}
// Process MIDI messages // Process MIDI messages
// See: https://www.midi.org/specifications/item/table-1-summary-of-midi-message // See: https://www.midi.org/specifications/item/table-1-summary-of-midi-message
@ -89,6 +83,13 @@ void CSerialMIDIDevice::Process (void)
{ {
u8 uchData = Buffer[i]; u8 uchData = Buffer[i];
if(uchData == 0xF0)
{
// SYSEX found
m_SerialMessage[m_nSysEx++]=uchData;
continue;
}
if(m_nSysEx > 0) if(m_nSysEx > 0)
{ {
m_SerialMessage[m_nSysEx++]=uchData; m_SerialMessage[m_nSysEx++]=uchData;

Loading…
Cancel
Save