connect method
Future<void>
connect(
- 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;
}