summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/android
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@digia.com>2014-10-29 16:20:13 +0100
committerAlex Blasche <alexander.blasche@digia.com>2014-11-04 14:41:04 +0100
commit1688bbf5c7d4d24018688ee640494c842572d683 (patch)
treec0192722b59e9b9bc852b3b65a60157430ded2a3 /src/bluetooth/android
parentcc5a370e2daad34e05dde7c9c0854ea3bf4eb3fc (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.cpp2
-rw-r--r--src/bluetooth/android/lowenergynotificationhub.cpp19
-rw-r--r--src/bluetooth/android/lowenergynotificationhub_p.h3
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: