connect method

  1. @override
Future<bool?> connect({
  1. required String macAddress,
})
override

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;
}