/*! * * Copyright (c) 2019-2019 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 Constructor * \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))); // From HD/DG 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 QCanBusFrame mFrame; QString mPayload; switch (vAction) { case GuiActionType::PowerOff: mFrame.setFrameId(eChlid_UI); mPayload = "A5 01 00 00 00 00 00 00"; mFrame.setPayload(QByteArray::fromHex(mPayload.remove(QLatin1Char(' ')).toLatin1())); 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 QCanBusFrame mFrame; QString mPayload; switch (vAction) { case GuiActionType::PowerOff: mFrame.setFrameId(eChlid_UI); if (vInfo == GuiActionInfo::Accepted) { mPayload = "A5 01 00 01 01 00 00 00"; } else { mPayload = "A5 01 00 01 00 00 00 00"; } mFrame.setPayload(QByteArray::fromHex(mPayload.remove(QLatin1Char(' ')).toLatin1())); break; default: break; } emit didActionPerform(mFrame); } /*! * \brief MessageHandler::onRead * \param vFrame */ void MessageHandler::onRead(const QCanBusFrame &vFrame) { // TODO : Test Code bool isCommand = true; bool isUnknown = false; // TODO : For test if (vFrame.toString() != " 020 [8] A5 01 00 00 00 00 00 00") { isUnknown = true; } switch (vFrame.frameId()) { case eChlid_HD: // qDebug() << "<=HD"; break; default: break; } if (isUnknown) return; if (isCommand) { //qDebug() << vFrame.toString(); emit didActionCommand(GuiActions::PowerOff); } else { emit didActionConfirm(GuiActions::PowerOff,GuiActions::Accepted); } }