diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2014-11-06 15:46:03 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2014-11-10 08:38:10 +0100 |
commit | 9277a04640e488916b79a0dcbf818c7f1aa1510d (patch) | |
tree | b534a9f55da305c50bdda8cb9e29bb6831d324a1 /src/bluetooth/android | |
parent | 311eef287d658a376c80047aef942dfbf43eb889 (diff) |
Majority of service detail discovery code on Android
Primarily the change adds the required data structures and interfaces
on the Java side. What is missing is the reporting of the discovery
details back to Qt.
Change-Id: I37f2e17bb0f87b4c526f1b43a933b9b09b22be72
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@theqtcompany.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 | 15 | ||||
-rw-r--r-- | src/bluetooth/android/lowenergynotificationhub_p.h | 3 |
3 files changed, 20 insertions, 0 deletions
diff --git a/src/bluetooth/android/jni_android.cpp b/src/bluetooth/android/jni_android.cpp index 6a293a4e..5ae18161 100644 --- a/src/bluetooth/android/jni_android.cpp +++ b/src/bluetooth/android/jni_android.cpp @@ -203,6 +203,8 @@ static JNINativeMethod methods_le[] = { (void *) LowEnergyNotificationHub::lowEnergy_connectionChange}, {"leServicesDiscovered", "(JILjava/lang/String;)V", (void *) LowEnergyNotificationHub::lowEnergy_servicesDiscovered}, + {"leServiceDetailDiscoveryFinished", "(JLjava/lang/String;)V", + (void *) LowEnergyNotificationHub::lowEnergy_serviceDetailsDiscovered}, }; static JNINativeMethod methods_server[] = { diff --git a/src/bluetooth/android/lowenergynotificationhub.cpp b/src/bluetooth/android/lowenergynotificationhub.cpp index 56c3eec7..e009e5f7 100644 --- a/src/bluetooth/android/lowenergynotificationhub.cpp +++ b/src/bluetooth/android/lowenergynotificationhub.cpp @@ -122,4 +122,19 @@ void LowEnergyNotificationHub::lowEnergy_servicesDiscovered( Q_ARG(QString, uuids)); } +void LowEnergyNotificationHub::lowEnergy_serviceDetailsDiscovered( + JNIEnv *, jobject, jlong qtObject, jobject uuid) +{ + lock.lockForRead(); + LowEnergyNotificationHub *hub = hubMap()->value(qtObject); + lock.unlock(); + if (!hub) + return; + + const QString serviceUuid = QAndroidJniObject(uuid).toString(); + QMetaObject::invokeMethod(hub, "serviceDetailsDiscoveryFinished", + Qt::QueuedConnection, + Q_ARG(QString, serviceUuid)); +} + QT_END_NAMESPACE diff --git a/src/bluetooth/android/lowenergynotificationhub_p.h b/src/bluetooth/android/lowenergynotificationhub_p.h index 0cd3b02d..06c7b3ff 100644 --- a/src/bluetooth/android/lowenergynotificationhub_p.h +++ b/src/bluetooth/android/lowenergynotificationhub_p.h @@ -57,6 +57,8 @@ public: jint errorCode, jint newState); static void lowEnergy_servicesDiscovered(JNIEnv*, jobject, jlong qtObject, jint errorCode, jobject uuidList); + static void lowEnergy_serviceDetailsDiscovered(JNIEnv *, jobject, + jlong qtObject, jobject uuid); QAndroidJniObject javaObject() { @@ -67,6 +69,7 @@ signals: void connectionUpdated(QLowEnergyController::ControllerState newState, QLowEnergyController::Error errorCode); void servicesDiscovered(QLowEnergyController::Error errorCode, const QString &uuids); + void serviceDetailsDiscoveryFinished(const QString& serviceUuid); public slots: private: |