deserialize method

  1. @override
DesiredThrottle? deserialize(
  1. Uint8List data, [
  2. int offset = 0
])
override

Call to deserialize the all message

Implementation

@override
imc.DesiredThrottle? deserialize(Uint8List data, [int offset = 0]) {
  var byteOffset = offset;
  var byteData = data.buffer.asByteData(offset);

  var endianness = imc.getEndianness(byteData, byteOffset);
  byteOffset += 2;
  if (endianness == null) {
    return null;
  }

  var msgId = byteData.getUint16(byteOffset, endianness);
  byteOffset += 2;
  if (msgId != imc.DesiredThrottle.staticId) {
    return null;
  }

  var builder = imc.DesiredThrottleBuilder();
  var payloadSize =
      imc.deserializeHeader(builder, byteData, endianness, offset);
  if (payloadSize == null) {
    return null;
  }

  byteOffset = offset + imc.headerSize;

  var calcCrc = imc.calcCrc(byteData, offset, imc.headerSize + payloadSize);
  var readCrc = imc.getCrcFooter(
      byteData, offset + imc.headerSize + payloadSize, endianness);
  if (calcCrc != readCrc) {
    return null;
  }

  // Payload
  int payloadSizeRead;
  try {
    payloadSizeRead =
        deserializePayload(builder, byteData, endianness, byteOffset);
  } catch (_) {
    return null;
  }
  // End payload

  if (payloadSizeRead != payloadSize) {
    return null;
  }
  byteOffset = offset + imc.headerSize + payloadSize;
  return builder.build();
}