/*! * * 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 "guiglobals.h" #include "messagebuilder.h" #include "messageinterpreter.h" // Define #define _MessageHandler MessageHandler::I() // forward declarations class unittests; // namespace using namespace Gui; namespace Can { class MessageHandler : public QObject { Q_OBJECT // friends friend class ::unittests; enum class ChannelGroup { eChannel_Unknown, eChannel_Ignores, eChannel_Listens, eChannel_Outputs, }; // Singleton SINGLETON_DECL(MessageHandler) public: void init(); private: void initConnections(); void transmitFrame(Can_Id vCan_Id, const QByteArray &vData = 0); ChannelGroup checkChannel(quint32 vFrameId, bool *vOK = nullptr); private slots: // Should be private for thread safety and is connected internally. void onFrameTransmit(Can_Id vCan_ID, const QByteArray &vData ); // GUI => CAN void onFrameReceive ( const QCanBusFrame &vFrame ); // GUI <= CAN signals: void didFrameReceive (Can_Id vCan_ID, const QByteArray &vPayload); // GUI <= CAN void didFrameTransmit( const QCanBusFrame &vFrame ); // GUI => CAN }; }