connect method
connect connects to a BLE device.
Implementation
@override
Future<bool?> connect({required String macAddress}) async {
if (_client == null) {
log("Error initializing BlueZClient");
return false;
}
stopScan();
if (_devices[macAddress.toLowerCase()] == null) {
log("Device not found: $macAddress");
return false;
}
final device = _devices[macAddress.toLowerCase()]!;
await device.connect();
_connectedDevice = device;
_services.clear();
_eventController.add(BleEvent.connected);
for (final service in _connectedDevice!.gattServices) {
for (final characteristic in service.characteristics) {
_services.add(BleService(
uuid: service.uuid.toString(),
characteristics: [
BleCharacteristic(
uuid: characteristic.uuid.toString(),
properties: [
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.read)) BleProperty.read,
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.write)) BleProperty.write,
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.notify)) BleProperty.notify,
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.broadcast)) BleProperty.broadcast,
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.writeWithoutResponse))
BleProperty.writeWithoutResponse,
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.indicate)) BleProperty.indicate,
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.authenticatedSignedWrites))
BleProperty.authenticatedSignedWrites,
if (characteristic.flags.contains(BlueZGattCharacteristicFlag.extendedProperties))
BleProperty.extendedProperties,
],
),
],
));
}
}
return true;
}