Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -rbb8f39a014644c70b832dd2a784f62fa9f6b6106 -r296e0e140bfeb193a9f571873afa6934143b1075 --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision bb8f39a014644c70b832dd2a784f62fa9f6b6106) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 296e0e140bfeb193a9f571873afa6934143b1075) @@ -270,21 +270,11 @@ * \brief MessageInterpreter::getBloodFlowData * \details This is the method which interprets the Blood Flow message data in vMessage of type Message * to its elements of data. - * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. - * \param vFlowSetPoint - Flow Set Point value of type signed int extracted out - * \param vMeasuredFlow - Measured Flow value of type float extracted out - * \param vRotorSpeed - Rotor Speed value of type float extracted out - * \param vMotorSpeed - Motor Speed value of type float extracted out - * \param vMotorCtlSpeed - Motor Controller Speed value of type float extracted out - * \param vMotorCtlCurrent - Motor Controller Current value of type float extracted out - * \param vPWMDtCycle - PWM Duty Cycle in % value of type float extracted out + * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. + * \param vData - The BloodFlow data * \return true if the message can be successfully converted to the Blood Flow data elements. */ -bool MessageInterpreter::getBloodFlowData( - const Message &vMessage , - Types::S32 &vFlowSetPoint , - Types::F32 &vMeasuredFlow , Types::F32 &vRotorSpeed , Types::F32 &vMotorSpeed, - Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) +bool MessageInterpreter::getBloodFlowData(const Message &vMessage, Model::BloodFlow &vData) { if ( vMessage.actionId != Gui::GuiActionType::BloodFlow ) { return false; @@ -295,14 +285,7 @@ return false; } - int index = 0; // message data start position - Types::getValue<>(vMessage.data, index, vFlowSetPoint ); - Types::getValue<>(vMessage.data, index, vMeasuredFlow ); - Types::getValue<>(vMessage.data, index, vRotorSpeed ); - Types::getValue<>(vMessage.data, index, vMotorSpeed ); - Types::getValue<>(vMessage.data, index, vMotorCtlSpeed ); - Types::getValue<>(vMessage.data, index, vMotorCtlCurrent); - Types::getValue<>(vMessage.data, index, vPWMDtCycle ); + vData.fromByteArray(vMessage.data); return true; } @@ -318,39 +301,13 @@ */ bool MessageInterpreter::bloodFlowData(const Message &vMessage, QVariantList &vData) { - bool ok; - Types::S32 mFlowSetPoint ; - Types::F32 mMeasuredFlow ; - Types::F32 mRotorSpeed ; - Types::F32 mMotorSpeed ; - Types::F32 mMotorCtlSpeed ; - Types::F32 mMotorCtlCurrent ; - Types::F32 mPWMDtCycle ; - ok = getBloodFlowData(vMessage , - mFlowSetPoint , - mMeasuredFlow , - mRotorSpeed , - mMotorSpeed , - mMotorCtlSpeed , - mMotorCtlCurrent , - mPWMDtCycle ); - LOG_DATUM(QString("Blood Flow(%1, %2, %3, %4, %5, %6, %7)") - .arg(mFlowSetPoint .value) - .arg(mMeasuredFlow .value) - .arg(mRotorSpeed .value) - .arg(mMotorSpeed .value) - .arg(mMotorCtlSpeed .value) - .arg(mMotorCtlCurrent .value) - .arg(mPWMDtCycle .value) - ); + bool ok; + Model::BloodFlow mData; + ok = getBloodFlowData(vMessage, mData); + LOG_DATUM(mData.toString()); if (ok) { - vData += mFlowSetPoint .value; - vData += mMeasuredFlow .value; - vData += mRotorSpeed .value; - vData += mMotorSpeed .value; - vData += mMotorCtlSpeed .value; - vData += mMotorCtlCurrent.value; - vData += mPWMDtCycle .value; + mData.toVariantList(vData); + emit didActionReceive(mData.data()); } return ok; } @@ -359,22 +316,11 @@ * \brief MessageInterpreter::getDialysateInletFlowData * \details This is the method which interprets the Dialysate Inlet Flow message data in vMessage of type Message * to its elements of data. - * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. - * \param vFlowSetPoint - Flow Set Point value of type signed int extracted out - * \param vMeasuredFlow - Measured Flow value of type float extracted out - * \param vRotorSpeed - Rotor Speed value of type float extracted out - * \param vMotorSpeed - Motor Speed value of type float extracted out - * \param vMotorCtlSpeed - Motor Controller Speed value of type float extracted out - * \param vMotorCtlCurrent - Motor Controller Current value of type float extracted out - * \param vPWMDtCycle - PWM Duty Cycle in % value of type float extracted out + * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. + * \param vData - The dialydate flow data * \return true if the message can be successfully converted to the Blood Flow data elements. */ -bool MessageInterpreter::getDialysateInletFlowData( - const Message &vMessage , - Types::S32 &vFlowSetPoint , - Types::F32 &vMeasuredFlow , Types::F32 &vRotorSpeed , Types::F32 &vMotorSpeed, - Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) - +bool MessageInterpreter::getDialysateInletFlowData(const Message &vMessage, Model::DialysateFlow &vData) { if ( vMessage.actionId != Gui::GuiActionType::DialysateInletFlow ) { return false; @@ -385,14 +331,7 @@ return false; } - int index = 0; // message data start position - Types::getValue<>(vMessage.data, index, vFlowSetPoint ); - Types::getValue<>(vMessage.data, index, vMeasuredFlow ); - Types::getValue<>(vMessage.data, index, vRotorSpeed ); - Types::getValue<>(vMessage.data, index, vMotorSpeed ); - Types::getValue<>(vMessage.data, index, vMotorCtlSpeed ); - Types::getValue<>(vMessage.data, index, vMotorCtlCurrent); - Types::getValue<>(vMessage.data, index, vPWMDtCycle ); + vData.fromByteArray(vMessage.data); return true; } @@ -408,39 +347,13 @@ */ bool MessageInterpreter::dialysateInletFlowData(const Message &vMessage, QVariantList &vData) { - bool ok; - Types::S32 mFlowSetPoint ; - Types::F32 mMeasuredFlow ; - Types::F32 mRotorSpeed ; - Types::F32 mMotorSpeed ; - Types::F32 mMotorCtlSpeed ; - Types::F32 mMotorCtlCurrent ; - Types::F32 mPWMDtCycle ; - ok = getDialysateInletFlowData(vMessage , - mFlowSetPoint , - mMeasuredFlow , - mRotorSpeed , - mMotorSpeed , - mMotorCtlSpeed , - mMotorCtlCurrent , - mPWMDtCycle ); - LOG_DATUM(QString("Dialysate Inlet Flow(%1, %2, %3, %4, %5, %6, %7)") - .arg(mFlowSetPoint .value) - .arg(mMeasuredFlow .value) - .arg(mRotorSpeed .value) - .arg(mMotorSpeed .value) - .arg(mMotorCtlSpeed .value) - .arg(mMotorCtlCurrent .value) - .arg(mPWMDtCycle .value) - ); + bool ok; + Model::DialysateFlow mData; + ok = getDialysateInletFlowData(vMessage, mData); + LOG_DATUM(mData.toString()); if (ok) { - vData += mFlowSetPoint .value; - vData += mMeasuredFlow .value; - vData += mRotorSpeed .value; - vData += mMotorSpeed .value; - vData += mMotorCtlSpeed .value; - vData += mMotorCtlCurrent.value; - vData += mPWMDtCycle .value; + mData.toVariantList(vData); + emit didActionReceive(mData.data()); } return ok; } @@ -489,38 +402,6 @@ } /*! - * \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 @@ -570,6 +451,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::treatmentTime * \details Used the getTreatmentTime method and converts each parameter * in vData of type QVaranitList, to be used in the GUI