summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2017-10-27 12:01:53 +0200
committerAlex Blasche <alexander.blasche@qt.io>2017-11-03 13:09:01 +0000
commit47c861fd35c284d4e857ece6633992777a45da74 (patch)
treef8b930ffd7f16ea54947b8ee1dd0c4436b4444c3 /src
parent202ec439d21456a318ed93c4bd1e6ba6f6460d59 (diff)
Provide UWP specific header for QLEControllerPrivate
Change-Id: Ic2ee2a76e2da4c236415f1eb3b98ab642ee3d1fc Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/bluetooth/bluetooth.pro3
-rw-r--r--src/bluetooth/qlowenergycharacteristic.h1
-rw-r--r--src/bluetooth/qlowenergycontroller.cpp10
-rw-r--r--src/bluetooth/qlowenergycontroller_p.h38
-rw-r--r--src/bluetooth/qlowenergycontroller_winrt.cpp44
-rw-r--r--src/bluetooth/qlowenergycontroller_winrt_p.h172
-rw-r--r--src/bluetooth/qlowenergydescriptor.h1
-rw-r--r--src/bluetooth/qlowenergyservice.h1
8 files changed, 210 insertions, 60 deletions
diff --git a/src/bluetooth/bluetooth.pro b/src/bluetooth/bluetooth.pro
index 378a7d00..33dbfc4d 100644
--- a/src/bluetooth/bluetooth.pro
+++ b/src/bluetooth/bluetooth.pro
@@ -229,6 +229,9 @@ qtConfig(bluez) {
qbluetoothsocket_winrt.cpp \
qlowenergycontroller_winrt.cpp
+ PRIVATE_HEADERS -= qlowenergycontroller_p.h
+ PRIVATE_HEADERS += qlowenergycontroller_winrt_p.h
+
lessThan(WINDOWS_SDK_VERSION, 14393) {
DEFINES += QT_WINRT_LIMITED_SERVICEDISCOVERY
DEFINES += QT_UCRTVERSION=$$WINDOWS_SDK_VERSION
diff --git a/src/bluetooth/qlowenergycharacteristic.h b/src/bluetooth/qlowenergycharacteristic.h
index c6d54f8e..f36de9ff 100644
--- a/src/bluetooth/qlowenergycharacteristic.h
+++ b/src/bluetooth/qlowenergycharacteristic.h
@@ -101,6 +101,7 @@ protected:
friend class QLowEnergyControllerPrivateBluez;
friend class QLowEnergyControllerPrivateCommon;
friend class QLowEnergyControllerPrivateOSX;
+ friend class QLowEnergyControllerPrivateWinRT;
QLowEnergyCharacteristicPrivate *data;
QLowEnergyCharacteristic(QSharedPointer<QLowEnergyServicePrivate> p,
QLowEnergyHandle handle);
diff --git a/src/bluetooth/qlowenergycontroller.cpp b/src/bluetooth/qlowenergycontroller.cpp
index b79c22e5..af6a557d 100644
--- a/src/bluetooth/qlowenergycontroller.cpp
+++ b/src/bluetooth/qlowenergycontroller.cpp
@@ -54,6 +54,8 @@
#include "qlowenergycontroller_bluez_p.h"
#elif defined(QT_ANDROID_BLUETOOTH)
#include "qlowenergycontroller_android_p.h"
+#elif defined(QT_WINRT_BLUETOOTH)
+#include "qlowenergycontroller_winrt_p.h"
#else
#include "qlowenergycontroller_p.h"
#endif
@@ -312,6 +314,8 @@ QLowEnergyController::QLowEnergyController(
d_ptr = new QLowEnergyControllerPrivateBluez();
#elif defined(QT_ANDROID_BLUETOOTH)
d_ptr = new QLowEnergyControllerPrivateAndroid();
+#elif defined(QT_WINRT_BLUETOOTH)
+ d_ptr = new QLowEnergyControllerPrivateWinRT();
#else
d_ptr = new QLowEnergyControllerPrivateCommon();
#endif
@@ -351,6 +355,8 @@ QLowEnergyController::QLowEnergyController(
d_ptr = new QLowEnergyControllerPrivateBluez();
#elif defined(QT_ANDROID_BLUETOOTH)
d_ptr = new QLowEnergyControllerPrivateAndroid();
+#elif defined(QT_WINRT_BLUETOOTH)
+ d_ptr = new QLowEnergyControllerPrivateWinRT();
#else
d_ptr = new QLowEnergyControllerPrivateCommon();
#endif
@@ -393,6 +399,8 @@ QLowEnergyController::QLowEnergyController(
d_ptr = new QLowEnergyControllerPrivateBluez();
#elif defined(QT_ANDROID_BLUETOOTH)
d_ptr = new QLowEnergyControllerPrivateAndroid();
+#elif defined(QT_WINRT_BLUETOOTH)
+ d_ptr = new QLowEnergyControllerPrivateWinRT();
#else
d_ptr = new QLowEnergyControllerPrivateCommon();
#endif
@@ -447,6 +455,8 @@ QLowEnergyController::QLowEnergyController(QObject *parent)
d_ptr = new QLowEnergyControllerPrivateBluez();
#elif defined(QT_ANDROID_BLUETOOTH)
d_ptr = new QLowEnergyControllerPrivateAndroid();
+#elif defined(QT_WINRT_BLUETOOTH)
+ d_ptr = new QLowEnergyControllerPrivateWinRT();
#else
d_ptr = new QLowEnergyControllerPrivateCommon();
#endif
diff --git a/src/bluetooth/qlowenergycontroller_p.h b/src/bluetooth/qlowenergycontroller_p.h
index db34c344..b02baaee 100644
--- a/src/bluetooth/qlowenergycontroller_p.h
+++ b/src/bluetooth/qlowenergycontroller_p.h
@@ -77,11 +77,6 @@ QT_END_NAMESPACE
#include "qlowenergycontroller.h"
#include "qlowenergycontrollerbase_p.h"
-#if defined(QT_WINRT_BLUETOOTH)
-#include <wrl.h>
-#include <windows.devices.bluetooth.h>
-#endif
-
#include <functional>
QT_BEGIN_NAMESPACE
@@ -152,39 +147,6 @@ public:
int maxLength;
};
QVector<Attribute> localAttributes;
-
-private:
-
-#if defined(QT_WINRT_BLUETOOTH)
-private slots:
- void characteristicChanged(int charHandle, const QByteArray &data);
-
-private:
- Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::IBluetoothLEDevice> mDevice;
- EventRegistrationToken mStatusChangedToken;
- struct ValueChangedEntry {
- ValueChangedEntry() {}
- ValueChangedEntry(Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic> c,
- EventRegistrationToken t)
- : characteristic(c)
- , token(t)
- {
- }
-
- Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic> characteristic;
- EventRegistrationToken token;
- };
- QVector<ValueChangedEntry> mValueChangedTokens;
-
- Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService> getNativeService(const QBluetoothUuid &serviceUuid);
- Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic> getNativeCharacteristic(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid);
-
- void registerForValueChanges(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid);
-
- void obtainIncludedServices(QSharedPointer<QLowEnergyServicePrivate> servicePointer,
- Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService> nativeService);
-#endif
-
};
Q_DECLARE_TYPEINFO(QLowEnergyControllerPrivateCommon::Attribute, Q_MOVABLE_TYPE);
diff --git a/src/bluetooth/qlowenergycontroller_winrt.cpp b/src/bluetooth/qlowenergycontroller_winrt.cpp
index f9d31eba..d360f13f 100644
--- a/src/bluetooth/qlowenergycontroller_winrt.cpp
+++ b/src/bluetooth/qlowenergycontroller_winrt.cpp
@@ -37,7 +37,7 @@
**
****************************************************************************/
-#include "qlowenergycontroller_p.h"
+#include "qlowenergycontroller_winrt_p.h"
#include <QtBluetooth/QLowEnergyCharacteristicData>
#include <QtBluetooth/QLowEnergyDescriptorData>
@@ -277,7 +277,7 @@ signals:
QLowEnergyHandle startHandle, QLowEnergyHandle endHandle);
};
-QLowEnergyControllerPrivateCommon::QLowEnergyControllerPrivateCommon()
+QLowEnergyControllerPrivateWinRT::QLowEnergyControllerPrivateWinRT()
: QLowEnergyControllerPrivate()
{
qCDebug(QT_BT_WINRT) << __FUNCTION__;
@@ -286,7 +286,7 @@ QLowEnergyControllerPrivateCommon::QLowEnergyControllerPrivateCommon()
qRegisterMetaType<QLowEnergyDescriptor>();
}
-QLowEnergyControllerPrivateCommon::~QLowEnergyControllerPrivateCommon()
+QLowEnergyControllerPrivateWinRT::~QLowEnergyControllerPrivateWinRT()
{
if (mDevice && mStatusChangedToken.value)
mDevice->remove_ConnectionStatusChanged(mStatusChangedToken);
@@ -296,11 +296,11 @@ QLowEnergyControllerPrivateCommon::~QLowEnergyControllerPrivateCommon()
entry.characteristic->remove_ValueChanged(entry.token);
}
-void QLowEnergyControllerPrivateCommon::init()
+void QLowEnergyControllerPrivateWinRT::init()
{
}
-void QLowEnergyControllerPrivateCommon::connectToDevice()
+void QLowEnergyControllerPrivateWinRT::connectToDevice()
{
qCDebug(QT_BT_WINRT) << __FUNCTION__;
Q_Q(QLowEnergyController);
@@ -418,7 +418,7 @@ void QLowEnergyControllerPrivateCommon::connectToDevice()
}
}
-void QLowEnergyControllerPrivateCommon::disconnectFromDevice()
+void QLowEnergyControllerPrivateWinRT::disconnectFromDevice()
{
qCDebug(QT_BT_WINRT) << __FUNCTION__;
Q_Q(QLowEnergyController);
@@ -430,7 +430,7 @@ void QLowEnergyControllerPrivateCommon::disconnectFromDevice()
}
}
-ComPtr<IGattDeviceService> QLowEnergyControllerPrivateCommon::getNativeService(const QBluetoothUuid &serviceUuid)
+ComPtr<IGattDeviceService> QLowEnergyControllerPrivateWinRT::getNativeService(const QBluetoothUuid &serviceUuid)
{
ComPtr<IGattDeviceService> deviceService;
HRESULT hr;
@@ -440,7 +440,7 @@ ComPtr<IGattDeviceService> QLowEnergyControllerPrivateCommon::getNativeService(c
return deviceService;
}
-ComPtr<IGattCharacteristic> QLowEnergyControllerPrivateCommon::getNativeCharacteristic(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid)
+ComPtr<IGattCharacteristic> QLowEnergyControllerPrivateWinRT::getNativeCharacteristic(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid)
{
ComPtr<IGattDeviceService> service = getNativeService(serviceUuid);
if (!service)
@@ -455,7 +455,7 @@ ComPtr<IGattCharacteristic> QLowEnergyControllerPrivateCommon::getNativeCharacte
return characteristic;
}
-void QLowEnergyControllerPrivateCommon::registerForValueChanges(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid)
+void QLowEnergyControllerPrivateWinRT::registerForValueChanges(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid)
{
qCDebug(QT_BT_WINRT) << "Registering characteristic" << charUuid << "in service"
<< serviceUuid << "for value changes";
@@ -488,7 +488,7 @@ void QLowEnergyControllerPrivateCommon::registerForValueChanges(const QBluetooth
<< serviceUuid << "registered for value changes";
}
-void QLowEnergyControllerPrivateCommon::obtainIncludedServices(QSharedPointer<QLowEnergyServicePrivate> servicePointer,
+void QLowEnergyControllerPrivateWinRT::obtainIncludedServices(QSharedPointer<QLowEnergyServicePrivate> servicePointer,
ComPtr<IGattDeviceService> service)
{
Q_Q(QLowEnergyController);
@@ -530,7 +530,7 @@ void QLowEnergyControllerPrivateCommon::obtainIncludedServices(QSharedPointer<QL
}
}
-void QLowEnergyControllerPrivateCommon::discoverServices()
+void QLowEnergyControllerPrivateWinRT::discoverServices()
{
Q_Q(QLowEnergyController);
@@ -572,7 +572,7 @@ void QLowEnergyControllerPrivateCommon::discoverServices()
emit q->discoveryFinished();
}
-void QLowEnergyControllerPrivateCommon::discoverServiceDetails(const QBluetoothUuid &service)
+void QLowEnergyControllerPrivateWinRT::discoverServiceDetails(const QBluetoothUuid &service)
{
qCDebug(QT_BT_WINRT) << __FUNCTION__ << service;
if (!serviceList.contains(service)) {
@@ -657,22 +657,22 @@ void QLowEnergyControllerPrivateCommon::discoverServiceDetails(const QBluetoothU
thread->start();
}
-void QLowEnergyControllerPrivateCommon::startAdvertising(const QLowEnergyAdvertisingParameters &, const QLowEnergyAdvertisingData &, const QLowEnergyAdvertisingData &)
+void QLowEnergyControllerPrivateWinRT::startAdvertising(const QLowEnergyAdvertisingParameters &, const QLowEnergyAdvertisingData &, const QLowEnergyAdvertisingData &)
{
Q_UNIMPLEMENTED();
}
-void QLowEnergyControllerPrivateCommon::stopAdvertising()
+void QLowEnergyControllerPrivateWinRT::stopAdvertising()
{
Q_UNIMPLEMENTED();
}
-void QLowEnergyControllerPrivateCommon::requestConnectionUpdate(const QLowEnergyConnectionParameters &)
+void QLowEnergyControllerPrivateWinRT::requestConnectionUpdate(const QLowEnergyConnectionParameters &)
{
Q_UNIMPLEMENTED();
}
-void QLowEnergyControllerPrivateCommon::readCharacteristic(const QSharedPointer<QLowEnergyServicePrivate> service,
+void QLowEnergyControllerPrivateWinRT::readCharacteristic(const QSharedPointer<QLowEnergyServicePrivate> service,
const QLowEnergyHandle charHandle)
{
qCDebug(QT_BT_WINRT) << __FUNCTION__ << service << charHandle;
@@ -730,7 +730,7 @@ void QLowEnergyControllerPrivateCommon::readCharacteristic(const QSharedPointer<
Q_ASSERT_SUCCEEDED(hr);
}
-void QLowEnergyControllerPrivateCommon::readDescriptor(const QSharedPointer<QLowEnergyServicePrivate> service,
+void QLowEnergyControllerPrivateWinRT::readDescriptor(const QSharedPointer<QLowEnergyServicePrivate> service,
const QLowEnergyHandle charHandle,
const QLowEnergyHandle descHandle)
{
@@ -855,7 +855,7 @@ void QLowEnergyControllerPrivateCommon::readDescriptor(const QSharedPointer<QLow
Q_ASSERT_SUCCEEDED(hr);
}
-void QLowEnergyControllerPrivateCommon::writeCharacteristic(const QSharedPointer<QLowEnergyServicePrivate> service,
+void QLowEnergyControllerPrivateWinRT::writeCharacteristic(const QSharedPointer<QLowEnergyServicePrivate> service,
const QLowEnergyHandle charHandle,
const QByteArray &newValue,
QLowEnergyService::WriteMode mode)
@@ -938,7 +938,7 @@ void QLowEnergyControllerPrivateCommon::writeCharacteristic(const QSharedPointer
Q_ASSERT_SUCCEEDED(hr);
}
-void QLowEnergyControllerPrivateCommon::writeDescriptor(
+void QLowEnergyControllerPrivateWinRT::writeDescriptor(
const QSharedPointer<QLowEnergyServicePrivate> service,
const QLowEnergyHandle charHandle,
const QLowEnergyHandle descHandle,
@@ -1077,12 +1077,12 @@ void QLowEnergyControllerPrivateCommon::writeDescriptor(
}
-void QLowEnergyControllerPrivateCommon::addToGenericAttributeList(const QLowEnergyServiceData &, QLowEnergyHandle)
+void QLowEnergyControllerPrivateWinRT::addToGenericAttributeList(const QLowEnergyServiceData &, QLowEnergyHandle)
{
Q_UNIMPLEMENTED();
}
-void QLowEnergyControllerPrivateCommon::characteristicChanged(
+void QLowEnergyControllerPrivateWinRT::characteristicChanged(
int charHandle, const QByteArray &data)
{
QSharedPointer<QLowEnergyServicePrivate> service =
@@ -1107,7 +1107,7 @@ void QLowEnergyControllerPrivateCommon::characteristicChanged(
emit service->characteristicChanged(characteristic, data);
}
-QLowEnergyService *QLowEnergyControllerPrivateCommon::addServiceHelper(
+QLowEnergyService *QLowEnergyControllerPrivateWinRT::addServiceHelper(
const QLowEnergyServiceData &service)
{
// Spec says services "should" be grouped by uuid length (16-bit first, then 128-bit).
diff --git a/src/bluetooth/qlowenergycontroller_winrt_p.h b/src/bluetooth/qlowenergycontroller_winrt_p.h
new file mode 100644
index 00000000..33e3e3ff
--- /dev/null
+++ b/src/bluetooth/qlowenergycontroller_winrt_p.h
@@ -0,0 +1,172 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the QtBluetooth module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 3 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL3 included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 3 requirements
+** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 2.0 or (at your option) the GNU General
+** Public license version 3 or any later version approved by the KDE Free
+** Qt Foundation. The licenses are as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-2.0.html and
+** https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QLOWENERGYCONTROLLERPRIVATEWINRT_P_H
+#define QLOWENERGYCONTROLLERPRIVATEWINRT_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <qglobal.h>
+#include <QtCore/QQueue>
+#include <QtCore/QVector>
+#include <QtBluetooth/qbluetooth.h>
+#include <QtBluetooth/qlowenergycharacteristic.h>
+#include <QtBluetooth/qlowenergyservicedata.h>
+#include "qlowenergycontroller.h"
+#include "qlowenergycontrollerbase_p.h"
+
+#include <wrl.h>
+#include <windows.devices.bluetooth.h>
+
+#include <functional>
+
+QT_BEGIN_NAMESPACE
+
+class QLowEnergyServiceData;
+class QTimer;
+class QWinRTLowEnergyServiceHandler;
+
+extern void registerQLowEnergyControllerMetaType();
+
+class QLowEnergyControllerPrivateWinRT : public QLowEnergyControllerPrivate
+{
+ Q_OBJECT
+public:
+ QLowEnergyControllerPrivateWinRT();
+ ~QLowEnergyControllerPrivateWinRT();
+
+ void init() override;
+
+ void connectToDevice() override;
+ void disconnectFromDevice() override;
+
+ void discoverServices() override;
+ void discoverServiceDetails(const QBluetoothUuid &service) override;
+
+ void startAdvertising(const QLowEnergyAdvertisingParameters &params,
+ const QLowEnergyAdvertisingData &advertisingData,
+ const QLowEnergyAdvertisingData &scanResponseData) override;
+ void stopAdvertising() override;
+
+ void requestConnectionUpdate(const QLowEnergyConnectionParameters &params) override;
+
+ // misc helpers
+ QLowEnergyService *addServiceHelper(const QLowEnergyServiceData &service) override;
+
+ // read data
+ void readCharacteristic(const QSharedPointer<QLowEnergyServicePrivate> service,
+ const QLowEnergyHandle charHandle) override;
+ void readDescriptor(const QSharedPointer<QLowEnergyServicePrivate> service,
+ const QLowEnergyHandle charHandle,
+ const QLowEnergyHandle descriptorHandle) override;
+
+ // write data
+ void writeCharacteristic(const QSharedPointer<QLowEnergyServicePrivate> service,
+ const QLowEnergyHandle charHandle,
+ const QByteArray &newValue, QLowEnergyService::WriteMode mode) override;
+ void writeDescriptor(const QSharedPointer<QLowEnergyServicePrivate> service,
+ const QLowEnergyHandle charHandle,
+ const QLowEnergyHandle descriptorHandle,
+ const QByteArray &newValue) override;
+
+ void addToGenericAttributeList(const QLowEnergyServiceData &service,
+ QLowEnergyHandle startHandle) override;
+
+
+ QLowEnergyHandle lastLocalHandle;
+
+ struct Attribute {
+ Attribute() : handle(0) {}
+
+ QLowEnergyHandle handle;
+ QLowEnergyHandle groupEndHandle;
+ QLowEnergyCharacteristic::PropertyTypes properties;
+ QBluetooth::AttAccessConstraints readConstraints;
+ QBluetooth::AttAccessConstraints writeConstraints;
+ QBluetoothUuid type;
+ QByteArray value;
+ int minLength;
+ int maxLength;
+ };
+ QVector<Attribute> localAttributes;
+
+private slots:
+ void characteristicChanged(int charHandle, const QByteArray &data);
+
+private:
+ Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::IBluetoothLEDevice> mDevice;
+ EventRegistrationToken mStatusChangedToken;
+ struct ValueChangedEntry {
+ ValueChangedEntry() {}
+ ValueChangedEntry(Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic> c,
+ EventRegistrationToken t)
+ : characteristic(c)
+ , token(t)
+ {
+ }
+
+ Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic> characteristic;
+ EventRegistrationToken token;
+ };
+ QVector<ValueChangedEntry> mValueChangedTokens;
+
+ Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService> getNativeService(const QBluetoothUuid &serviceUuid);
+ Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic> getNativeCharacteristic(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid);
+
+ void registerForValueChanges(const QBluetoothUuid &serviceUuid, const QBluetoothUuid &charUuid);
+
+ void obtainIncludedServices(QSharedPointer<QLowEnergyServicePrivate> servicePointer,
+ Microsoft::WRL::ComPtr<ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService> nativeService);
+
+};
+
+Q_DECLARE_TYPEINFO(QLowEnergyControllerPrivateWinRT::Attribute, Q_MOVABLE_TYPE);
+
+QT_END_NAMESPACE
+
+#endif // QLOWENERGYCONTROLLERPRIVATEWINRT_P_H
diff --git a/src/bluetooth/qlowenergydescriptor.h b/src/bluetooth/qlowenergydescriptor.h
index fd37498d..aba2ef61 100644
--- a/src/bluetooth/qlowenergydescriptor.h
+++ b/src/bluetooth/qlowenergydescriptor.h
@@ -83,6 +83,7 @@ protected:
friend class QLowEnergyControllerPrivateBluez;
friend class QLowEnergyControllerPrivateCommon;
friend class QLowEnergyControllerPrivateOSX;
+ friend class QLowEnergyControllerPrivateWinRT;
QLowEnergyDescriptorPrivate *data;
QLowEnergyDescriptor(QSharedPointer<QLowEnergyServicePrivate> p,
diff --git a/src/bluetooth/qlowenergyservice.h b/src/bluetooth/qlowenergyservice.h
index 233e08b0..23545b11 100644
--- a/src/bluetooth/qlowenergyservice.h
+++ b/src/bluetooth/qlowenergyservice.h
@@ -137,6 +137,7 @@ private:
friend class QLowEnergyControllerPrivateAndroid;
friend class QLowEnergyControllerPrivateBluez;
friend class QLowEnergyControllerPrivateCommon;
+ friend class QLowEnergyControllerPrivateWinRT;
QLowEnergyService(QSharedPointer<QLowEnergyServicePrivate> p,
QObject *parent = nullptr);
};