From 2c9af605274c5d348d71a856fef04a47dd4e0874 Mon Sep 17 00:00:00 2001 From: Raquel Medina Date: Mon, 13 Jul 2020 21:58:07 +0200 Subject: update bt power state if no adapter In case of no adapter, update 'powered' property to update status fed back to clients (i.e., if there's no adapter and the user enables bluetooth via settings slider, this patch provides the action to take the slider back to OFF position, without this fix it'd stay ON which can mislead the user's expectations). As SPEC-3301 has introduced changes to support the no adapter scenario, this patch is also delivered under this jira issue. Bug-AGL: SPEC-3301 Signed-off-by: Raquel Medina Change-Id: I4fcc98b2a7cbf4093d39dc54ac83d5217de7e5ff --- bluetooth/bluetooth.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/bluetooth/bluetooth.cpp b/bluetooth/bluetooth.cpp index fe1212f..82ef2f1 100644 --- a/bluetooth/bluetooth.cpp +++ b/bluetooth/bluetooth.cpp @@ -289,13 +289,21 @@ void Bluetooth::onMessageReceived(std::shared_ptr msg) } else if (ename == "agent") { emit requestConfirmationEvent(data); } - } else if (msg->isReply()) { std::shared_ptr rmsg = std::static_pointer_cast(msg); - //get api name QString verb = rmsg->requestVerb(); QJsonObject data = rmsg->replyData(); - if (verb == "managed_objects") { + if (rmsg->requestApi() != "Bluetooth-Manager") + return; + + if (rmsg->replyStatus() == "failed") { + qDebug() << "failed bt verb:" << verb; + if (rmsg->replyInfo().contains("No adapter")) { + m_power = false; + emit powerChanged(m_power); + } + } + else if (verb == "managed_objects") { populateDeviceList(data); } else if (verb == "adapter_state") { bool powered = data.value("powered").toBool(); -- cgit 1.2.3-korg