call method

  1. @override
Future<(int, Uint8List)> call(
  1. int msgType,
  2. Uint8List payload
)
override

Implementation

@override
Future<(int, Uint8List)> call(int msgType, Uint8List payload) async {
  if (_session == null) {
    throw StateError('Not connected - call connectDevice() first');
  }
  final encoded = encodeFrame(msgType, payload);
  try {
    final responseBody = await _post(
      '/call/${Uri.encodeComponent(_session!)}',
      body: encoded,
    );
    return decodeFrame(responseBody);
  } on Exception {
    // Session may have been stolen by another client (e.g. Trezor Suite).
    // Re-acquire and retry once.
    await _reacquireSession();
    final responseBody = await _post(
      '/call/${Uri.encodeComponent(_session!)}',
      body: encoded,
    );
    return decodeFrame(responseBody);
  }
}