diff options
author | Alex Blasche <alexander.blasche@theqtcompany.com> | 2015-04-10 11:24:45 +0200 |
---|---|---|
committer | Alex Blasche <alexander.blasche@theqtcompany.com> | 2015-04-15 08:31:03 +0000 |
commit | 6bb265e12c1e59078da9e9190bb11f6ac957b2cd (patch) | |
tree | 3a9d01c6964b98bb1369a01e940d41bd241dc5d8 /src/bluetooth/android | |
parent | 2675df60727b9221d2800b6172fbc05ea5437af0 (diff) |
Android: Implement error reporting for char & desc reading
Change-Id: I5652075b4fde4d4927e86f5394baf176f263104f
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 a91b7c88..b4209500 100644 --- a/src/bluetooth/android/jni_android.cpp +++ b/src/bluetooth/android/jni_android.cpp @@ -215,6 +215,8 @@ static JNINativeMethod methods_le[] = { (void *) LowEnergyNotificationHub::lowEnergy_descriptorWritten}, {"leCharacteristicChanged", "(JI[B)V", (void *) LowEnergyNotificationHub::lowEnergy_characteristicChanged}, + {"leServiceError", "(JII)V", + (void *) LowEnergyNotificationHub::lowEnergy_serviceError}, }; static JNINativeMethod methods_server[] = { diff --git a/src/bluetooth/android/lowenergynotificationhub.cpp b/src/bluetooth/android/lowenergynotificationhub.cpp index 325178b2..9e95ece6 100644 --- a/src/bluetooth/android/lowenergynotificationhub.cpp +++ b/src/bluetooth/android/lowenergynotificationhub.cpp @@ -281,4 +281,19 @@ void LowEnergyNotificationHub::lowEnergy_characteristicChanged( Q_ARG(int, charHandle), Q_ARG(QByteArray, payload)); } +void LowEnergyNotificationHub::lowEnergy_serviceError( + JNIEnv *, jobject, jlong qtObject, jint attributeHandle, int errorCode) +{ + lock.lockForRead(); + LowEnergyNotificationHub *hub = hubMap()->value(qtObject); + lock.unlock(); + if (!hub) + return; + + QMetaObject::invokeMethod(hub, "serviceError", Qt::QueuedConnection, + Q_ARG(int, attributeHandle), + 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 b4c67b85..0395f9db 100644 --- a/src/bluetooth/android/lowenergynotificationhub_p.h +++ b/src/bluetooth/android/lowenergynotificationhub_p.h @@ -76,6 +76,8 @@ public: jint errorCode); static void lowEnergy_characteristicChanged(JNIEnv *, jobject, jlong qtObject, jint charHandle, jbyteArray data); + static void lowEnergy_serviceError(JNIEnv *, jobject, jlong qtObject, + jint attributeHandle, int errorCode); QAndroidJniObject javaObject() { @@ -98,6 +100,7 @@ signals: void descriptorWritten(int descHandle, const QByteArray &data, QLowEnergyService::ServiceError errorCode); void characteristicChanged(int charHandle, const QByteArray &data); + void serviceError(int attributeHandle, QLowEnergyService::ServiceError errorCode); public slots: private: |