Index: sources/canbus/messagehandler.cpp =================================================================== diff -u -rb2ebb6f71cf9b0c2ba68a47776e5b220b165b21c -r272bb81655222b2bf0c3c7099523c0b658eb9cb8 --- sources/canbus/messagehandler.cpp (.../messagehandler.cpp) (revision b2ebb6f71cf9b0c2ba68a47776e5b220b165b21c) +++ sources/canbus/messagehandler.cpp (.../messagehandler.cpp) (revision 272bb81655222b2bf0c3c7099523c0b658eb9cb8) @@ -24,6 +24,7 @@ // Project #include "maintimer.h" #include "applicationcontroller.h" +#include "guiglobals.h" // namespace using namespace Can; @@ -53,8 +54,8 @@ void MessageHandler::initConnections() { // From GUI - connect(_ApplicationController, SIGNAL(didActionTransmit(GuiActionType, const QByteArray &)), - this , SLOT( onActionTransmit(GuiActionType, const QByteArray &))); + connect(_ApplicationController, SIGNAL(didActionTransmit(GuiActionType, const QVariantList &)), + this , SLOT( onActionTransmit(GuiActionType, const QVariantList &))); // From HD/DG connect(_CanInterface , SIGNAL( didRead(QCanBusFrame)), @@ -99,21 +100,26 @@ return false; } - -bool MessageHandler::interpretData(const Message &vMessage, GuiActionType &vActionId, GuiActionData &vData) +bool MessageHandler::interpretData(const Message &vMessage, GuiActionType &vActionId, QVariantList &vData) { quint8 tmp; + quint8 l = vMessage.data.length(); + quint8 i = 0; vActionId = vMessage.actionId; + vData.clear(); switch (vActionId) { // notice we are in receive mode - case GuiActionType::PowerOff: - tmp = vMessage.data[0]; - vData = static_cast(tmp); - //TODO: (MessageInterpreter) There should be an easy way to check if a correct data has been provided. + case GuiActionType::PowerOff: + i = GuiActions::PowerOff_Show; + if (l >= i + 1) { + tmp = vMessage.data[GuiActions::PowerOff_Show]; + vData += static_cast(tmp); + } + //TODO: (MessageInterpreter) There should be an easy way to check if a correct data has been provided. break; case GuiActionType::BloodFlow: break; - default: - vData = GuiActionData::Command; + default: + vData += GuiActionData::Command; break; } return true; @@ -124,10 +130,14 @@ * \details Processes the requested action * \param vAction - User requested Action */ -void MessageHandler::onActionTransmit(GuiActionType vAction, const QByteArray &vData) +void MessageHandler::onActionTransmit(GuiActionType vAction, const QVariantList &vData) { qDebug() << vData; - transmitFrame(eChlid_UI, vAction, vData); + QByteArray mData; + for (auto data: vData) { + mData += fromVariant(data); + } + transmitFrame(eChlid_UI, vAction, mData); } /*! @@ -147,7 +157,7 @@ // FIXME: Needs MessageInterpreter class for data in each action [Sprint 8] GuiActionType mActionId; - GuiActionData mData; + QVariantList mData; if (! interpretData(mMessage, mActionId, mData)) { return; }