summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@theqtcompany.com>2015-04-01 13:43:42 +0200
committerAlex Blasche <alexander.blasche@theqtcompany.com>2015-04-15 05:44:17 +0000
commit99d62bcce229ab2807f0ea5b8a0f618b4e93c665 (patch)
treecd1252b1455c2a88efee1e600a4a76067de5a6b9
parent32c851da4f41e51d0d50b6af5b8e7bf225edb01b (diff)
downloadqtconnectivity-99d62bcce229ab2807f0ea5b8a0f618b4e93c665.tar.gz
Emit OperationError if char or desc is not part of current service
So far, the OperationError was not set. This improves the error feedback to the user. Change-Id: I37eccb2419d6ede3b9bd4e94b9e0538182d1db7e Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
-rw-r--r--src/bluetooth/qlowenergyservice.cpp42
-rw-r--r--src/bluetooth/qlowenergyservice_osx.mm22
2 files changed, 24 insertions, 40 deletions
diff --git a/src/bluetooth/qlowenergyservice.cpp b/src/bluetooth/qlowenergyservice.cpp
index 0db349f1..21090c77 100644
--- a/src/bluetooth/qlowenergyservice.cpp
+++ b/src/bluetooth/qlowenergyservice.cpp
@@ -558,7 +558,8 @@ bool QLowEnergyService::contains(const QLowEnergyCharacteristic &characteristic)
A characteristic can only be read if the service is in the \l ServiceDiscovered state,
belongs to the service and is readable. If \a characteristic is readable its
- \l QLowEnergyCharacteristic::Read property is set.
+ \l QLowEnergyCharacteristic::Read property is set. If one of those conditions is
+ not true the \l QLowEnergyService::OperationError is set.
\sa characteristicRead()
@@ -569,11 +570,9 @@ void QLowEnergyService::readCharacteristic(
{
Q_D(QLowEnergyService);
- // not a characteristic of this service
- if (!contains(characteristic))
- return;
-
- if (state() != ServiceDiscovered || !d->controller) {
+ if (!contains(characteristic)
+ || state() != ServiceDiscovered
+ || !d->controller) {
d->setError(QLowEnergyService::OperationError);
return;
}
@@ -603,7 +602,8 @@ void QLowEnergyService::readCharacteristic(
Bluetooth specification.
A characteristic can only be written if this service is in the \l ServiceDiscovered state,
- belongs to the service and is writable.
+ belongs to the service and is writable. If one of those conditions is
+ not true the \l QLowEnergyService::OperationError is set.
\sa QLowEnergyCharacteristic::properties()
*/
@@ -614,11 +614,9 @@ void QLowEnergyService::writeCharacteristic(
//TODO check behavior when writing to WriteSigned characteristic
Q_D(QLowEnergyService);
- // not a characteristic of this service
- if (!contains(characteristic))
- return;
-
- if (state() != ServiceDiscovered || !d->controller) {
+ if (!contains(characteristic)
+ || state() != ServiceDiscovered
+ || !d->controller) {
d->setError(QLowEnergyService::OperationError);
return;
}
@@ -674,7 +672,8 @@ bool QLowEnergyService::contains(const QLowEnergyDescriptor &descriptor) const
The queue does not eliminate duplicated read requests for the same descriptor.
A descriptor can only be written if the service is in the \l ServiceDiscovered state,
- belongs to the service and is readable.
+ belongs to the service and is readable. If one of those conditions is
+ not true the \l QLowEnergyService::OperationError is set.
\sa descriptorRead()
@@ -685,10 +684,9 @@ void QLowEnergyService::readDescriptor(
{
Q_D(QLowEnergyService);
- if (!contains(descriptor))
- return;
-
- if (state() != ServiceDiscovered || !d->controller) {
+ if (!contains(descriptor)
+ || state() != ServiceDiscovered
+ || !d->controller) {
d->setError(QLowEnergyService::OperationError);
return;
}
@@ -710,17 +708,17 @@ void QLowEnergyService::readDescriptor(
to B, the two write request are executed in the given order.
A descriptor can only be written if this service is in the \l ServiceDiscovered state,
- belongs to the service and is writable.
+ belongs to the service and is writable. If one of those conditions is
+ not true the \l QLowEnergyService::OperationError is set.
*/
void QLowEnergyService::writeDescriptor(const QLowEnergyDescriptor &descriptor,
const QByteArray &newValue)
{
Q_D(QLowEnergyService);
- if (!contains(descriptor))
- return;
-
- if (state() != ServiceDiscovered || !d->controller) {
+ if (!contains(descriptor)
+ || state() != ServiceDiscovered
+ || !d->controller) {
d->setError(QLowEnergyService::OperationError);
return;
}
diff --git a/src/bluetooth/qlowenergyservice_osx.mm b/src/bluetooth/qlowenergyservice_osx.mm
index 80ab6eaa..51b0f53d 100644
--- a/src/bluetooth/qlowenergyservice_osx.mm
+++ b/src/bluetooth/qlowenergyservice_osx.mm
@@ -179,12 +179,8 @@ bool QLowEnergyService::contains(const QLowEnergyCharacteristic &characteristic)
void QLowEnergyService::readCharacteristic(const QLowEnergyCharacteristic &characteristic)
{
- // not a characteristic of this service
- if (!contains(characteristic))
- return;
-
QLowEnergyControllerPrivateOSX *const controller = qt_mac_le_controller(d_ptr);
- if (state() != ServiceDiscovered || !controller) {
+ if (!contains(characteristic) || state() != ServiceDiscovered || !controller) {
d_ptr->setError(OperationError);
return;
}
@@ -196,13 +192,9 @@ void QLowEnergyService::readCharacteristic(const QLowEnergyCharacteristic &chara
void QLowEnergyService::writeCharacteristic(const QLowEnergyCharacteristic &ch, const QByteArray &newValue,
WriteMode mode)
{
- // Not a characteristic of this service
- if (!contains(ch))
- return;
-
QLowEnergyControllerPrivateOSX *const controller = qt_mac_le_controller(d_ptr);
- if (state() != ServiceDiscovered || !controller) {
+ if (!contains(ch) || state() != ServiceDiscovered || !controller) {
d_ptr->setError(QLowEnergyService::OperationError);
return;
}
@@ -236,11 +228,8 @@ bool QLowEnergyService::contains(const QLowEnergyDescriptor &descriptor) const
void QLowEnergyService::readDescriptor(const QLowEnergyDescriptor &descriptor)
{
- if (!contains(descriptor))
- return;
-
QLowEnergyControllerPrivateOSX *const controller = qt_mac_le_controller(d_ptr);
- if (state() != ServiceDiscovered || !controller) {
+ if (!contains(descriptor) || state() != ServiceDiscovered || !controller) {
d_ptr->setError(OperationError);
return;
}
@@ -251,11 +240,8 @@ void QLowEnergyService::readDescriptor(const QLowEnergyDescriptor &descriptor)
void QLowEnergyService::writeDescriptor(const QLowEnergyDescriptor &descriptor,
const QByteArray &newValue)
{
- if (!contains(descriptor))
- return;
-
QLowEnergyControllerPrivateOSX *const controller = qt_mac_le_controller(d_ptr);
- if (state() != ServiceDiscovered || !controller) {
+ if (!contains(descriptor) || state() != ServiceDiscovered || !controller) {
d_ptr->setError(OperationError);
return;
}