writeCharacteristic method
Future<bool>
writeCharacteristic({
- required String serviceUuid,
- required String characteristicUuid,
- required Uint8List payload,
- Duration timeout = const Duration(seconds: 30),
- required bool withResponse,
override
writeCharacteristic sends a payload to a BLE characteristic.
The return value is true
if the payload was sent successfully.
Implementation
@override
Future<bool> writeCharacteristic({
required String serviceUuid,
required String characteristicUuid,
required Uint8List payload,
Duration timeout = const Duration(seconds: 30),
required bool withResponse,
}) async {
if (_currentConnected == null) {
log("No device connected");
return false;
}
await _currentConnected!.connect();
try {
final services = await _currentConnected!.discoverServices();
final service = services.firstWhereOrNull((s) => s.uuid.toLowerCase() == serviceUuid.toLowerCase());
if (service == null) {
log("Service not found: $serviceUuid");
return false;
}
try {
final characteristic = await service.getCharacteristic(characteristicUuid);
if (withResponse) {
await characteristic.writeValueWithResponse(payload);
} else {
await characteristic.writeValueWithoutResponse(payload);
}
return true;
} catch (e) {
log("Error getting characteristic: $e");
return false;
}
} catch (e) {
log("Error discovering services: $e");
return false;
}
}