This commit is contained in:
Francois Best 2014-04-16 08:33:45 +02:00
commit 70ff97886c
1 changed files with 27 additions and 24 deletions

View File

@ -545,24 +545,6 @@ bool MidiInterface<SerialPort>::parse()
// Else: well, we received another status byte,
// so the running status does not apply here.
// It will be updated upon completion of this message.
if (mPendingMessageIndex >= (mPendingMessageExpectedLenght - 1))
{
mMessage.type = getTypeFromStatusByte(mPendingMessage[0]);
mMessage.channel = getChannelFromStatusByte(mPendingMessage[0]);
mMessage.data1 = mPendingMessage[1];
// Save data2 only if applicable
if (mPendingMessageExpectedLenght == 3)
mMessage.data2 = mPendingMessage[2];
else
mMessage.data2 = 0;
mPendingMessageIndex = 0;
mPendingMessageExpectedLenght = 0;
mMessage.valid = true;
return true;
}
}
switch (getTypeFromStatusByte(mPendingMessage[0]))
@ -627,8 +609,29 @@ bool MidiInterface<SerialPort>::parse()
break;
}
// Then update the index of the pending message.
if (mPendingMessageIndex >= (mPendingMessageExpectedLenght - 1))
{
// Reception complete
mMessage.type = getTypeFromStatusByte(mPendingMessage[0]);
mMessage.channel = getChannelFromStatusByte(mPendingMessage[0]);
mMessage.data1 = mPendingMessage[1];
// Save data2 only if applicable
if (mPendingMessageExpectedLenght == 3)
mMessage.data2 = mPendingMessage[2];
else
mMessage.data2 = 0;
mPendingMessageIndex = 0;
mPendingMessageExpectedLenght = 0;
mMessage.valid = true;
return true;
}
else
{
// Waiting for more data
mPendingMessageIndex++;
}
#if USE_1BYTE_PARSING
// Message is not complete.