summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/android
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@theqtcompany.com>2015-04-10 11:24:45 +0200
committerAlex Blasche <alexander.blasche@theqtcompany.com>2015-04-15 08:31:03 +0000
commit6bb265e12c1e59078da9e9190bb11f6ac957b2cd (patch)
tree3a9d01c6964b98bb1369a01e940d41bd241dc5d8 /src/bluetooth/android
parent2675df60727b9221d2800b6172fbc05ea5437af0 (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.cpp2
-rw-r--r--src/bluetooth/android/lowenergynotificationhub.cpp15
-rw-r--r--src/bluetooth/android/lowenergynotificationhub_p.h3
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: