diff options
Diffstat (limited to 'src/bluetooth/qlowenergyservice.cpp')
-rw-r--r-- | src/bluetooth/qlowenergyservice.cpp | 66 |
1 files changed, 64 insertions, 2 deletions
diff --git a/src/bluetooth/qlowenergyservice.cpp b/src/bluetooth/qlowenergyservice.cpp index e60f7cc1..0e25c9b3 100644 --- a/src/bluetooth/qlowenergyservice.cpp +++ b/src/bluetooth/qlowenergyservice.cpp @@ -40,9 +40,12 @@ ****************************************************************************/ #include <QtCore/QCoreApplication> +#include <QtCore/QPointer> #include <QtBluetooth/QLowEnergyService> #include <QtBluetooth/QLowEnergyCharacteristicInfo> +#include "qlowenergycontrollernew_p.h" + QT_BEGIN_NAMESPACE class QLowEnergyServicePrivate { @@ -50,16 +53,61 @@ public: QBluetoothUuid uuid; QLowEnergyService::ServiceType type; QLowEnergyService::ServiceState state; + QLowEnergyService::ServiceError lastError; + + QPointer<QLowEnergyControllerNewPrivate> controller; }; +/*! + \internal + + QLowEnergyControllerNewPrivate creates instances of this class. + The user gets access to class instances via + \l QLowEnergyControllerNew::services(). + */ QLowEnergyService::QLowEnergyService(const QBluetoothUuid &uuid, QObject *parent) : QObject(parent) { d_ptr = new QLowEnergyServicePrivate(); d_ptr->uuid = uuid; - d_ptr->state = QLowEnergyService::DiscoveryRequired; + d_ptr->state = QLowEnergyService::InvalidService; d_ptr->type = QLowEnergyService::PrimaryService; + d_ptr->lastError = QLowEnergyService::NoError; +} + +/*! + \internal + + Called by Controller right after construction. + */ +void QLowEnergyService::setController(QLowEnergyControllerNewPrivate *control) +{ + Q_D(QLowEnergyService); + if (!control) + return; + + d->state = QLowEnergyService::DiscoveryRequired; + d->controller = control; +} + +/*! + \internal + + Called by Controller. + */ +void QLowEnergyService::setError(QLowEnergyService::ServiceError newError) +{ + Q_D(QLowEnergyService); + d->lastError = newError; + emit error(newError); +} + +void QLowEnergyService::setState(QLowEnergyService::ServiceState newState) +{ + Q_D(QLowEnergyService); + d->state = newState; + emit stateChanged(newState); } QLowEnergyService::~QLowEnergyService() @@ -117,7 +165,21 @@ QString QLowEnergyService::serviceName() const void QLowEnergyService::discoverDetails() { - //TODO discoverDetails + Q_D(QLowEnergyService); + if (d->state != QLowEnergyService::DiscoveryRequired) + return; + + if (!d->controller) { + setError(QLowEnergyService::ServiceNotValidError); + return; + } + + d->controller->discoverServiceDetails(d->uuid); +} + +QLowEnergyService::ServiceError QLowEnergyService::error() const +{ + return d_ptr->lastError; } |