connectAndWait static method
Convenience method to connect and wait for successful connection
deviceAddress
- MAC address of the device to connect to
timeout
- Maximum time to wait for connection (defaults to 30 seconds)
Returns true if connection was successful, throws BleException on error
Implementation
static Future<bool> connectAndWait(String deviceAddress,
{Duration timeout = const Duration(seconds: 30)}) async {
final completer = Completer<bool>();
StreamSubscription<ConnectionEvent>? subscription;
Timer? timeoutTimer;
// Set up timeout
timeoutTimer = Timer(timeout, () {
subscription?.cancel();
if (!completer.isCompleted) {
completer
.completeError(BleException('Connection timeout', deviceAddress));
}
});
// Start connection and listen for results
subscription = connect(deviceAddress).listen((event) {
if (event.isConnected) {
timeoutTimer?.cancel();
subscription?.cancel();
if (!completer.isCompleted) {
completer.complete(true);
}
} else if (event.isError) {
timeoutTimer?.cancel();
subscription?.cancel();
if (!completer.isCompleted) {
completer.completeError(BleException(
event.message ?? 'Connection failed', deviceAddress));
}
}
});
return completer.future;
}