summaryrefslogtreecommitdiffstats
path: root/navigation
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2021-12-16 15:07:44 -0500
committerScott Murray <scott.murray@konsulko.com>2021-12-16 16:03:51 -0500
commitfad93b42c285ffb463e9494070f40d3b339d732f (patch)
tree6ae60914c578bd34b8ebbde9b271859e8b87ab65 /navigation
parentfe20f1b029f67dee1f790ade7a9114086f2abd38 (diff)
Initial rework to replace app framework usage
Changes: - Remove "core" code related to WebSocket messaging for the app framework. - Stub out hvac, navigation, network, and weather interfaces. This allows building several of the demo applications without modification for now. The network interface will definitely be reused to plumb in a new connman-glib library derived from the previous network binding. The others may potentially be reused to plumb in other new backend implementations. - Update the Network interface object constructor arguments to add a agent registration flag. This prepares for the connman-glib switch and means users will not need to be updated twice. - Update the Bluetooth interface to use a new bluez-glib library that is derived from the previous Bluetooth binding. This has been successfully tested with a the Settings application. - Remove signal-composer and voice API interface code as there are no direct replacements planned. The signal-composer interface was effectively exposing the binding events, so has little reuse potential with a new backend. For the voice interface, if some form of Alexa support becomes desirable, it can potentially be brought back for adaptation if required. - Disable compilation of the remaining interfaces for now. Some like map, pbap, and mediaplayer are very likely to be used as the basis for updating their associated applications, so keeping the code for the planned iterative development seems easier. - Updated copyright lines in all touched files. Bug-AGL: SPEC-4182 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Ib717ac8ac68ec457eaee74755dcf9d4f36b79d12
Diffstat (limited to 'navigation')
-rw-r--r--navigation/CMakeLists.txt2
-rw-r--r--navigation/navigation.cpp113
-rw-r--r--navigation/navigation.h11
3 files changed, 5 insertions, 121 deletions
diff --git a/navigation/CMakeLists.txt b/navigation/CMakeLists.txt
index bb972e0..6264623 100644
--- a/navigation/CMakeLists.txt
+++ b/navigation/CMakeLists.txt
@@ -8,7 +8,7 @@ add_library(qtappfw-navigation SHARED navigation.cpp)
target_include_directories(qtappfw-navigation PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}")
target_include_directories(qtappfw-navigation PUBLIC "${CMAKE_INSTALL_INCLUDEDIR}")
-target_link_libraries(qtappfw-navigation qtappfw-core)
+target_link_libraries(qtappfw-navigation Qt5::Qml)
set_target_properties(qtappfw-navigation PROPERTIES
VERSION ${PROJECT_VERSION}
SOVERSION 1
diff --git a/navigation/navigation.cpp b/navigation/navigation.cpp
index e24df1a..6116637 100644
--- a/navigation/navigation.cpp
+++ b/navigation/navigation.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2019, 2020 Konsulko Group
+ * Copyright (C) 2019-2021 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,21 +16,12 @@
#include <QDebug>
-#include "callmessage.h"
-#include "eventmessage.h"
-#include "messagefactory.h"
-#include "messageengine.h"
-#include "messageenginefactory.h"
#include "navigation.h"
-Navigation::Navigation (QUrl &url, QObject * parent) :
+Navigation::Navigation (QObject * parent) :
QObject(parent)
{
- m_mloop = MessageEngineFactory::getInstance().getMessageEngine(url);
- QObject::connect(m_mloop.get(), &MessageEngine::connected, this, &Navigation::onConnected);
- QObject::connect(m_mloop.get(), &MessageEngine::disconnected, this, &Navigation::onDisconnected);
- QObject::connect(m_mloop.get(), &MessageEngine::messageReceived, this, &Navigation::onMessageReceived);
}
Navigation::~Navigation()
@@ -39,124 +30,24 @@ Navigation::~Navigation()
void Navigation::sendWaypoint(double lat, double lon)
{
- std::unique_ptr<Message> msg = MessageFactory::getInstance().createOutboundMessage(MessageId::Call);
- if (!msg)
- return;
-
- CallMessage* nmsg = static_cast<CallMessage*>(msg.get());
- QJsonObject parameter, point;
- QJsonArray points;
- point.insert("latitude", lat);
- point.insert("longitude", lon);
- points.append(point);
- parameter.insert("points", points);
- nmsg->createRequest("navigation", "broadcast_waypoints", parameter);
- m_mloop->sendMessage(std::move(msg));
}
void Navigation::broadcastPosition(double lat, double lon, double drc, double dst)
{
- std::unique_ptr<Message> msg = MessageFactory::getInstance().createOutboundMessage(MessageId::Call);
- if (!msg)
- return;
-
- CallMessage* nmsg = static_cast<CallMessage*>(msg.get());
- QJsonObject parameter;
-
- parameter.insert("position", "car");
- parameter.insert("latitude", lat);
- parameter.insert("longitude", lon);
- parameter.insert("direction", drc);
- parameter.insert("distance", dst);
-
- nmsg->createRequest("navigation", "broadcast_position", parameter);
- m_mloop->sendMessage(std::move(msg));
}
void Navigation::broadcastRouteInfo(double lat, double lon, double route_lat, double route_lon)
{
- std::unique_ptr<Message> msg = MessageFactory::getInstance().createOutboundMessage(MessageId::Call);
- if (!msg)
- return;
-
- CallMessage* nmsg = static_cast<CallMessage*>(msg.get());
- QJsonObject parameter;
-
- parameter.insert("position", "route");
- parameter.insert("latitude", lat);
- parameter.insert("longitude", lon);
- parameter.insert("route_latitude", route_lat);
- parameter.insert("route_longitude", route_lon);
-
- nmsg->createRequest("navigation", "broadcast_position", parameter);
- m_mloop->sendMessage(std::move(msg));
}
void Navigation::broadcastStatus(QString state)
{
- std::unique_ptr<Message> msg = MessageFactory::getInstance().createOutboundMessage(MessageId::Call);
- if (!msg)
- return;
-
- CallMessage* nmsg = static_cast<CallMessage*>(msg.get());
- QJsonObject parameter;
- parameter.insert("state", state);
- nmsg->createRequest("navigation", "broadcast_status", parameter);
- m_mloop->sendMessage(std::move(msg));
}
void Navigation::onConnected()
{
- QStringListIterator eventIterator(events);
-
- while (eventIterator.hasNext()) {
- std::unique_ptr<Message> msg = MessageFactory::getInstance().createOutboundMessage(MessageId::Call);
- if (!msg)
- return;
-
- CallMessage* nmsg = static_cast<CallMessage*>(msg.get());
- QJsonObject parameter;
- parameter.insert("value", eventIterator.next());
- nmsg->createRequest("navigation", "subscribe", parameter);
- m_mloop->sendMessage(std::move(msg));
- }
}
void Navigation::onDisconnected()
{
- QStringListIterator eventIterator(events);
-
- while (eventIterator.hasNext()) {
- std::unique_ptr<Message> msg = MessageFactory::getInstance().createOutboundMessage(MessageId::Call);
- if (!msg)
- return;
-
- CallMessage* nmsg = static_cast<CallMessage*>(msg.get());
- QJsonObject parameter;
- parameter.insert("value", eventIterator.next());
- nmsg->createRequest("navigation", "unsubscribe", parameter);
- m_mloop->sendMessage(std::move(msg));
- }
-}
-
-void Navigation::onMessageReceived(std::shared_ptr<Message> msg)
-{
- if (!msg)
- return;
-
- if (msg->isEvent()) {
- std::shared_ptr<EventMessage> emsg = std::static_pointer_cast<EventMessage>(msg);
- if (emsg->eventApi() != "navigation")
- return;
-
- if (emsg->eventName() == "position") {
- emit positionEvent(emsg->eventData().toVariantMap());
- }
- else if (emsg->eventName() == "status") {
- emit statusEvent(emsg->eventData().toVariantMap());
- }
- else if (emsg->eventName() == "waypoints") {
- emit waypointsEvent(emsg->eventData().toVariantMap());
- }
- }
}
diff --git a/navigation/navigation.h b/navigation/navigation.h
index b1c0412..0606d1e 100644
--- a/navigation/navigation.h
+++ b/navigation/navigation.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2019, 2020 Konsulko Group
+ * Copyright (C) 2019-2021 Konsulko Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,18 +19,14 @@
#include <memory>
#include <QObject>
-#include <QJsonArray>
#include <QtQml/QQmlListProperty>
-class MessageEngine;
-class Message;
-
class Navigation : public QObject
{
Q_OBJECT
public:
- explicit Navigation(QUrl &url, QObject * parent = Q_NULLPTR);
+ explicit Navigation(QObject * parent = Q_NULLPTR);
virtual ~Navigation();
Q_INVOKABLE void broadcastPosition(double lat, double lon, double drc, double dst);
@@ -46,10 +42,7 @@ class Navigation : public QObject
void waypointsEvent(QVariantMap data);
private:
- std::shared_ptr<MessageEngine> m_mloop;
-
// slots
- void onMessageReceived(std::shared_ptr<Message> msg);
void onConnected();
void onDisconnected();