encodeMessageV2 method

Uint8List encodeMessageV2(
  1. int code,
  2. dynamic data
)

Implementation

Uint8List encodeMessageV2(int code, dynamic data) {
  Uint8List dataBytes;
  if (data is String) {
    dataBytes = stringToBytes(data);
  } else if (data is List<int>) {
    dataBytes = intListToBytes(data);
  } else {
    throw ArgumentError("Unsupported data type");
  }

  int dataLength = dataBytes.length;
  int bufferSize = dataLength + 9;
  Uint8List bufferOut = Uint8List(bufferSize);
  bufferOut[0] = 36;  // Start byte '$'
  bufferOut[1] = 88;  // Message type 'M'
  bufferOut[2] = 60;  // '<'
  bufferOut[3] = 0;   // Flag byte initialized to 0
  bufferOut[4] = code & 0xFF;
  bufferOut[5] = (code >> 8) & 0xFF;
  bufferOut[6] = dataLength & 0xFF;
  bufferOut[7] = (dataLength >> 8) & 0xFF;
  bufferOut.setRange(8, 8 + dataLength, dataBytes);
  // Calculate CRC and add at the end
  bufferOut[bufferSize - 1] = crc8DvbS2(bufferOut.sublist(3, bufferSize - 1));
  return bufferOut;
}