deserializePayload method

  1. @override
int deserializePayload(
  1. TransmissionRequestBuilder builder,
  2. ByteData byteData,
  3. Endian endianness,
  4. int offset,
)
override

Call to deserialize only the payload, no header. The Builder is to allow passing the message to build into. returns a int with a serialized size

Implementation

@override
int deserializePayload(imc.TransmissionRequestBuilder builder,
    ByteData byteData, Endian endianness, int offset) {
  var byteOffset = offset;

  // field reqId
  builder.reqId = byteData.getUint16(byteOffset, endianness);
  byteOffset += 2;
  // field commMean
  builder.commMean =
      imc.TransmissionRequestEnumCommMean(byteData.getUint8(byteOffset));
  byteOffset += 1;
  // field destination
  var destinationSSize = byteData.getUint16(byteOffset, endianness);
  byteOffset += 2;
  var destinationDData = List.filled(destinationSSize, 0);
  for (var i = 0; i < destinationSSize; i++) {
    destinationDData[i] = byteData.getUint8(byteOffset++);
  }
  var destinationDecoded = utf8.decode(destinationDData);
  builder.destination = destinationDecoded;
  // field deadline
  builder.deadline = byteData.getFloat64(byteOffset, endianness);
  byteOffset += 8;
  // field range
  builder.range = byteData.getFloat32(byteOffset, endianness);
  byteOffset += 4;
  // field dataMode
  builder.dataMode =
      imc.TransmissionRequestEnumDataMode(byteData.getUint8(byteOffset));
  byteOffset += 1;
  // field msgData
  var msgDataSId = byteData.getUint16(byteOffset, endianness);
  byteOffset += 2;
  if (msgDataSId == imc.ImcId.nullId) {
    builder.msgData = null;
  } else {
    var pMsgBuilder = imc.messagesBuilders[
            imc.idsToMessages[msgDataSId] ?? imc.ImcId.nullId.toString()]
        ?.call()
        .newInstance(builder);
    var pMsgSerializer = imc.messagesSerializers[
            imc.idsToMessages[msgDataSId] ?? imc.ImcId.nullId.toString()]
        ?.call();
    if (pMsgBuilder != null && pMsgSerializer != null) {
      var mPSize = pMsgSerializer.deserializePayload(
          pMsgBuilder, byteData, endianness, byteOffset);
      byteOffset += mPSize;
      builder.msgData = pMsgBuilder.build() as imc.ImcMessage?;
    }
  }
  // field txtData
  var txtDataSSize = byteData.getUint16(byteOffset, endianness);
  byteOffset += 2;
  var txtDataDData = List.filled(txtDataSSize, 0);
  for (var i = 0; i < txtDataSSize; i++) {
    txtDataDData[i] = byteData.getUint8(byteOffset++);
  }
  var txtDataDecoded = utf8.decode(txtDataDData);
  builder.txtData = txtDataDecoded;
  // field rawData
  var rawDataSSize = byteData.getUint16(byteOffset, endianness);
  byteOffset += 2;
  var rawDataDData = List.filled(rawDataSSize, 0);
  for (var i = 0; i < rawDataSSize; i++) {
    rawDataDData[i] = byteData.getUint8(byteOffset++);
  }
  builder.rawData = rawDataDData;

  return byteOffset - offset;
}