encodeMessageV2 method
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;
}