summaryrefslogtreecommitdiffstats
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)
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;