summaryrefslogtreecommitdiffstats
path: root/src/bluetooth/qlowenergycontroller_android.cpp
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@qt.io>2016-10-05 14:36:45 +0200
committerAlex Blasche <alexander.blasche@qt.io>2017-01-23 07:16:11 +0000
commitf889b44788085f5c40c7923729913762ba9460b7 (patch)
treedcff5fa4dbb324d00ea7538fb9f6a24084f4122c /src/bluetooth/qlowenergycontroller_android.cpp
parentd3ef813db155158c9edbd3eed983da980431b21e (diff)
Connect QtBluetoothLEServer class to Qt's QLowEnergyController API
Change-Id: I4403a9d5c79fae2c6bbe9c478660ead01dc16fe4 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
Diffstat (limited to 'src/bluetooth/qlowenergycontroller_android.cpp')
-rw-r--r--src/bluetooth/qlowenergycontroller_android.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/bluetooth/qlowenergycontroller_android.cpp b/src/bluetooth/qlowenergycontroller_android.cpp
index 0ebe7564..cb49188c 100644
--- a/src/bluetooth/qlowenergycontroller_android.cpp
+++ b/src/bluetooth/qlowenergycontroller_android.cpp
@@ -56,6 +56,10 @@ QLowEnergyControllerPrivate::QLowEnergyControllerPrivate()
QLowEnergyControllerPrivate::~QLowEnergyControllerPrivate()
{
+ if (role == QLowEnergyController::PeripheralRole) {
+ if (hub)
+ hub->javaObject().callMethod<void>("disconnectServer");
+ }
}
void QLowEnergyControllerPrivate::init()
@@ -630,12 +634,27 @@ void QLowEnergyControllerPrivate::startAdvertising(const QLowEnergyAdvertisingPa
Q_UNUSED(params);
Q_UNUSED(advertisingData);
Q_UNUSED(scanResponseData);
- qCWarning(QT_BT_ANDROID) << "LE advertising not implemented for Android";
+
+ setState(QLowEnergyController::AdvertisingState);
+
+ if (!hub->javaObject().isValid()) {
+ qCWarning(QT_BT_ANDROID) << "Cannot initiate QtBluetoothLEServer";
+ setError(QLowEnergyController::AdvertisingError);
+ setState(QLowEnergyController::UnconnectedState);
+ return;
+ }
+
+ const bool result = hub->javaObject().callMethod<jboolean>("startAdvertising");
+ if (!result) {
+ setError(QLowEnergyController::AdvertisingError);
+ setState(QLowEnergyController::UnconnectedState);
+ }
}
void QLowEnergyControllerPrivate::stopAdvertising()
{
- qCWarning(QT_BT_ANDROID) << "LE advertising not implemented for Android";
+ setState(QLowEnergyController::UnconnectedState);
+ hub->javaObject().callMethod<void>("stopAdvertising");
}
void QLowEnergyControllerPrivate::requestConnectionUpdate(const QLowEnergyConnectionParameters &params)