diff options
Diffstat (limited to 'src/bluetooth/qlowenergyservice_osx.mm')
-rw-r--r-- | src/bluetooth/qlowenergyservice_osx.mm | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/bluetooth/qlowenergyservice_osx.mm b/src/bluetooth/qlowenergyservice_osx.mm index 97d64040..52c2ac87 100644 --- a/src/bluetooth/qlowenergyservice_osx.mm +++ b/src/bluetooth/qlowenergyservice_osx.mm @@ -208,7 +208,9 @@ void QLowEnergyService::writeCharacteristic(const QLowEnergyCharacteristic &ch, WriteMode mode) { QLowEnergyControllerPrivateOSX *const controller = qt_mac_le_controller(d_ptr); - if (controller == Q_NULLPTR || state() != ServiceDiscovered || !contains(ch)) { + if (controller == Q_NULLPTR || + (controller->role == QLowEnergyController::CentralRole && state() != ServiceDiscovered) || + !contains(ch)) { d_ptr->setError(QLowEnergyService::OperationError); return; } @@ -250,6 +252,8 @@ void QLowEnergyService::writeDescriptor(const QLowEnergyDescriptor &descriptor, { QLowEnergyControllerPrivateOSX *const controller = qt_mac_le_controller(d_ptr); if (controller == Q_NULLPTR || state() != ServiceDiscovered || !contains(descriptor)) { + // This operation error also includes LE controller in the peripheral role: + // on iOS/OS X - descriptors are immutable. d_ptr->setError(OperationError); return; } |