toPacket method

String toPacket()

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';
}