Ensure correct message length after parsing

After parsing the message length was still zero in multiple cases.
Which doesn't allow for instance to use those messages as is with send()
This commit is contained in:
fabien-gigante 2020-12-29 16:56:30 +01:00 committed by GitHub
parent d9149d19df
commit f094ece834
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 4 additions and 1 deletions

View File

@ -844,6 +844,7 @@ bool MidiInterface<Transport, Settings, Platform>::parse()
mMessage.channel = 0; mMessage.channel = 0;
mMessage.data1 = 0; mMessage.data1 = 0;
mMessage.data2 = 0; mMessage.data2 = 0;
mMessage.length = 1;
mMessage.valid = true; mMessage.valid = true;
// Do not reset all input attributes, Running Status must remain unchanged. // Do not reset all input attributes, Running Status must remain unchanged.
@ -859,6 +860,7 @@ bool MidiInterface<Transport, Settings, Platform>::parse()
case AfterTouchChannel: case AfterTouchChannel:
case TimeCodeQuarterFrame: case TimeCodeQuarterFrame:
case SongSelect: case SongSelect:
mMessage.length = 2;
mPendingMessageExpectedLength = 2; mPendingMessageExpectedLength = 2;
break; break;
@ -869,6 +871,7 @@ bool MidiInterface<Transport, Settings, Platform>::parse()
case PitchBend: case PitchBend:
case AfterTouchPoly: case AfterTouchPoly:
case SongPosition: case SongPosition:
mMessage.length = 3;
mPendingMessageExpectedLength = 3; mPendingMessageExpectedLength = 3;
break; break;
@ -900,7 +903,7 @@ bool MidiInterface<Transport, Settings, Platform>::parse()
mMessage.channel = getChannelFromStatusByte(mPendingMessage[0]); mMessage.channel = getChannelFromStatusByte(mPendingMessage[0]);
mMessage.data1 = mPendingMessage[1]; mMessage.data1 = mPendingMessage[1];
mMessage.data2 = 0; // Completed new message has 1 data byte mMessage.data2 = 0; // Completed new message has 1 data byte
mMessage.length = 1; mMessage.length = 2;
mPendingMessageIndex = 0; mPendingMessageIndex = 0;
mPendingMessageExpectedLength = 0; mPendingMessageExpectedLength = 0;