connect method
connect connects to a BLE device.
Implementation
@override
Future<bool?> connect({required String macAddress}) async {
if (!_devices.containsKey(macAddress)) {
log("Device not found: $macAddress");
return false;
}
final device = _devices[macAddress]!;
await device.connect(timeout: null);
_currentConnected = device;
_services.clear();
try {
_currentConnected!.discoverServices();
final services = await _currentConnected!.discoverServices();
for (final service in services) {
final characteristics = await service.getCharacteristics();
final bleCharacteristics = characteristics.map((c) {
return BleCharacteristic(
uuid: c.uuid,
properties: [
if (c.properties.read) BleProperty.read,
if (c.properties.write) BleProperty.write,
if (c.properties.notify) BleProperty.notify,
if (c.properties.indicate) BleProperty.indicate,
if (c.properties.authenticatedSignedWrites) BleProperty.authenticatedSignedWrites,
if (c.properties.broadcast) BleProperty.broadcast,
if (c.properties.writableAuxiliaries) BleProperty.extendedProperties,
if (c.properties.writeWithoutResponse) BleProperty.writeWithoutResponse,
],
);
}).toList();
_services.add(BleService(
uuid: service.uuid,
characteristics: bleCharacteristics,
));
}
} catch (e) {
log("Error discovering services: $e");
_currentConnected = null;
return false;
}
return true;
}