/*! * * Copyright (c) 2019-2020 Diality Inc. - All Rights Reserved. * copyright * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, * IN PART OR IN WHOLE, * WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * file messagehandler.h * date 10/26/2019 * author Behrouz NematiPour * */ #pragma once // Qt #include #include #include // Project #include "main.h" #include "guiactions.h" #include "messagebuilder.h" // Define #define _MessageHandler MessageHandler::I() // forward declarations class unittests; // namespace using namespace Gui; namespace Can { #define CAN_FRAME_LENGTH 8 #define MAX_PAYLOAD_IN_HEADER_FRAME 3 class MessageHandler : public QObject { Q_OBJECT // friends friend class ::unittests; MessageBuilder _builder; // Singleton SINGLETON_DECL(MessageHandler) public: void init(); private: void initConnections(); void checked_in(); void transmitFrame(Can_Id vCan_Id, GuiActionType vAction, const QByteArray &vData = 0); bool ignoreChannel(const QCanBusFrame &vFrame); // interpret the data into GUI understandable Actions/Data bool interpretData(const Message &vMessage, GuiActionType &vActionId, GuiActionData &vData); private slots: // Should be private for thread safety and is connected internally. void onActionTransmit(GuiActionType vAction, const QByteArray &vData); // UI => HD/DG void onFrameReceive (const QCanBusFrame &vFrame ); // UI <= HD/DG void onMainTimerTimeout(); signals: void didActionReceive (GuiActionType vAction, GuiActionData vData); // UI <= HD/DG void didFrameTransmit (const QCanBusFrame &vFrame ); // UI => HD/DG }; }