connect method
Implementation
Future<void> connect(
BleDeviceId deviceId, {
Duration timeout = const Duration(seconds: 10),
}) {
if (_lifecycle == _ProbeLifecycle.connecting &&
_connectionDevice == deviceId) {
return _connectFuture!;
}
if (_lifecycle != _ProbeLifecycle.idle &&
_lifecycle != _ProbeLifecycle.scanning) {
return Future<void>.error(_invalidLifecycle('connect'));
}
final completer = Completer<void>();
final generation = ++_connectionGeneration;
final deadline = _MonotonicDeadline(timeout);
_lifecycle = _ProbeLifecycle.connecting;
_connectionDevice = deviceId;
_connectionSetupStarted = false;
_connectCompleter = completer;
_connectFuture = completer.future;
_connectionTimer = Timer(timeout, () {
_startConnectionFailure(
generation,
_connectionTimeoutFailure(timeout),
StackTrace.current,
prefix: 'connection timed out',
);
});
if (_scanSubscription == null &&
_scanCompleter == null &&
_scanStopFuture == null) {
_listenForConnection(deviceId, deadline, generation);
} else {
unawaited(_beginConnection(deviceId, deadline, generation));
}
return completer.future;
}