I've got an issue with the universal midi packet spec (M2-104-UM_v1-0_UMP_and_MIDI_2-0_Protocol_Specification) in the System Exclusive 8 Messages, Unexpected End of Data specification.
4.5.1 Unexpected End of Data
If the Sender runs out of payload data before sending a System Exclusive 8 End UMP, then the Sender shall send a System Exclusive 8 End UMP with all data bytes set to zero, and the # of bytes field set to either of the two following values:
• 0x1 if the Sender knows that the previous data in the SysEx8 message is valid.
• 0xF if the previous data is an incomplete message, or if the resulting quality of previous data is unknown.
But it also states just above:
# of bytes
This 4-bit field declares the number of valid data bytes in each UMP, starting from and including the Stream ID through to the end of the 128-bit UMP (i.e., 1 to 14 bytes). Stream ID is mandatory (1 byte), so a value of 0x0 is not valid in the # of bytes field.
This would make it impossible to send an ordinary System Exclusive 8 End UMP message containing no data with stream id 0x0. Such a message would be read as an unexpected end of data message (with previously sent data valid).
Is this intended?