readCharacteristic method
Future<Uint8List?>
readCharacteristic({
- required String serviceUuid,
- required String characteristicUuid,
- Duration timeout = const Duration(seconds: 30),
override
readCharacteristic reads the value of a BLE characteristic. The return value is the raw bytes of the characteristic.
If the characteristic is not readable, this method will return null.
Implementation
@override
Future<Uint8List?> readCharacteristic({
required String serviceUuid,
required String characteristicUuid,
Duration timeout = const Duration(seconds: 30),
}) async {
if (_connectedDevice == null) {
log("Not connected to any device");
return null;
}
final service = _connectedDevice!.gattServices.firstWhereOrNull((element) {
return element.uuid.toString().toLowerCase() == serviceUuid.toLowerCase();
});
if (service == null) {
log("Service not found: $serviceUuid");
return null;
}
final characteristic = service.characteristics.firstWhereOrNull((element) {
return element.uuid.toString().toLowerCase() == characteristicUuid.toLowerCase();
});
if (characteristic == null) {
log("Characteristic not found: $characteristicUuid");
return null;
}
if (characteristic.notifying) {
log("Characteristic is notifying: $characteristicUuid");
return null;
}
final value = await characteristic.readValue();
return Uint8List.fromList(value);
}