Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -r296e0e140bfeb193a9f571873afa6934143b1075 -r4a6abe765f03feae8100ec660aa04aa218d4dfa3 --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 296e0e140bfeb193a9f571873afa6934143b1075) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 4a6abe765f03feae8100ec660aa04aa218d4dfa3) @@ -317,7 +317,7 @@ * \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 vData - The dialydate flow data + * \param vData - The dialydate inlet flow data * \return true if the message can be successfully converted to the Blood Flow data elements. */ bool MessageInterpreter::getDialysateInletFlowData(const Message &vMessage, Model::DialysateFlow &vData) @@ -363,22 +363,11 @@ * \brief MessageInterpreter::getDialysateOutletFlowData * \details This is the method which interprets the Dialysate Outlet 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 vRefUFVol - Reference UF Volume value of type float extracted out - * \param vMeasUFVol - Measured UF Volume 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 outlet flow data (ultrafiltration) * \return true if the message can be successfully converted to the Blood Flow data elements. */ -bool MessageInterpreter::getDialysateOutletFlowData( - const Message &vMessage , - Types::F32 &vRefUFVol , Types::F32 &vMeasUFVol , - Types::F32 &vRotorSpeed , Types::F32 &vMotorSpeed , - Types::F32 &vMotorCtlSpeed , Types::F32 &vMotorCtlCurrent , Types::F32 &vPWMDtCycle) - +bool MessageInterpreter::getDialysateOutletFlowData(const Message &vMessage, Model::OutletFlow &vData) { if ( vMessage.actionId != Gui::GuiActionType::DialysateOutletFlow ) { return false; @@ -389,14 +378,7 @@ return false; } - int index = 0; // message data start position - Types::getValue<>(vMessage.data, index, vRefUFVol ); - Types::getValue<>(vMessage.data, index, vMeasUFVol ); - 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; } @@ -412,58 +394,24 @@ */ bool MessageInterpreter::dialysateOutletFlowData(const Message &vMessage, QVariantList &vData) { - bool ok; - Types::F32 mRefUFVol ; - Types::F32 mMeasUFVol ; - Types::F32 mRotorSpeed ; - Types::F32 mMotorSpeed ; - Types::F32 mMotorCtlSpeed ; - Types::F32 mMotorCtlCurrent ; - Types::F32 mPWMDtCycle ; - ok = getDialysateOutletFlowData(vMessage, - mRefUFVol , - mMeasUFVol , - mRotorSpeed , - mMotorSpeed , - mMotorCtlSpeed , - mMotorCtlCurrent , - mPWMDtCycle ); - QString msg = QString("Dialysate Outlet Flow(%1, %2, %3, %4, %5, %6, %7)") - .arg(mRefUFVol .value) - .arg(mMeasUFVol .value) - .arg(mRotorSpeed .value) - .arg(mMotorSpeed .value) - .arg(mMotorCtlSpeed .value) - .arg(mMotorCtlCurrent .value) - .arg(mPWMDtCycle .value); - LOG_DATUM(msg); - + bool ok; + Model::OutletFlow mData; + ok = getDialysateOutletFlowData(vMessage, mData); + LOG_DATUM(mData.toString()); if (ok) { - vData += mRefUFVol .value; - vData += mMeasUFVol .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; } /*! * \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 + * \param vMessage - The vMessage of type Message which contains all the data, require to be interpreted. + * \param vData - Treatment Time data * \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 ) - +bool MessageInterpreter::getTreatmentTime( const Message &vMessage , Model::TreatmentTime &vData) { if ( vMessage.actionId != Gui::GuiActionType::TreatmentTime ) { return false; @@ -474,10 +422,7 @@ 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 ); + vData.fromByteArray(vMessage.data); return true; } @@ -493,24 +438,13 @@ */ 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); - + bool ok; + Model::TreatmentTime mData; + ok = getTreatmentTime(vMessage, mData); + LOG_DATUM(mData.toString()); if (ok) { - vData += mTotal .value; - vData += mElapsed .value; - vData += mRemaining .value; + mData.toVariantList(vData); + emit didActionReceive(mData.data()); } return ok; } @@ -519,19 +453,12 @@ * \brief MessageInterpreter::getAlarmStatus * \details This method interprets AlarmStatus message data * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vState - Alarm Priority value of type unsigned int as 4 bytes extracted out - * \param vTop - Top value of type unsigned int as 4 bytes extracted out - * \param vMuteTimeout - MuteTimeout value of type unsigned int as 4 bytes extracted out - * \param vEscalatesIn - EscalatesIn value of type unsigned int as 4 bytes extracted out - * \param vFlags - Flags value of type unsigned int as 1 byte extracted out + * \param vMessage - The vMessage of type Message which contains all the data, + * require to be interpreted. + * \param vData - Alarm Status dta * \return true if the data can be extracted as defined for PowerOff Message ID */ -bool MessageInterpreter::getAlarmStatus(const Message &vMessage, - Types::U32 &vState , Types::U32 &vTop , - Types::U32 &vMuteTimeout, Types::U32 &vEscalatesIn, - Types::Flags &vFlags) +bool MessageInterpreter::getAlarmStatus(const Message &vMessage, Model::AlarmStatus &vData) { if ( vMessage.actionId != Gui::GuiActionType::AlarmStatus ) { return false; @@ -542,12 +469,8 @@ return false; } - int index = 0; // message data start position - Types::getValue<>(vMessage.data, index, vState ); - Types::getValue<>(vMessage.data, index, vTop ); - Types::getValue<>(vMessage.data, index, vMuteTimeout ); - Types::getValue<>(vMessage.data, index, vEscalatesIn ); - Types::getBits (vMessage.data, index, vFlags, static_cast(Gui::GuiActionIndx::AlarmStatus_Flag_Bits_Length)); + vData.fromByteArray(vMessage.data); + return true; } @@ -560,36 +483,16 @@ * \param vData - the output data * \return return value of the method getAlarmStatus */ -bool MessageInterpreter::alarmStatus(const Message &vMessage, QVariantList &vData) -{ - bool ok; - Types::U32 mState ; - Types::U32 mTop ; - Types::U32 mMuteTimeout ; - Types::U32 mEscalatesIn ; - Types::Flags mFlags ; - ok = getAlarmStatus(vMessage , - mState , - mTop , - mMuteTimeout , - mEscalatesIn , - mFlags ); - LOG_DATUM(QString("Alarm Status(%1, %2, %3, %4, %5)") - .arg(mState .value ) - .arg(mTop .value ) - .arg(mMuteTimeout .value ) - .arg(mEscalatesIn .value ) - .arg(mFlags .toString()) - ); +bool MessageInterpreter::alarmStatus(const Message &vMessage, QVariantList &vData) { + bool ok; + Model::AlarmStatus mData; + ok = getAlarmStatus(vMessage, mData); + LOG_DATUM(mData.toString()); if (ok) { - vData += mState .value ; - vData += mTop .value ; - vData += mMuteTimeout .value ; - vData += mEscalatesIn .value ; - for (int i = 0; i < mFlags.count(); i++) { - vData += mFlags.at(i); - } + mData.toVariantList(vData); + emit didActionReceive(mData.data()); } + return ok; // --- an example of unit test --- // // Types::Flags flag; @@ -598,5 +501,4 @@ // ba += 0x83; ba += 0xf8; ba += 0x28; ba += 0xa1; // Types::getBits(ba, i, flag, 32); // qDebug() << '@' << flag << flag.toString() << ba; - return ok; }