Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -r9391d4058233e096350d9dc3ced79aed8ed93b38 -r426208cdb707400759bdc663b871ece9d1208aed --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 9391d4058233e096350d9dc3ced79aed8ed93b38) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 426208cdb707400759bdc663b871ece9d1208aed) @@ -14,6 +14,7 @@ #include "messageinterpreter.h" // Qt +#include // Project #include "logger.h" @@ -177,6 +178,10 @@ ok = dialysateOutletFlowData (vMessage, vData); break; + case Gui::GuiActionType::TreatmentTime: + ok = treatmentTime (vMessage, vData); + break; + case Gui::GuiActionType::AlarmStatus: ok = alarmStatus (vMessage, vData); break; @@ -466,6 +471,38 @@ } /*! + * \brief MessageInterpreter::getDialysateOutletFlowData + * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. + * \param vTotal - Total treatment time in sec + * \param vElapsed - Elapsed treatment time in sec + * \param vRemaining - Remaining treatment time in sec + * \return true if the message can be successfully converted to the Blood Flow data elements. + */ +bool MessageInterpreter::getTreatmentTime( + const Message &vMessage , + Types::U32 &vTotal , + Types::U32 &vElapsed , + Types::U32 &vRemaining ) + +{ + if ( vMessage.actionId != Gui::GuiActionType::TreatmentTime ) { + return false; + } + if ( vMessage.data.length() < payloadLen[Gui::GuiActionType::TreatmentTime] ) { + QString mActionIdHexString = Format::toHexString(vMessage.actionId); + LOG_ERROR(tr("Incorrect data for Message ID (HD) '%1'").arg(mActionIdHexString)); + return false; + } + + int index = 0; // message data start position + Types::getValue<>(vMessage.data, index, vTotal ); + Types::getValue<>(vMessage.data, index, vElapsed ); + Types::getValue<>(vMessage.data, index, vRemaining ); + + return true; +} + +/*! * \brief MessageInterpreter::dialysateOutletFlowData * \details Used the getDialysateOutletFlowData method and converts each parameter * in vData of type QVaranitList, to be used in the GUI @@ -515,6 +552,39 @@ } /*! + * \brief MessageInterpreter::treatmentTime + * \details Used the getTreatmentTime method and converts each parameter + * in vData of type QVaranitList, to be used in the GUI + * Also logs the data + * \param vMessage - The message + * \param vData - the output data + * \return return value of the method getDialysateOutletFlowData + */ +bool MessageInterpreter::treatmentTime(const Message &vMessage, QVariantList &vData) +{ + bool ok; + Types::U32 mTotal ; + Types::U32 mElapsed ; + Types::U32 mRemaining ; + ok = getTreatmentTime(vMessage, + mTotal , + mElapsed , + mRemaining ); + QString msg = QString("Treatment Time(%1, %2, %3)") + .arg(mTotal .value) + .arg(mElapsed .value) + .arg(mRemaining .value); + LOG_DATUM(msg); + + if (ok) { + vData += mTotal .value; + vData += mElapsed .value; + vData += mRemaining .value; + } + return ok; +} + +/*! * \brief MessageInterpreter::getAlarmStatus * \details This method interprets AlarmStatus message data * in vMessage of type Message.