summaryrefslogtreecommitdiffstats
path: root/pbap.cpp
diff options
context:
space:
mode:
authorMatt Porter <mporter@konsulko.com>2018-06-12 12:18:02 -0400
committerMatt Porter <mporter@konsulko.com>2018-06-14 10:50:39 -0400
commitfc65716b43af6be84d42599d813d3d40df07d376 (patch)
treebc58677f302cb35e62e35dff3177bcafd775686e /pbap.cpp
parentbb1aee701bc3516c2072a79d3129ee83918df7fd (diff)
Add core Bluetooth PBAP support
Adds minimal Bluetooth PBAP message and models. Implements search invokable to support phone number to name lookup of incoming and originated calls. Bug-AGL: SPEC-1438 Change-Id: Ic5a68d933b5d6b4f4da3e4c8c5c5a0f59a93f34c Signed-off-by: Matt Porter <mporter@konsulko.com>
Diffstat (limited to 'pbap.cpp')
-rw-r--r--pbap.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/pbap.cpp b/pbap.cpp
new file mode 100644
index 0000000..a833b9f
--- /dev/null
+++ b/pbap.cpp
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2018 Konsulko Group
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "message.h"
+#include "messageengine.h"
+#include "pbap.h"
+#include "pbapmessage.h"
+#include "responsemessage.h"
+
+Pbap::Pbap (QUrl &url, QObject * parent) :
+ QObject(parent),
+ m_mloop(nullptr)
+{
+ m_mloop = new MessageEngine(url);
+ QObject::connect(m_mloop, &MessageEngine::messageReceived, this, &Pbap::onMessageReceived);
+}
+
+Pbap::~Pbap()
+{
+ delete m_mloop;
+}
+
+void Pbap::search(QString number)
+{
+ PbapMessage *tmsg = new PbapMessage();
+ QJsonObject parameter;
+
+ if (!number.isEmpty())
+ parameter.insert("number", number);
+ parameter.insert("max_entries", 1);
+
+ tmsg->createRequest("search", parameter);
+ m_mloop->sendMessage(tmsg);
+ tmsg->deleteLater();
+}
+
+void Pbap::sendSearchResults(QJsonArray results)
+{
+ QString name;
+
+ if (results.empty())
+ name = "Not Found";
+ else
+ name = results.at(0).toObject().value("name").toString();
+
+ emit searchResults(name);
+}
+
+void Pbap::onMessageReceived(MessageType type, Message *msg)
+{
+ if (msg->isReply() && type == ResponseRequestMessage) {
+ ResponseMessage *tmsg = qobject_cast<ResponseMessage*>(msg);
+
+ if (tmsg->requestVerb() == "search") {
+ sendSearchResults(tmsg->replyData().value("results").toArray());
+ }
+ }
+
+ msg->deleteLater();
+}