sendRaw method

Future<SendRawResponse> sendRaw(
  1. String address,
  2. dynamic raw, {
  3. int delay = 0,
  4. int transition = 0,
})

Send the raw level to the device at address

Implementation

Future<SendRawResponse> sendRaw(
  final String address,
  final dynamic raw, {
  final int delay = 0,
  final int transition = 0,
}) async {
  _checkValidAddress(address);
  if (raw == null) {
    throw ArgumentError.notNull('raw');
  }
  dynamic _raw = raw;
  if (raw is int) {
    if (raw < -32768 || raw > 32767) {
      throw ArgumentError('raw must be between -32768 and 32767');
    }
  } else if (raw is String) {
    if (!RegExp(r'[0-9A-Fa-f]{4}').hasMatch(raw)) {
      throw ArgumentError('raw must be a four digit hexadecimal String');
    }
    final parsedRaw = int.parse(raw, radix: 16);
    if (parsedRaw < -32768 || parsedRaw > 32767) {
      throw ArgumentError('raw must be between -32768 and 32767');
    }
    if (parsedRaw < 0) {
      _log('cannot send negative hex string ($_raw), converting to int ($parsedRaw)');
      _raw = parsedRaw;
    }
  } else {
    throw UnsupportedError('raw must be either of int or String type');
  }
  return SendRawResponse.fromJson(await _sendRequest(
    'set',
    params: <String, dynamic>{
      'address': address,
      'raw': _raw,
    },
  ));
}