summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2018-08-29 16:24:00 +0200
committerAlex Blasche <alexander.blasche@qt.io>2018-08-30 08:29:17 +0000
commit9004e89bb902a709c3d61c7f168d2d39fe2cd936 (patch)
treefa515abbd92da9159cdd84cf6105fc8a931b6ac6
parentbd7a3e23f6b97249ec99df45b5fed46f3e11c297 (diff)
downloadqtconnectivity-9004e89bb902a709c3d61c7f168d2d39fe2cd936.tar.gz
Ensure that local services have state LocalService
and invalidate the state once they have been disconnected. This affects Android, Bluez and Apple code lines. Change-Id: I2b87577930b6ae78e7ef7ef061e597beba946594 Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
-rw-r--r--src/bluetooth/qlowenergycontroller_osx.mm1
-rw-r--r--src/bluetooth/qlowenergycontrollerbase.cpp9
2 files changed, 6 insertions, 4 deletions
diff --git a/src/bluetooth/qlowenergycontroller_osx.mm b/src/bluetooth/qlowenergycontroller_osx.mm
index 46782a22..d01686ae 100644
--- a/src/bluetooth/qlowenergycontroller_osx.mm
+++ b/src/bluetooth/qlowenergycontroller_osx.mm
@@ -1372,6 +1372,7 @@ QLowEnergyService *QLowEnergyController::addService(const QLowEnergyServiceData
if (const auto servicePrivate = [osx_d_ptr->peripheralManager addService:data]) {
servicePrivate->setController(osx_d_ptr);
+ servicePrivate->state = QLowEnergyService::LocalService;
osx_d_ptr->discoveredServices.insert(servicePrivate->uuid, servicePrivate);
return new QLowEnergyService(servicePrivate, parent);
}
diff --git a/src/bluetooth/qlowenergycontrollerbase.cpp b/src/bluetooth/qlowenergycontrollerbase.cpp
index bfdd61a6..86108648 100644
--- a/src/bluetooth/qlowenergycontrollerbase.cpp
+++ b/src/bluetooth/qlowenergycontrollerbase.cpp
@@ -255,10 +255,11 @@ quint16 QLowEnergyControllerPrivate::updateValueOfDescriptor(
void QLowEnergyControllerPrivate::invalidateServices()
{
- for (QSharedPointer<QLowEnergyServicePrivate> service : serviceList.values()) {
+ for (QSharedPointer<QLowEnergyServicePrivate> service : serviceList.values())
+ service->setController(nullptr);
+
+ for (QSharedPointer<QLowEnergyServicePrivate> service : localServices.values())
service->setController(nullptr);
- service->setState(QLowEnergyService::InvalidService);
- }
serviceList.clear();
localServices.clear();
@@ -273,8 +274,8 @@ QLowEnergyService *QLowEnergyControllerPrivate::addServiceHelper(
// for it.
const auto servicePrivate = QSharedPointer<QLowEnergyServicePrivate>::create();
- servicePrivate->state = QLowEnergyService::LocalService;
servicePrivate->setController(this);
+ servicePrivate->state = QLowEnergyService::LocalService;
servicePrivate->uuid = service.uuid();
servicePrivate->type = service.type() == QLowEnergyServiceData::ServiceTypePrimary
? QLowEnergyService::PrimaryService : QLowEnergyService::IncludedService;