From 6534c1b9b0c76883cb4bc21b7709b8572c45ab91 Mon Sep 17 00:00:00 2001 From: Matt Ranostay Date: Fri, 20 Apr 2018 15:09:24 -0700 Subject: libqtappfw: bluetooth: add initial avrcp controls To allow the Mediaplayer application to control avrcp there needs to be a callable set_avrcp_controls() function Bug-AGL: SPEC-1385 Change-Id: I10d9cbaca5688548b8fb174754c19874e2357fab Signed-off-by: Matt Ranostay --- bluetooth.cpp | 22 ++++++++++++++++++++++ bluetooth.h | 4 ++++ 2 files changed, 26 insertions(+) diff --git a/bluetooth.cpp b/bluetooth.cpp index 377139c..3af6ac3 100644 --- a/bluetooth.cpp +++ b/bluetooth.cpp @@ -27,6 +27,9 @@ Bluetooth::Bluetooth (QUrl &url, QObject * parent) : QObject::connect(m_mloop, &MessageEngine::connected, this, &Bluetooth::onConnected); QObject::connect(m_mloop, &MessageEngine::disconnected, this, &Bluetooth::onDisconnected); QObject::connect(m_mloop, &MessageEngine::messageReceived, this, &Bluetooth::onMessageReceived); + + uuids.insert("a2dp", "0000110a-0000-1000-8000-00805f9b34fb"); + uuids.insert("avrcp", "0000110e-0000-1000-8000-00805f9b34fb"); } Bluetooth::~Bluetooth() @@ -109,6 +112,8 @@ void Bluetooth::connect(QString address, QString uuid) BluetoothMessage *tmsg = new BluetoothMessage(); QJsonObject parameter; + uuid = process_uuid(uuid); + parameter.insert("value", address); parameter.insert("uuid", uuid); tmsg->createRequest("connect", parameter); @@ -126,6 +131,8 @@ void Bluetooth::disconnect(QString address, QString uuid) BluetoothMessage *tmsg = new BluetoothMessage(); QJsonObject parameter; + uuid = process_uuid(uuid); + parameter.insert("value", address); parameter.insert("uuid", uuid); tmsg->createRequest("disconnect", parameter); @@ -143,6 +150,18 @@ void Bluetooth::send_confirmation() generic_command("send_confirmation", "yes"); } +void Bluetooth::set_avrcp_controls(QString address, QString cmd) +{ + BluetoothMessage *tmsg = new BluetoothMessage(); + QJsonObject parameter; + + parameter.insert("Address", address); + parameter.insert("value", cmd); + tmsg->createRequest("set_avrcp_controls", parameter); + m_mloop->sendMessage(tmsg); + tmsg->deleteLater(); +} + void Bluetooth::onConnected() { QStringListIterator eventIterator(events); @@ -159,6 +178,9 @@ void Bluetooth::onConnected() // get initial power state generic_command("power", QString()); + + // send initial list + generic_command("discovery_result", ""); } void Bluetooth::onDisconnected() diff --git a/bluetooth.h b/bluetooth.h index 0bce40f..41e1719 100644 --- a/bluetooth.h +++ b/bluetooth.h @@ -49,6 +49,7 @@ class Bluetooth : public QObject Q_INVOKABLE void disconnect(QString address); Q_INVOKABLE void send_confirmation(void); + Q_INVOKABLE void set_avrcp_controls(QString address, QString cmd); bool power() const { return m_power; }; bool discoverable() const { return m_discoverable; }; @@ -73,6 +74,7 @@ class Bluetooth : public QObject void onDisconnected(); void onMessageReceived(MessageType, Message*); + QString process_uuid(QString uuid) { if (uuid.length() == 36) return uuid; return uuids.value(uuid); }; bool isDiscoveryListResponse(Message *tmsg) { return (tmsg->replyInfo() == "BT - Scan Result is Displayed"); }; bool isPowerResponse(Message *tmsg) { return (tmsg->replyInfo() == "Radio - Power set"); }; @@ -80,6 +82,8 @@ class Bluetooth : public QObject bool m_power; bool m_discoverable; + QMap uuids; + const QStringList events { "connection", "request_confirmation", -- cgit 1.2.3-korg