sendCommand method

Future<AtemPacket?> sendCommand(
  1. AtemCommand command, {
  2. bool reliable = true,
})

Sends a command to the switcher.

Implementation

Future<AtemPacket?> sendCommand(AtemCommand command,
    {bool reliable = true}) async {
  if (!_connected) throw StateError('Not connected');

  final data = command.toBytes();
  final packet = _createDataPacket(data, reliable: reliable);

  if (reliable) {
    final completer = Completer<AtemPacket>();
    _pendingCommands[packet.sequenceNumber] = completer;
    _sendPacket(packet);
    try {
      return await completer.future.timeout(_config.timeout);
    } finally {
      _pendingCommands.remove(packet.sequenceNumber);
      _retransmissionBuffer.remove(packet.sequenceNumber);
    }
  } else {
    _sendPacket(packet);
    return null;
  }
}