diff options
author | 2022-06-07 14:40:57 -0400 | |
---|---|---|
committer | 2022-07-04 21:23:16 +0000 | |
commit | fc9399e54dfd05a4307f954549ae58afbf57fb5e (patch) | |
tree | 22ea8bb39aac75e56bcf8ee2c44b8e9f354b07d2 /navigation/navigation.h | |
parent | 607f2b680891c25b51917d5b7f20bc3a3ffc6a65 (diff) |
Reimplement navigation API with VIS signals
Reimplement the navigation interface with use of VIS signals.
There is some impedance mismatching done between VIS signal
notifications and the API Qt signals to avoid changing the
clients signficantly for now. If the Qt demo lifetime is
extended, this may be revisited to either switch to directly
using the VehicleSignals interface or doing a more granular
mapping that works better with the VSS schema / VIS.
Bug-AGL: SPEC-4408
Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: Ieab42daddadca60de634f414171a133af53938f5
(cherry picked from commit 4ce04ff30e753556cf9cb371780f2a873f6fedaa)
Diffstat (limited to 'navigation/navigation.h')
-rw-r--r-- | navigation/navigation.h | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/navigation/navigation.h b/navigation/navigation.h index 0606d1e..2c8a8ff 100644 --- a/navigation/navigation.h +++ b/navigation/navigation.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2019-2021 Konsulko Group + * Copyright (C) 2019-2022 Konsulko Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,40 +17,46 @@ #ifndef NAVIGATION_H #define NAVIGATION_H -#include <memory> #include <QObject> -#include <QtQml/QQmlListProperty> +#include <QVariant> + +class VehicleSignals; class Navigation : public QObject { - Q_OBJECT - - public: - explicit Navigation(QObject * parent = Q_NULLPTR); - virtual ~Navigation(); - - Q_INVOKABLE void broadcastPosition(double lat, double lon, double drc, double dst); - Q_INVOKABLE void broadcastRouteInfo(double lat, double lon, double route_lat, double route_lon); - Q_INVOKABLE void broadcastStatus(QString state); - - // only support one waypoint for now - Q_INVOKABLE void sendWaypoint(double lat, double lon); - - signals: - void statusEvent(QVariantMap data); - void positionEvent(QVariantMap data); - void waypointsEvent(QVariantMap data); - - private: - // slots - void onConnected(); - void onDisconnected(); - - const QStringList events { - "status", - "position", - "waypoints", - }; + Q_OBJECT + +public: + explicit Navigation(VehicleSignals *vs, QObject *parent = Q_NULLPTR); + virtual ~Navigation(); + + Q_INVOKABLE void broadcastPosition(double lat, double lon, double drc, double dst); + Q_INVOKABLE void broadcastRouteInfo(double lat, double lon, double route_lat, double route_lon); + Q_INVOKABLE void broadcastStatus(QString state); + + // only support one waypoint for now + Q_INVOKABLE void sendWaypoint(double lat, double lon); + +signals: + void statusEvent(QVariantMap data); + void positionEvent(QVariantMap data); + void waypointsEvent(QVariantMap data); + +private slots: + void onConnected(); + void onAuthorized(); + void onDisconnected(); + void onSignalNotification(QString path, QString value, QString timestamp); + +private: + VehicleSignals *m_vs; + bool m_connected; + double m_latitude; + double m_longitude; + double m_heading; + double m_distance; + double m_dest_latitude; + double m_dest_longitude; }; #endif // NAVIGATION_H |