/*! * * 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.cpp * date 10/26/2019 * author Behrouz NematiPour * */ #include "messagehandler.h" // Qt #include // Project #include "applicationcontroller.h" // namespace using namespace Can; // Singleton SINGLETON_INIT(MessageHandler) /*! * \brief MessageHandler::MessageHandler * \param parent */ MessageHandler::MessageHandler(QObject *parent) : QObject(parent) { } /*! * \brief Message Handler initializer */ void MessageHandler::init() { connection(); } /*! * \brief Message Handler connections definition */ void MessageHandler::connection() { // From GUI connect(_ApplicationController, SIGNAL(didActionRequest(GuiActionType)), this , SLOT( onActionRequest(GuiActionType))); // From GUI connect(_ApplicationController, SIGNAL(didActionPerform(GuiActionType,GuiActionInfo)), this , SLOT( onActionPerform(GuiActionType, GuiActionInfo))); connect(_CanInterface , SIGNAL(didRead(QCanBusFrame)), this , SLOT( onRead(QCanBusFrame))); } /*! * \brief Process the requested action * \details Processes the requested action * \param vAction - User requested Action */ void MessageHandler::onActionRequest(GuiActionType vAction) { // TODO : Test Code qDebug() << "MessageHandler.actionRequested : " << vAction; QCanBusFrame mFrame; QByteArray mPayload; switch (vAction) { case GuiActionType::PowerOff: mFrame.setFrameId(2); mPayload.append("\x01\x00\x01\x01\x00\x00\x00\x00"); mFrame.setPayload(mPayload); break; default: break; } emit didActionRequest(mFrame); } /*! * \brief Process the performed action * \details An action which has been commanded by HD has been performed by GUI.\n * GUI notifies that the action has been performed * \param vAction * \param vInfo */ void MessageHandler::onActionPerform(GuiActionType vAction, GuiActionInfo vInfo) { // TODO : Test Code qDebug() << "MessageHandler.actionPerformed : " << vAction << vInfo; QCanBusFrame mFrame; QByteArray mPayload; switch (vAction) { case GuiActionType::PowerOff: mFrame.setFrameId(2); mPayload.append("\x01\x00\x01\x01\x00\x00\x00\x00"); mFrame.setPayload(mPayload); break; default: break; } emit didActionPerform(mFrame); } /*! * \brief MessageHandler::onRead * \param vFrame */ void MessageHandler::onRead(const QCanBusFrame &vFrame) { // TODO : Test Code bool isCommand = true; switch (vFrame.frameId()) { case 1: qDebug() << "HD Command:" << vFrame.payload(); break; default: break; } if (isCommand) { emit didActionCommand(GuiActions::PowerOff); } else { emit didActionConfirm(GuiActions::PowerOff,GuiActions::Accepted); } }