diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2014-10-29 16:20:13 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@digia.com> | 2014-11-04 14:41:04 +0100 |
commit | 1688bbf5c7d4d24018688ee640494c842572d683 (patch) | |
tree | c0192722b59e9b9bc852b3b65a60157430ded2a3 /src/bluetooth/android | |
parent | cc5a370e2daad34e05dde7c9c0854ea3bf4eb3fc (diff) |
Discover BTLE services on remote device on Android
Change-Id: Ia39e2ad21b0e84cb16a355337370ba82a11b75d0
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'src/bluetooth/android')
-rw-r--r-- | src/bluetooth/android/jni_android.cpp | 2 | ||||
-rw-r--r-- | src/bluetooth/android/lowenergynotificationhub.cpp | 19 | ||||
-rw-r--r-- | src/bluetooth/android/lowenergynotificationhub_p.h | 3 |
3 files changed, 22 insertions, 2 deletions
diff --git a/src/bluetooth/android/jni_android.cpp b/src/bluetooth/android/jni_android.cpp index 6fffc018..6a293a4e 100644 --- a/src/bluetooth/android/jni_android.cpp +++ b/src/bluetooth/android/jni_android.cpp @@ -201,6 +201,8 @@ static JNINativeMethod methods_le[] = { (void *) QtBluetoothLE_leScanResult}, {"leConnectionStateChange", "(JII)V", (void *) LowEnergyNotificationHub::lowEnergy_connectionChange}, + {"leServicesDiscovered", "(JILjava/lang/String;)V", + (void *) LowEnergyNotificationHub::lowEnergy_servicesDiscovered}, }; static JNINativeMethod methods_server[] = { diff --git a/src/bluetooth/android/lowenergynotificationhub.cpp b/src/bluetooth/android/lowenergynotificationhub.cpp index d662cd5b..56c3eec7 100644 --- a/src/bluetooth/android/lowenergynotificationhub.cpp +++ b/src/bluetooth/android/lowenergynotificationhub.cpp @@ -91,8 +91,7 @@ LowEnergyNotificationHub::~LowEnergyNotificationHub() } // runs in Java thread -void LowEnergyNotificationHub::lowEnergy_connectionChange( - JNIEnv *, jobject, jlong qtObject, jint errorCode, jint newState) +void LowEnergyNotificationHub::lowEnergy_connectionChange(JNIEnv *, jobject, jlong qtObject, jint errorCode, jint newState) { lock.lockForRead(); LowEnergyNotificationHub *hub = hubMap()->value(qtObject); @@ -107,4 +106,20 @@ void LowEnergyNotificationHub::lowEnergy_connectionChange( (QLowEnergyController::Error)errorCode)); } +void LowEnergyNotificationHub::lowEnergy_servicesDiscovered( + JNIEnv *, jobject, jlong qtObject, jint errorCode, jobject uuidList) +{ + lock.lockForRead(); + LowEnergyNotificationHub *hub = hubMap()->value(qtObject); + lock.unlock(); + if (!hub) + return; + + const QString uuids = QAndroidJniObject(uuidList).toString(); + QMetaObject::invokeMethod(hub, "servicesDiscovered", Qt::QueuedConnection, + Q_ARG(QLowEnergyController::Error, + (QLowEnergyController::Error)errorCode), + Q_ARG(QString, uuids)); +} + QT_END_NAMESPACE diff --git a/src/bluetooth/android/lowenergynotificationhub_p.h b/src/bluetooth/android/lowenergynotificationhub_p.h index 68999a3e..0cd3b02d 100644 --- a/src/bluetooth/android/lowenergynotificationhub_p.h +++ b/src/bluetooth/android/lowenergynotificationhub_p.h @@ -55,6 +55,8 @@ public: static void lowEnergy_connectionChange(JNIEnv*, jobject, jlong qtObject, jint errorCode, jint newState); + static void lowEnergy_servicesDiscovered(JNIEnv*, jobject, jlong qtObject, + jint errorCode, jobject uuidList); QAndroidJniObject javaObject() { @@ -64,6 +66,7 @@ public: signals: void connectionUpdated(QLowEnergyController::ControllerState newState, QLowEnergyController::Error errorCode); + void servicesDiscovered(QLowEnergyController::Error errorCode, const QString &uuids); public slots: private: |