connect method

  1. @override
Future<void> connect(
  1. BluetoothDevice device
)
override

Implementation

@override
Future<void> connect(BluetoothDevice device) async {
  _baseStationConnectionState = BaseStationConnectionEnum.connecting;
  _baseStationConnectionStateController.add(BaseStationConnectionEnum.connecting);
  // Otherwise scan for devices
  // var onScan = FlutterBluePlus.scanResults.listen((results) async {
  //   // FlutterBluePlus.stopScan();
  //   // TODO: Handle multiple devices?
  //   if (results.isEmpty) {
  //     logger.e('No devices found');
  //     return;
  //   }
  //   final r = results.first;
  //   logger.d('${r.device.platformName} found! rssi: ${r.rssi}');
  //   device = r.device;
  //
  //
  //
  // });
  this.device = device;
  _connectionStateSubscription = device.connectionState.listen((state) {
    logger.d('Connection state: $state');
    switch (state) {
      case BluetoothConnectionState.connected:
        var services = device.discoverServices();
        services.then((value) async {
          service = value.firstWhere((element) => element.uuid == Guid(btTimerServiceUuid));
          characteristics = BaseStationBluetoothCharacteristics(
            raceFullState: service.characteristics.firstWhere((element) => element.uuid == Guid('${btTimerServicePrefix}0001')),
            control: service.characteristics.firstWhere((element) => element.uuid == Guid('${btTimerServicePrefix}0002')),
            settings: service.characteristics.firstWhere((element) => element.uuid == Guid('${btTimerServicePrefix}0003')),
          );
          characteristics.settings.setNotifyValue(true);
          await characteristics.settings.read();

          characteristics.raceFullState.setNotifyValue(true);
          await characteristics.raceFullState.read();

          logger.d('Set up characteristics');

          // characteristics.onRaceState.listen((event) {
          //   logger.d("Event: $event");
          // });
          _baseStationConnectionState = BaseStationConnectionEnum.connected;
          _baseStationConnectionStateController.add(BaseStationConnectionEnum.connected);
        });
        break;
      case BluetoothConnectionState.disconnected:
        _baseStationConnectionState = BaseStationConnectionEnum.disconnected;
        _baseStationConnectionStateController.add(BaseStationConnectionEnum.disconnected);
        break;
      default:
        break;
    }
  });


  await device.connect(autoConnect: false, mtu: 512);
  // FlutterBluePlus.cancelWhenScanComplete(onScan);

  // await FlutterBluePlus.turnOn();
  // await FlutterBluePlus.startScan(withServices: [Guid(btTimerServiceUuid)], timeout: const Duration(seconds: 5));

  // await FlutterBluePlus.isScanning.where((val) => val == false).first;
}