toPacket method
toPacket converts the Command to a raw message following this structure: commandId;commandName;args;crc16
Implementation
String toPacket() {
String payload = '$commandId;$commandName;';
payload += args.entries
.map((e) {
if (e.value is bool) {
return '${e.key}:${e.value ? 'true' : 'false'}';
} else if (e.value is int) {
return '${e.key}:${e.value}';
} else if (e.value is double) {
return '${e.key}:${e.value}';
} else {
return '${e.key}:${e.value}';
}
})
.join(',');
payload += ';';
String crc = calculateCrc(payload.codeUnits).toRadixString(16).padLeft(4, '0').toUpperCase();
return '$payload$crc';
}