diff options
author | Alex Blasche <alexander.blasche@theqtcompany.com> | 2014-11-12 10:39:04 +0100 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2014-11-14 08:46:04 +0100 |
commit | 26b5e44ffc7c33b258e6c3eb6bce340d51a4a377 (patch) | |
tree | 757fbd89fad2fc363ef3f4c991e4b00c10d07a08 /src/bluetooth/android | |
parent | cc94fad463e50f0f4ec110bacc098f4c4d4818d8 (diff) |
Support for QLEService::writeDescriptor() on Android
Change-Id: I1c7f0491506c6f0512d097a419660c5f5e7fb144
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 | 25 | ||||
-rw-r--r-- | src/bluetooth/android/lowenergynotificationhub_p.h | 5 |
3 files changed, 32 insertions, 0 deletions
diff --git a/src/bluetooth/android/jni_android.cpp b/src/bluetooth/android/jni_android.cpp index f98762b7..7eacd3bc 100644 --- a/src/bluetooth/android/jni_android.cpp +++ b/src/bluetooth/android/jni_android.cpp @@ -211,6 +211,8 @@ static JNINativeMethod methods_le[] = { (void *) LowEnergyNotificationHub::lowEnergy_descriptorRead}, {"leCharacteristicWritten", "(JI[BI)V", (void *) LowEnergyNotificationHub::lowEnergy_characteristicWritten}, + {"leDescriptorWritten", "(JI[BI)V", + (void *) LowEnergyNotificationHub::lowEnergy_descriptorWritten}, }; static JNINativeMethod methods_server[] = { diff --git a/src/bluetooth/android/lowenergynotificationhub.cpp b/src/bluetooth/android/lowenergynotificationhub.cpp index 4995dc0e..00ef4ff0 100644 --- a/src/bluetooth/android/lowenergynotificationhub.cpp +++ b/src/bluetooth/android/lowenergynotificationhub.cpp @@ -235,4 +235,29 @@ void LowEnergyNotificationHub::lowEnergy_characteristicWritten( (QLowEnergyService::ServiceError)errorCode)); } +void LowEnergyNotificationHub::lowEnergy_descriptorWritten( + JNIEnv *env, jobject, jlong qtObject, jint descHandle, + jbyteArray data, jint errorCode) +{ + lock.lockForRead(); + LowEnergyNotificationHub *hub = hubMap()->value(qtObject); + lock.unlock(); + if (!hub) + return; + + QByteArray payload; + if (data) { //empty Java byte array is 0x0 + jsize length = env->GetArrayLength(data); + payload.resize(length); + env->GetByteArrayRegion(data, 0, length, + reinterpret_cast<signed char*>(payload.data())); + } + + QMetaObject::invokeMethod(hub, "descriptorWritten", Qt::QueuedConnection, + Q_ARG(int, descHandle), + Q_ARG(QByteArray, payload), + Q_ARG(QLowEnergyService::ServiceError, + (QLowEnergyService::ServiceError)errorCode)); +} + QT_END_NAMESPACE diff --git a/src/bluetooth/android/lowenergynotificationhub_p.h b/src/bluetooth/android/lowenergynotificationhub_p.h index 49705799..b3399a8d 100644 --- a/src/bluetooth/android/lowenergynotificationhub_p.h +++ b/src/bluetooth/android/lowenergynotificationhub_p.h @@ -71,6 +71,9 @@ public: static void lowEnergy_characteristicWritten(JNIEnv *, jobject, jlong qtObject, jint charHandle, jbyteArray data, jint errorCode); + static void lowEnergy_descriptorWritten(JNIEnv *, jobject, jlong qtObject, + jint descHandle, jbyteArray data, + jint errorCode); QAndroidJniObject javaObject() { @@ -90,6 +93,8 @@ signals: int handle, const QBluetoothUuid &descUuid, const QByteArray &data); void characteristicWritten(int charHandle, const QByteArray &data, QLowEnergyService::ServiceError errorCode); + void descriptorWritten(int descHandle, const QByteArray &data, + QLowEnergyService::ServiceError errorCode); public slots: private: |