diff options
author | Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> | 2016-02-07 13:02:34 +0100 |
---|---|---|
committer | Timur Pocheptsov <timur.pocheptsov@theqtcompany.com> | 2016-03-13 11:56:46 +0000 |
commit | f51643a314af54400301bcb687829e258a857ac3 (patch) | |
tree | 911926af78e9e0db0e28a6c9a66aed8db8d1cf71 /src/bluetooth/qlowenergycontroller_osx_p.h | |
parent | 51e32a9f7972e31e65bccf36caa238ac245091e0 (diff) |
Add peripheral role (iOS/OS X).
CoreBluetooth has CBPeripheralManager/CBMutableService both on iOS (since 6.0) and OS X
(>= 10.9). This lets me implement the Qt's BTLE 'advertisement'
API and peripheral role for both iOS and OS X.
Change-Id: I3e69a5870535a45bc16bbd9862ca84300b01daca
Reviewed-by: Timur Pocheptsov <timur.pocheptsov@theqtcompany.com>
Diffstat (limited to 'src/bluetooth/qlowenergycontroller_osx_p.h')
-rw-r--r-- | src/bluetooth/qlowenergycontroller_osx_p.h | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/bluetooth/qlowenergycontroller_osx_p.h b/src/bluetooth/qlowenergycontroller_osx_p.h index 853e1f9b..f6e2a03e 100644 --- a/src/bluetooth/qlowenergycontroller_osx_p.h +++ b/src/bluetooth/qlowenergycontroller_osx_p.h @@ -51,6 +51,7 @@ // We mean it. // +#include "osx/osxbtperipheralmanager_p.h" #include "qlowenergyserviceprivate_p.h" #include "osx/osxbtcentralmanager_p.h" #include "qlowenergycontroller_p.h" @@ -61,6 +62,7 @@ #include "qbluetoothuuid.h" #include <QtCore/qsharedpointer.h> +#include <QtCore/qsysinfo.h> #include <QtCore/qglobal.h> #include <QtCore/qstring.h> #include <QtCore/qmap.h> @@ -70,13 +72,13 @@ QT_BEGIN_NAMESPACE namespace OSXBluetooth { -class LECentralNotifier; +class LECBManagerNotifier; } class QByteArray; -// While suffix 'OSX', it's also for iOS. +// Suffix 'OSX' is a legacy, it's also iOS. class QLowEnergyControllerPrivateOSX : public QLowEnergyControllerPrivate { friend class QLowEnergyController; @@ -84,9 +86,8 @@ class QLowEnergyControllerPrivateOSX : public QLowEnergyControllerPrivate Q_OBJECT public: - QLowEnergyControllerPrivateOSX(QLowEnergyController *q); - QLowEnergyControllerPrivateOSX(QLowEnergyController *q, - const QBluetoothDeviceInfo &uuid); + QLowEnergyControllerPrivateOSX(QLowEnergyController::Role role, QLowEnergyController *q, + const QBluetoothDeviceInfo &info = QBluetoothDeviceInfo()); ~QLowEnergyControllerPrivateOSX(); bool isValid() const; @@ -105,18 +106,15 @@ private Q_SLOTS: void _q_descriptorWritten(QLowEnergyHandle charHandle, const QByteArray &value); void _q_LEnotSupported(); - void _q_CBCentralManagerError(QLowEnergyController::Error error); - void _q_CBCentralManagerError(const QBluetoothUuid &serviceUuid, QLowEnergyController::Error error); - void _q_CBCentralManagerError(const QBluetoothUuid &serviceUuid, QLowEnergyService::ServiceError error); + void _q_CBManagerError(QLowEnergyController::Error error); + void _q_CBManagerError(const QBluetoothUuid &serviceUuid, QLowEnergyController::Error error); + void _q_CBManagerError(const QBluetoothUuid &serviceUuid, QLowEnergyService::ServiceError error); private: void connectToDevice(); void discoverServices(); void discoverServiceDetails(const QBluetoothUuid &serviceUuid); - // TODO: all these read/write /setNotify can be simplified - - // by just passing either characteristic or descriptor (that - // has all needed information - service, handle, etc.). void setNotifyValue(QSharedPointer<QLowEnergyServicePrivate> service, QLowEnergyHandle charHandle, const QByteArray &newValue); @@ -149,7 +147,7 @@ private: void setErrorDescription(QLowEnergyController::Error errorCode); void invalidateServices(); - bool connectSlots(OSXBluetooth::LECentralNotifier *notifier); + bool connectSlots(OSXBluetooth::LECBManagerNotifier *notifier); QLowEnergyController *q_ptr; QBluetoothUuid deviceUuid; @@ -170,6 +168,10 @@ private: typedef OSXBluetooth::ObjCScopedPointer<ObjCCentralManager> CentralManager; CentralManager centralManager; + typedef QT_MANGLE_NAMESPACE(OSXBTPeripheralManager) ObjCPeripheralManager; + typedef OSXBluetooth::ObjCScopedPointer<ObjCPeripheralManager> PeripheralManager; + PeripheralManager peripheralManager; + typedef QMap<QBluetoothUuid, QSharedPointer<QLowEnergyServicePrivate> > ServiceMap; typedef ServiceMap::const_iterator ConstServiceIterator; typedef ServiceMap::iterator ServiceIterator; |