determineODIDMessageType function

Type determineODIDMessageType(
  1. Uint8List messageData
)

Returns ODID message type based on received message header. Throws an exception if unable to determine.

Implementation

Type determineODIDMessageType(Uint8List messageData) {
  // Each message has to be min. 25 bytes
  if (messageData.length < maxMessageSize) {
    throw OdidMessageLengthMismatch(messageData.length);
  }

  // Header is always the first byte
  final header = messageData[0];

  // First 4 bits encode message type
  final type = (header & 0xF0) >> 4;
  final messageType = MessageType.getByValue(type);

  if (messageType == null) {
    throw UnknownOdidMessageType(type);
  }

  return messageType.toODIDMessageType();
}