BLE backend

BLE backend interfaces

Usage

Cantral:

final bleCentral = createCentral();
print("Cantral state: ${bleCentral.state}");
bleCentral.stateStream.listen((state) => print("Cantral state changed: $state"));

Scanner:

final bleScanner = bleCentral.createScanner(serviceIds: [serviceId]);
bleScanner.stateStream.listen((state) => print("Scaning: ${state.isScanInProgress}"));
await bleScanner.scan();
await Future.delayed(const Duration(seconds: 1));
await bleScanner.stop();

Peripheral:

final blePeripheral = bleScanner.state.devices.first;
print("Peripheral id: ${blePeripheral.id}");
print("Peripheral name: ${blePeripheral.name}");
print("Peripheral rssi: ${blePeripheral.rssi}");

Connector:

final bleConnector = blePeripheral.createConnector();
print("Connector state: ${bleConnector.state}");
bleConnector.stateStream.listen((state) => print("Connector state changed: $state"));
await bleConnector.connect();

Mtu:

final bleMtu = bleConnector.createMtu();
if (bleMtu.isRequestSupported) print("Mtu requested: ${await bleMtu.request(mtu: 128)}");

Characteristic:

final bleCharacteristic = bleConnector.createCharacteristic(serviceId: serviceId, characteristicId: characteristicId);
bleCharacteristic.dataStream.listen((data) => print("Characteristic data changed: $data"));
await bleCharacteristic.startNotifications();
print("Characteristic data: ${await bleCharacteristic.read()}");
await bleCharacteristic.write(data: data);
await bleCharacteristic.writeWithoutResponse(data: data);
await bleCharacteristic.stopNotifications();

Serial:

final bleSerial = bleConnector.createSerial(
    serviceId: serviceId,
    rxCharacteristicId: rxCharacteristicId,
    txCharacteristicId: txCharacteristicId);
bleSerial.dataStream.listen((data) => print("Serial data received: $data"));
await bleSerial.startNotifications();
await bleSerial.send(data: data);
bleSerial.waitData(timeoutCallback: () => print("Serial data not received"));
await bleSerial.stopNotifications();