Index: CloudConnect/CloudConnectController.h =================================================================== diff -u -r51e99f2578e0901d9da91a4cb60d1b8858cfe971 -raaebfee335c74b0250864a6dce0555f866adadea --- CloudConnect/CloudConnectController.h (.../CloudConnectController.h) (revision 51e99f2578e0901d9da91a4cb60d1b8858cfe971) +++ CloudConnect/CloudConnectController.h (.../CloudConnectController.h) (revision aaebfee335c74b0250864a6dce0555f866adadea) @@ -13,21 +13,16 @@ #pragma once #include -#include -#include // TODO: temporary for protobuf capture #include #include #include -#include #include #include #include -#include -#include -#include "CloudConnectFrame.h" #include "CanInterface.h" #include "CanMessage.h" +#include "CloudConnectFrame.h" #include "CloudConnectServer.h" #include "MessageDispatcher.h" #include "MqttClient.h" @@ -42,53 +37,55 @@ Q_OBJECT public: - explicit CloudConnectController(const QString &configPath, const QString &msgHandlingPath, - QObject *parent = nullptr); + explicit CloudConnectController(QObject *parent = nullptr); ~CloudConnectController(); + bool loadConfig(const QString &configPath); bool startCan(); bool listenForApp(); bool connectToCloud(); void initThread(QThread &thread); private: /*! - * \brief Send message handling policy for a CAN message. + * \brief CAN message routing actions */ - enum class MsgAction { + enum class CanAction { Drop, SendAlways, SendDelta, }; /*! - * \brief Message handling entry loaded from message handling INI. + * \brief CAN message routing entry loaded from CAN handling INI. */ - struct MsgHandling { - MsgAction action = MsgAction::Drop; + struct CanRouting { + CanAction action = CanAction::Drop; CloudConnectFrame::Topic topic = CloudConnectFrame::Topic::NormalPriority; }; - void loadMsgHandling(const QString &msgHandlingPath); + bool loadCanRouting(const QString &canRoutingPath); QString mqttTopic(CloudConnectFrame::Topic topic) const; - void captureProtobuf(const QByteArray &payload); // TODO: temporary for protobuf capture - QSettings _settings; Can::CanInterface _canInterface; Can::MessageDispatcher _dispatcher; - QMap> _msgCache; - QHash _msgHandling; + QMap> _canCache; + QHash _canRouting; + QString _appServerSocketPath; QSharedPointer _appServer; MqttClient _mqttClient; QString _topicPrefix; // TODO: define in INI? QString _deviceId; // TODO: this needs to be sent from Leahi app or retrieved from somewhere - bool _mqttEnabled = false; - // TODO: temporary for protobuf capture - std::unique_ptr _captureSerFile; - std::unique_ptr _captureJsonFile; + QString _serialNumber; + QString _deviceCertPath; + QString _deviceKeyPath; private Q_SLOTS: - void onFrameReceive(const QCanBusFrame frame); - void onMessageReceive(const Can::Message &msg); + void onCanFrameReceive(const QCanBusFrame &frame); + void onCanMessageReceive(const Can::Message &msg); + void onCloudStateChanged(QMqttClient::ClientState state); + void onCloudMessageStatusChanged(qint32 id, QMqtt::MessageStatus status, + const QMqttMessageStatusProperties &properties); + void onCloudMessageReceived(const QString &topic, const QByteArray &payload); };