Index: denali.pro =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- denali.pro (.../denali.pro) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ denali.pro (.../denali.pro) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -49,14 +49,14 @@ common/MsgDefs.h \ \ # Main sources/main.h \ - sources/model/MAbstract.h \ sources/threads.h \ sources/maintimer.h \ sources/applicationpost.h \ \ # Controllers sources/applicationcontroller.h \ \ # ---------- Models ---------- sources/model/MModel.h \ + sources/model/MAbstract.h \ sources/model/MPowerOff.h \ \ # ---------- Models - Alarm sources/model/hd/alarm/MAlarmCleared.h \ @@ -150,6 +150,7 @@ \ # Controllers sources/applicationcontroller.cpp \ \ # ---------- Models ---------- + sources/model/MAbstract.cpp \ sources/model/MPowerOff.cpp \ \ # ---------- Models - Alarm sources/model/hd/alarm/MAlarmCleared.cpp \ Index: denali.pro.user =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- denali.pro.user (.../denali.pro.user) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ denali.pro.user (.../denali.pro.user) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -1,6 +1,6 @@ - + EnvironmentId @@ -1052,7 +1052,7 @@ Qt 5.12.5 (iMX8) Qt 5.12.5 (iMX8) {5d6458ef-f917-4aef-a092-c77bbe106149} - 0 + 1 0 0 Index: sources/applicationcontroller.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/applicationcontroller.cpp (.../applicationcontroller.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/applicationcontroller.cpp (.../applicationcontroller.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -271,7 +271,7 @@ else { mData += static_cast(GuiActionData::NoData); } - onActionTransmit(GuiActionType::idKeepAlive, mData); + onActionTransmit(GuiActionType::ID_KeepAlive, mData); #endif } Index: sources/canbus/messagebuilder.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/canbus/messagebuilder.cpp (.../messagebuilder.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/canbus/messagebuilder.cpp (.../messagebuilder.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -104,7 +104,7 @@ */ bool MessageBuilder::addActionId(QByteArray &vPayload, Gui::GuiActionType vAction) { - if (vAction != Gui::GuiActionType::idUnknown) { + if (vAction != Gui::GuiActionType::ID_Unknown) { quint16 mAction = static_cast(vAction); vPayload += (mAction >> 8) & 0xFF; // high byte vPayload += mAction & 0xFF; // low byte Index: sources/canbus/messagedispatcher.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/canbus/messagedispatcher.cpp (.../messagedispatcher.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/canbus/messagedispatcher.cpp (.../messagedispatcher.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -226,7 +226,7 @@ QVariantList mData; mData += vData.bloodFlow; mData += vData.dialysateFlow; - onActionTransmit(GuiActionType::idAdjustBloodDialysateReq, mData); + onActionTransmit(GuiActionType::ID_AdjustBloodDialysateReq, mData); } /*! @@ -239,7 +239,7 @@ { QVariantList mData; mData += vData.duration; - onActionTransmit(GuiActionType::idAdjustDurationReq, mData); + onActionTransmit(GuiActionType::ID_AdjustDurationReq, mData); } /*! @@ -252,7 +252,7 @@ { QVariantList mData; mData += vData.requestedState; - actionTransmit(GuiActionType::idAdjustUltrafiltrationStateReq, mData); + actionTransmit(GuiActionType::ID_AdjustUltrafiltrationStateReq, mData); } /*! @@ -265,7 +265,7 @@ { QVariantList mData; mData += vData.volume; - onActionTransmit(GuiActionType::idAdjustUltrafiltrationEditReq, mData); + onActionTransmit(GuiActionType::ID_AdjustUltrafiltrationEditReq, mData); } /*! @@ -279,7 +279,7 @@ QVariantList mData; mData += vData.volume; mData += vData.option; - onActionTransmit(GuiActionType::idAdjustUltrafiltrationConfirmReq, mData); + onActionTransmit(GuiActionType::ID_AdjustUltrafiltrationConfirmReq, mData); } @@ -385,7 +385,7 @@ ok = true; GuiActionType mActionId = vMessage.actionId; switch (mActionId) { - case GuiActionType::idAcknow: + case GuiActionType::ID_Acknow: LOG_EVENT(tr("HD,Ack Bak, Sq:%1").arg(mSequence)); #ifdef DEBUG_ACKBACK_HD_TO_UI qDebug() << tr(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HD AckBak : %1 %2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ").arg(mSequence).arg(vMessage.actionId); @@ -400,7 +400,7 @@ qDebug() << tr(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ HD AckReq : %1 %2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ").arg(mSequence).arg(vMessage.actionId); #endif // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ UI AckBak is immediately handled at the same place. - actionTransmit(GuiActionType::idAcknow, {}, -mSequence); + actionTransmit(GuiActionType::ID_Acknow, {}, -mSequence); LOG_EVENT(tr("UI,Ack Bak, Sq:%1").arg(-mSequence)); #ifdef DEBUG_ACKBACK_HD_TO_UI qDebug() << tr(" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ UI AckBak : %1 %2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ").arg(-mSequence).arg(vMessage.actionId); Index: sources/canbus/messagedispatcher.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/canbus/messagedispatcher.h (.../messagedispatcher.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/canbus/messagedispatcher.h (.../messagedispatcher.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -102,11 +102,11 @@ bool _init = false; QList _needsAcknow { - GuiActionType::idAdjustBloodDialysateReq , - GuiActionType::idAdjustDurationReq , - GuiActionType::idAdjustUltrafiltrationStateReq , - GuiActionType::idAdjustUltrafiltrationEditReq , - GuiActionType::idAdjustUltrafiltrationConfirmReq , + GuiActionType::ID_AdjustBloodDialysateReq , + GuiActionType::ID_AdjustDurationReq , + GuiActionType::ID_AdjustUltrafiltrationStateReq , + GuiActionType::ID_AdjustUltrafiltrationEditReq , + GuiActionType::ID_AdjustUltrafiltrationConfirmReq , }; // Singleton Index: sources/canbus/messageglobals.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/canbus/messageglobals.h (.../messageglobals.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/canbus/messageglobals.h (.../messageglobals.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -43,61 +43,61 @@ */ const QHash payloadLen { // ---- - {Gui::GuiActionType::idPowerOff , 1 }, - {Gui::GuiActionType::idPowerOffBroadcast , 0 }, - {Gui::GuiActionType::idKeepAlive , 255 }, // 0 => 255 to be able to run a multi-frame test. + {Gui::GuiActionType::ID_PowerOff , 1 }, + {Gui::GuiActionType::ID_PowerOffBroadcast , 0 }, + {Gui::GuiActionType::ID_KeepAlive , 255 }, // 0 => 255 to be able to run a multi-frame test. // ----- - {Gui::GuiActionType::idTreatmentTime , 3 * 4 }, // 3 parameters each 4bytes - {Gui::GuiActionType::idBloodFlow , 7 * 4 }, // 7 parameters each 4bytes - {Gui::GuiActionType::idDialysateInletFlow , 7 * 4 }, // 7 parameters each 4bytes - {Gui::GuiActionType::idDialysateOutletFlow , 7 * 4 }, // 7 parameters each 4bytes - {Gui::GuiActionType::idPressureOcclusion , 5 * 4 }, // 5 parameters each 4bytes + {Gui::GuiActionType::ID_TreatmentTime , 3 * 4 }, // 3 parameters each 4bytes + {Gui::GuiActionType::ID_BloodFlow , 7 * 4 }, // 7 parameters each 4bytes + {Gui::GuiActionType::ID_DialysateInletFlow , 7 * 4 }, // 7 parameters each 4bytes + {Gui::GuiActionType::ID_DialysateOutletFlow , 7 * 4 }, // 7 parameters each 4bytes + {Gui::GuiActionType::ID_PressureOcclusion , 5 * 4 }, // 5 parameters each 4bytes // ---- - {Gui::GuiActionType::idDGROPumpData , 3 * 4 }, // 3 parameters each 4bytes - {Gui::GuiActionType::idDGPressuresData , 4 * 4 }, // 4 parameters each 4bytes - {Gui::GuiActionType::idDGDrainPumpData , 2 * 4 }, // 2 parameters each 4bytes - {Gui::GuiActionType::idDGOperationModeData , 1 * 4 }, // 1 parameter each 4bytes - {Gui::GuiActionType::idDGReservoirData , 3 * 4 }, // 3 parameters each 4bytes - {Gui::GuiActionType::idDGValvesStatesData , 1 * 2 }, // 1 parameters each 2bytes - {Gui::GuiActionType::idDGHeatersData , 3 * 4 }, // 3 parameters each 4bytes - {Gui::GuiActionType::idDGLoadCellReadingsData , 4 * 4 }, // 4 parameters each 4bytes - {Gui::GuiActionType::idDGTemperaturesData , 12 * 4 }, // 12 parameters each 4bytes + {Gui::GuiActionType::ID_DGROPumpData , 3 * 4 }, // 3 parameters each 4bytes + {Gui::GuiActionType::ID_DGPressuresData , 4 * 4 }, // 4 parameters each 4bytes + {Gui::GuiActionType::ID_DGDrainPumpData , 2 * 4 }, // 2 parameters each 4bytes + {Gui::GuiActionType::ID_DGOperationModeData , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_DGReservoirData , 3 * 4 }, // 3 parameters each 4bytes + {Gui::GuiActionType::ID_DGValvesStatesData , 1 * 2 }, // 1 parameters each 2bytes + {Gui::GuiActionType::ID_DGHeatersData , 3 * 4 }, // 3 parameters each 4bytes + {Gui::GuiActionType::ID_DGLoadCellReadingsData , 4 * 4 }, // 4 parameters each 4bytes + {Gui::GuiActionType::ID_DGTemperaturesData , 12 * 4 }, // 12 parameters each 4bytes // ---- - {Gui::GuiActionType::idAlarmStatus , 4 * 4 + 2 }, // 4 parameters each 4bytes + 1 parameter 2bytes - {Gui::GuiActionType::idAlarmTriggered , 1 * 4 }, // 1 parameter each 4bytes - {Gui::GuiActionType::idAlarmCleared , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AlarmStatus , 4 * 4 + 2 }, // 4 parameters each 4bytes + 1 parameter 2bytes + {Gui::GuiActionType::ID_AlarmTriggered , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AlarmCleared , 1 * 4 }, // 1 parameter each 4bytes // ---- - {Gui::GuiActionType::idTreatmentRanges , 6 * 4 }, // 6 parameters each 4bytes - {Gui::GuiActionType::idTreatmentState , 3 * 4 }, // 3 parameters each 4bytes + {Gui::GuiActionType::ID_TreatmentRanges , 6 * 4 }, // 6 parameters each 4bytes + {Gui::GuiActionType::ID_TreatmentState , 3 * 4 }, // 3 parameters each 4bytes // ---- - {Gui::GuiActionType::idAdjustBloodDialysateReq , 2 * 4 }, // 2 parameters each 4bytes - {Gui::GuiActionType::idAdjustBloodDialysateRsp , 4 * 4 }, // 4 parameters each 4bytes + {Gui::GuiActionType::ID_AdjustBloodDialysateReq , 2 * 4 }, // 2 parameters each 4bytes + {Gui::GuiActionType::ID_AdjustBloodDialysateRsp , 4 * 4 }, // 4 parameters each 4bytes // ---- - {Gui::GuiActionType::idAdjustDurationReq , 1 * 4 }, // 1 parameter each 4bytes - {Gui::GuiActionType::idAdjustDurationRsp , 4 * 4 }, // 4 parameters each 4bytes + {Gui::GuiActionType::ID_AdjustDurationReq , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AdjustDurationRsp , 4 * 4 }, // 4 parameters each 4bytes // ---- - {Gui::GuiActionType::idAdjustUltrafiltrationStateReq , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq , 1 * 4 }, // 1 parameter each 4bytes // ---- - {Gui::GuiActionType::idAdjustUltrafiltrationEditReq , 1 * 4 }, // 1 parameter each 4bytes - {Gui::GuiActionType::idAdjustUltrafiltrationEditRsp , 8 * 4 }, // 8 parameters each 4bytes + {Gui::GuiActionType::ID_AdjustUltrafiltrationEditReq , 1 * 4 }, // 1 parameter each 4bytes + {Gui::GuiActionType::ID_AdjustUltrafiltrationEditRsp , 8 * 4 }, // 8 parameters each 4bytes // ---- - {Gui::GuiActionType::idAdjustUltrafiltrationConfirmReq , 2 * 4 }, // 2 parameters each 4bytes - {Gui::GuiActionType::idAdjustUltrafiltrationConfirmRsp , 5 * 4 }, + {Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmReq , 2 * 4 }, // 2 parameters each 4bytes + {Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmRsp , 5 * 4 }, // ---- - {Gui::GuiActionType::idCANBusFaultCount , 1 }, - {Gui::GuiActionType::idRawData , 255 }, - {Gui::GuiActionType::idAcknow , 0 }, - {Gui::GuiActionType::idAcknowGeneric , 1 }, + {Gui::GuiActionType::ID_CANBusFaultCount , 1 }, + {Gui::GuiActionType::ID_RawData , 255 }, + {Gui::GuiActionType::ID_Acknow , 0 }, + {Gui::GuiActionType::ID_AcknowGeneric , 1 }, }; @@ -169,7 +169,7 @@ struct Message { // TODO : Should be converted to MessageModel class // no time left for now !!! Can_Id can_id; Sequence sequence = 0; // seq 0 is invalid - Gui::GuiActionType actionId = Gui::GuiActionType::idUnknown; + Gui::GuiActionType actionId = Gui::GuiActionType::ID_Unknown; int length = 0; QByteArray head; QByteArray data; Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -22,6 +22,14 @@ using namespace Can; +#define EMIT_RECEIVE_SIGNAL(vID, vMODEL) \ +{ \ + vMODEL mModel; \ + ok = prepareData(vMessage, vID, mModel, vData); \ + if (ok) emit didActionReceive(mModel.data()); \ +} \ +break; + /*! * \brief MessageInterpreter::MessageInterpreter * \details Constructor @@ -144,7 +152,7 @@ vPayload.clear(); int count = vData.count(); switch (vActionId) { // notice we are in transmit mode - case Gui::GuiActionType::idPowerOff: + case Gui::GuiActionType::ID_PowerOff: if (count) { vPayload += vData[0].toUInt(); } else { @@ -155,7 +163,7 @@ LOG_EVENT(mSenderID + QString("PowerOff," + QVariant(vData).toStringList().join(','))); break; - case Gui::GuiActionType::idKeepAlive: + case Gui::GuiActionType::ID_KeepAlive: // Nothing needs to be done. // KeepAlive has No data. // Mentioned in the switch/case to be registered as a valid message. @@ -167,47 +175,47 @@ LOG_EVENT(mSenderID + QString("CheckIn")); break; - case Gui::GuiActionType::idAcknow: + case Gui::GuiActionType::ID_Acknow: // Nothing needs to be done. // Acknow has No data. // Mentioned in the switch/case to be registered as a valid message. break; - case Gui::GuiActionType::idRawData: + case Gui::GuiActionType::ID_RawData: if (count) { vPayload = Format::fromVariant(vData[0]); } break; - case Gui::GuiActionType::idAdjustBloodDialysateReq: + case Gui::GuiActionType::ID_AdjustBloodDialysateReq: if (count) { vPayload = Format::fromVariant(vData); } LOG_EVENT(mSenderID + AdjustBloodDialysateRequestData::toString(vData)); break; - case Gui::GuiActionType::idAdjustDurationReq: + case Gui::GuiActionType::ID_AdjustDurationReq: if (count) { vPayload = Format::fromVariant(vData); } LOG_EVENT(mSenderID + AdjustDurationRequestData::toString(vData)); break; - case Gui::GuiActionType::idAdjustUltrafiltrationStateReq: + case Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq: if (count) { vPayload = Format::fromVariant(vData); } LOG_EVENT(mSenderID + AdjustUltrafiltrationStateRequestData::toString(vData)); break; - case Gui::GuiActionType::idAdjustUltrafiltrationEditReq: + case Gui::GuiActionType::ID_AdjustUltrafiltrationEditReq: if (count) { vPayload = Format::fromVariant(vData); } LOG_EVENT(mSenderID + AdjustUltrafiltrationEditRequestData::toString(vData)); break; - case Gui::GuiActionType::idAdjustUltrafiltrationConfirmReq: + case Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmReq: if (count) { vPayload = Format::fromVariant(vData); } @@ -277,31 +285,31 @@ //qDebug() << vMessage.actionId; switch (vMessage.actionId) { // notice we are in receive mode // ----- Debug - case Gui::GuiActionType::idCANBusFaultCount : ok = canbusFaultCountData (vMessage, vData); break; + case Gui::GuiActionType::ID_CANBusFaultCount : ok = canbusFaultCountData (vMessage, vData); break; // ----- Datum - case Gui::GuiActionType::idTreatmentTime : ok = treatmentTimeData (vMessage, vData); break; - case Gui::GuiActionType::idBloodFlow : ok = bloodFlowData (vMessage, vData); break; - case Gui::GuiActionType::idDialysateInletFlow : ok = dialysateInletFlowData (vMessage, vData); break; - case Gui::GuiActionType::idDialysateOutletFlow : ok = dialysateOutletFlowData (vMessage, vData); break; - case Gui::GuiActionType::idTreatmentRanges : ok = treatmentRangesData (vMessage, vData); break; - case Gui::GuiActionType::idPressureOcclusion : ok = pressureOcclusionData (vMessage, vData); break; - case Gui::GuiActionType::idTreatmentState : ok = treatmentStateData (vMessage, vData); break; + case Gui::GuiActionType::ID_TreatmentTime : ok = treatmentTimeData (vMessage, vData); break; + case Gui::GuiActionType::ID_BloodFlow : ok = bloodFlowData (vMessage, vData); break; + case Gui::GuiActionType::ID_DialysateInletFlow : ok = dialysateInletFlowData (vMessage, vData); break; + case Gui::GuiActionType::ID_DialysateOutletFlow : ok = dialysateOutletFlowData (vMessage, vData); break; + case Gui::GuiActionType::ID_TreatmentRanges : ok = treatmentRangesData (vMessage, vData); break; + case Gui::GuiActionType::ID_PressureOcclusion : ok = pressureOcclusionData (vMessage, vData); break; + case Gui::GuiActionType::ID_TreatmentState : ok = treatmentStateData (vMessage, vData); break; // ----- Events - case Gui::GuiActionType::idAcknow : ok = true; break; - case Gui::GuiActionType::idPowerOff : ok = powerOff (vMessage, vData); break; - case Gui::GuiActionType::idPowerOffBroadcast : ok = true; LOG_EVENT("HD,PowerOff Warning"); break; - case Gui::GuiActionType::idAlarmStatus : ok = alarmStatus (vMessage, vData); break; - case Gui::GuiActionType::idAlarmTriggered : ok = alarmTriggered (vMessage, vData); break; - case Gui::GuiActionType::idAlarmCleared : ok = alarmCleared (vMessage, vData); break; + case Gui::GuiActionType::ID_Acknow : ok = true; break; + case Gui::GuiActionType::ID_PowerOff : ok = powerOff (vMessage, vData); break; + case Gui::GuiActionType::ID_PowerOffBroadcast : ok = true; LOG_EVENT("HD,PowerOff Warning"); break; + case Gui::GuiActionType::ID_AlarmStatus : ok = alarmStatus (vMessage, vData); break; + case Gui::GuiActionType::ID_AlarmTriggered : ok = alarmTriggered (vMessage, vData); break; + case Gui::GuiActionType::ID_AlarmCleared : ok = alarmCleared (vMessage, vData); break; // Adjustment Response Messages - case Gui::GuiActionType::idAdjustDurationRsp : ok = adjustDuration (vMessage, vData); break; - case Gui::GuiActionType::idAdjustBloodDialysateRsp : ok = adjustBloodDialysate (vMessage, vData); break; - case Gui::GuiActionType::idAdjustUltrafiltrationStateReq : ok = adjustUltrafiltrationState (vMessage, vData); break; - case Gui::GuiActionType::idAdjustUltrafiltrationEditRsp : ok = adjustUltrafiltrationEdit (vMessage, vData); break; - case Gui::GuiActionType::idAdjustUltrafiltrationConfirmRsp: ok = adjustUltrafiltrationConfirm (vMessage, vData); break; + case Gui::GuiActionType::ID_AdjustDurationRsp : ok = adjustDuration (vMessage, vData); break; + case Gui::GuiActionType::ID_AdjustBloodDialysateRsp : ok = adjustBloodDialysate (vMessage, vData); break; + case Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq : ok = adjustUltrafiltrationState (vMessage, vData); break; + case Gui::GuiActionType::ID_AdjustUltrafiltrationEditRsp : ok = adjustUltrafiltrationEdit (vMessage, vData); break; + case Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmRsp: ok = adjustUltrafiltrationConfirm (vMessage, vData); break; // unhandles messages: these will only be logged as received message // there has nothing been defined for these messages. @@ -311,14 +319,6 @@ return ok; } -#define EMIT_RECEIVE_SIGNAL(vID, vMODEL) \ -{ \ - vMODEL mModel; \ - ok = prepareData(vMessage, vID, mModel, vData); \ - if (ok) emit didActionReceive(mModel.data()); \ -} \ -break; - /*! * \brief MessageInterpreter::interpretMessage_DG * \details This method will be called @@ -339,20 +339,20 @@ vData.clear(); switch (vMessage.actionId) { // notice we are in receive mode - case Gui::GuiActionType::idDGCheckIn: + case Gui::GuiActionType::ID_DGCheckIn: ok = true; LOG_EVENT(mSenderID + QString("DG,CheckIn," + QVariant(vData).toStringList().join(','))); break; - case Gui::GuiActionType::idDGROPumpData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGROPumpData , Model::MDGROPump ) - case Gui::GuiActionType::idDGPressuresData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGPressuresData , Model::MDGPressures ) - case Gui::GuiActionType::idDGDrainPumpData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGDrainPumpData , Model::MDGDrainPump ) - case Gui::GuiActionType::idDGOperationModeData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGOperationModeData , Model::MDGOperationMode ) - case Gui::GuiActionType::idDGReservoirData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGReservoirData , Model::MDGReservoir ) - case Gui::GuiActionType::idDGValvesStatesData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGValvesStatesData , Model::MDGValvesStates ) - case Gui::GuiActionType::idDGHeatersData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGHeatersData , Model::MDGHeaters ) - case Gui::GuiActionType::idDGLoadCellReadingsData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGLoadCellReadingsData , Model::MDGLoadCellReadings ) - case Gui::GuiActionType::idDGTemperaturesData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::idDGTemperaturesData , Model::MDGTemperatures ) + case Gui::GuiActionType::ID_DGROPumpData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGROPumpData , Model::MDGROPump ) + case Gui::GuiActionType::ID_DGPressuresData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGPressuresData , Model::MDGPressures ) + case Gui::GuiActionType::ID_DGDrainPumpData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGDrainPumpData , Model::MDGDrainPump ) + case Gui::GuiActionType::ID_DGOperationModeData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGOperationModeData , Model::MDGOperationMode ) + case Gui::GuiActionType::ID_DGReservoirData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGReservoirData , Model::MDGReservoir ) + case Gui::GuiActionType::ID_DGValvesStatesData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGValvesStatesData , Model::MDGValvesStates ) + case Gui::GuiActionType::ID_DGHeatersData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGHeatersData , Model::MDGHeaters ) + case Gui::GuiActionType::ID_DGLoadCellReadingsData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGLoadCellReadingsData , Model::MDGLoadCellReadings ) + case Gui::GuiActionType::ID_DGTemperaturesData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGTemperaturesData , Model::MDGTemperatures ) // unhandles messages: these will only be logged as received message // there has nothing been defined for these messages. @@ -381,7 +381,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idCANBusFaultCount) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_CANBusFaultCount) ) return ok; QVariantList mData; int index = 0; @@ -411,7 +411,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idTreatmentTime) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_TreatmentTime) ) return ok; Model::MTreatmentTime mData; ok = mData.fromByteArray(vMessage.data); @@ -436,7 +436,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idBloodFlow)) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_BloodFlow)) return ok; Model::MBloodFlow mData; ok = mData.fromByteArray(vMessage.data); @@ -461,7 +461,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idDialysateInletFlow) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_DialysateInletFlow) ) return ok; Model::MDialysateFlow mData; ok = mData.fromByteArray(vMessage.data); @@ -486,7 +486,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idDialysateOutletFlow) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_DialysateOutletFlow) ) return ok; Model::MOutletFlow mData; ok = mData.fromByteArray(vMessage.data); @@ -511,7 +511,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idTreatmentRanges) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_TreatmentRanges) ) return ok; Model::MTreatmentRanges mData; ok = mData.fromByteArray(vMessage.data); @@ -536,7 +536,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idPressureOcclusion) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_PressureOcclusion) ) return ok; Model::MPressureOcclusion mData; ok = mData.fromByteArray(vMessage.data); @@ -561,7 +561,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idTreatmentState) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_TreatmentState) ) return ok; Model::MTreatmentState mData; ok = mData.fromByteArray(vMessage.data); @@ -592,7 +592,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idPowerOff) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_PowerOff) ) return ok; Model::MPowerOff mData; ok = mData.fromByteArray(vMessage.data); @@ -616,7 +616,7 @@ bool MessageInterpreter::alarmStatus(const Message &vMessage, QVariantList &vData) { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idAlarmStatus) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AlarmStatus) ) return ok; Model::MAlarmStatus mData; ok = mData.fromByteArray(vMessage.data); @@ -649,7 +649,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idAlarmTriggered) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AlarmTriggered) ) return ok; Model::MAlarmTriggered mData; ok = mData.fromByteArray(vMessage.data); @@ -674,7 +674,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idAlarmCleared) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AlarmCleared) ) return ok; Model::MAlarmCleared mData; ok = mData.fromByteArray(vMessage.data); @@ -700,7 +700,7 @@ bool MessageInterpreter::adjustDuration(const Message &vMessage, QVariantList &vData) { bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idAdjustDurationRsp) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AdjustDurationRsp) ) return ok; Model::MAdjustDurationResponse mData; ok = mData.fromByteArray(vMessage.data); @@ -725,7 +725,7 @@ { // TODO : review other methods bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idAdjustBloodDialysateRsp) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AdjustBloodDialysateRsp) ) return ok; Model::MAdjustBloodDialysateResponse mData; ok = mData.fromByteArray(vMessage.data); @@ -750,8 +750,8 @@ { bool ok = false; // TODO : In HD the Ultrafiltration State change shall have the rejection reason like other responses. - if ( ! isType (vMessage, Gui::GuiActionType::idAdjustUltrafiltrationStateReq) ) return ok; - if ( ! isPayloadLenValid(vMessage, Gui::GuiActionType::idAcknowGeneric ) ) return ok; + if ( ! isType (vMessage, Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq) ) return ok; + if ( ! isPayloadLenValid(vMessage, Gui::GuiActionType::ID_AcknowGeneric ) ) return ok; Model::MAdjustUltrafiltrationStateResponse mData; ok = mData.fromByteArray(vMessage.data); @@ -775,7 +775,7 @@ bool MessageInterpreter::adjustUltrafiltrationEdit(const Message &vMessage, QVariantList &vData) { bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idAdjustUltrafiltrationEditRsp) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AdjustUltrafiltrationEditRsp) ) return ok; Model::MAdjustUltrafiltrationEditResponse mData; ok = mData.fromByteArray(vMessage.data); @@ -799,7 +799,7 @@ bool MessageInterpreter::adjustUltrafiltrationConfirm(const Message &vMessage, QVariantList &vData) { bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::idAdjustUltrafiltrationConfirmRsp) ) return ok; + if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmRsp) ) return ok; Model::MAdjustUltrafiltrationConfirmResponse mData; ok = mData.fromByteArray(vMessage.data); Index: sources/gui/guicontroller.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/gui/guicontroller.cpp (.../guicontroller.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/gui/guicontroller.cpp (.../guicontroller.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -177,7 +177,7 @@ // Process the GuiView Request. // It can be processed in GuiController take action and notify GuiView switch (vAction) { - case GuiActionType::idPowerOff: + case GuiActionType::ID_PowerOff: //qApp->quit(); // GUI Controller decides (loop back) Index: sources/gui/guiglobals.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/gui/guiglobals.h (.../guiglobals.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/gui/guiglobals.h (.../guiglobals.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -39,56 +39,56 @@ * *** then it can be compared exactly the way it is with no conversion.***\n */ enum GuiActionsType_Enum /*: quint16 QML doesn't support enum types */ { - idUnknown = 0x0000, + ID_Unknown = 0x0000, - idCANBusFaultCount = 0x9909, + ID_CANBusFaultCount = 0x9909, - idRawData = 0xFFFE, + ID_RawData = 0xFFFE, - idAcknow = 0xFFFF, - idAcknowGeneric = 0x0000, //< Generic Acknowledgment is not a unique message ID and inherits its Id from the actual message. Zero is a placeholder + ID_Acknow = 0xFFFF, + ID_AcknowGeneric = 0x0000, //< Generic Acknowledgment is not a unique message ID and inherits its Id from the actual message. Zero is a placeholder - idDGCheckIn = 0x0600, - idKeepAlive = 0x0700, + ID_DGCheckIn = 0x0600, + ID_KeepAlive = 0x0700, - idPowerOff = 0x0100, - idPowerOffBroadcast = 0x0E00, - idTreatmentTime = 0x0D00, - idBloodFlow = 0x0500, - idDialysateInletFlow = 0x0800, - idDialysateOutletFlow = 0x0B00, - idTreatmentRanges = 0x1A00, // 26 - idPressureOcclusion = 0x0900, - idTreatmentState = 0x0F00, // 15 + ID_PowerOff = 0x0100, + ID_PowerOffBroadcast = 0x0E00, + ID_TreatmentTime = 0x0D00, + ID_BloodFlow = 0x0500, + ID_DialysateInletFlow = 0x0800, + ID_DialysateOutletFlow = 0x0B00, + ID_TreatmentRanges = 0x1A00, // 26 + ID_PressureOcclusion = 0x0900, + ID_TreatmentState = 0x0F00, // 15 - idAlarmStatus = 0x0200, - idAlarmTriggered = 0x0300, - idAlarmCleared = 0x0400, + ID_AlarmStatus = 0x0200, + ID_AlarmTriggered = 0x0300, + ID_AlarmCleared = 0x0400, - idDGROPumpData = 0x1F00, // 31 - idDGPressuresData = 0x2000, // 32 - idDGDrainPumpData = 0x2400, // 36 - idDGOperationModeData = 0x2700, // 39 - idDGReservoirData = 0x2800, // 40 - idDGValvesStatesData = 0x2A00, // 42 - idDGHeatersData = 0x2C00, // 44 - idDGLoadCellReadingsData = 0x0C00, // 12 - idDGTemperaturesData = 0x2D00, // 45 + ID_DGROPumpData = 0x1F00, // 31 + ID_DGPressuresData = 0x2000, // 32 + ID_DGDrainPumpData = 0x2400, // 36 + ID_DGOperationModeData = 0x2700, // 39 + ID_DGReservoirData = 0x2800, // 40 + ID_DGValvesStatesData = 0x2A00, // 42 + ID_DGHeatersData = 0x2C00, // 44 + ID_DGLoadCellReadingsData = 0x0C00, // 12 + ID_DGTemperaturesData = 0x2D00, // 45 - idAdjustBloodDialysateReq = 0x1700, // 23 - idAdjustBloodDialysateRsp = 0x1800, // 24 + ID_AdjustBloodDialysateReq = 0x1700, // 23 + ID_AdjustBloodDialysateRsp = 0x1800, // 24 - idAdjustUltrafiltrationStateReq = 0x1000, // 16 + ID_AdjustUltrafiltrationStateReq = 0x1000, // 16 // idAcknowGeneric : the response is the AcknowGeneric with the same msgID - idAdjustUltrafiltrationEditReq = 0x1100, // 17 - idAdjustUltrafiltrationEditRsp = 0x1300, // 19 + ID_AdjustUltrafiltrationEditReq = 0x1100, // 17 + ID_AdjustUltrafiltrationEditRsp = 0x1300, // 19 - idAdjustUltrafiltrationConfirmReq = 0x1500, // 21 - idAdjustUltrafiltrationConfirmRsp = 0x2E00, // 46 + ID_AdjustUltrafiltrationConfirmReq = 0x1500, // 21 + ID_AdjustUltrafiltrationConfirmRsp = 0x2E00, // 46 - idAdjustDurationReq = 0x1600, // 22 - idAdjustDurationRsp = 0x1B00, // 27 + ID_AdjustDurationReq = 0x1600, // 22 + ID_AdjustDurationRsp = 0x1B00, // 27 }; enum class GuiActionsData_Enum /*: quint8 QML doesn't support*/ { Index: sources/gui/qml/main.qml =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/gui/qml/main.qml (.../main.qml) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/gui/qml/main.qml (.../main.qml) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -66,13 +66,16 @@ onDidActionReceive: { //console.debug(vAction, vData) switch(vAction) { - case GuiActions.PowerOffBroadcast: + case GuiActions.ID_PowerOffBroadcast: _autoHideInfo.showDialog( qsTr("System is shutting down"), 5000 // if any error happens and shutdown is not successful then after 5 seconds dialog hides. ) break; + case GuiActions.ID_DGLoadCellReadingsData: + console.debug("ID_DGLoadCellReadingsData",vData) } + } } Index: sources/gui/qml/pages/ManagerHome.qml =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/gui/qml/pages/ManagerHome.qml (.../ManagerHome.qml) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/gui/qml/pages/ManagerHome.qml (.../ManagerHome.qml) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -202,7 +202,7 @@ vDGLoadCellReadings.reservoir2Bkup .toFixed(2) ] Text { - objectName: "_LoadCellReadings" + index + objectName: "_DGLoadCellReadings" + index text: modelData width: _LoadCellReadingsColumn.width horizontalAlignment: Text.AlignRight Index: sources/model/MAbstract.cpp =================================================================== diff -u --- sources/model/MAbstract.cpp (revision 0) +++ sources/model/MAbstract.cpp (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -0,0 +1,47 @@ +/*! + * + * Copyright (c) 2019-2020 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 MAbstract.cpp + * \date 7/2/2020 + * \author Behrouz NematiPour + * + */ +#include "MAbstract.h" + +using namespace Model; + +/*! + * \brief MAbstract::toVariantList + * \param vData + */ +void MAbstract::toVariantList(QVariantList &vData) const { + vData = parameters(); +} + +/*! + * \brief MAbstract::toString + * \return + */ +QString MAbstract::toString() const { + QVariantList mParameters = parameters(); + QString mString = description(); + for( const auto ¶meter : mParameters ) { + mString += _delimiter + parameter.toString(); + } + return mString; +} + +/*! + * \brief MAbstract::description + * \return + */ +QString MAbstract::description() const { + return _typeText[typeText()] + _delimiter + _unitText[unitText()] + _delimiter + infoText(); +} + + Index: sources/model/MAbstract.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/MAbstract.h (.../MAbstract.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/MAbstract.h (.../MAbstract.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -1,3 +1,17 @@ +/*! + * + * Copyright (c) 2019-2020 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 MAbstract.h + * \date 7/2/2020 + * \author Behrouz NematiPour + * + */ + #pragma once // Qt @@ -10,11 +24,45 @@ class MAbstract { +private: + QString _delimiter = ","; + +protected: + enum class Type_Enum { + eDatum, + eEvent, + }; + enum class Unit_Enum { + eUI, + eHD, + eDG, + }; + +private: + const QMap _typeText { + {Type_Enum::eDatum, "D"}, + {Type_Enum::eEvent, "E"} + }; + + const QMap _unitText { + {Unit_Enum::eUI, "UI"}, + {Unit_Enum::eHD, "HD"}, + {Unit_Enum::eDG, "DG"} + }; + public: - virtual QString toString ( ) const = 0; - virtual void toVariantList ( QVariantList &vData ) const = 0; - virtual bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) = 0; + // the model needs to implement these since each model have different meaning of the bytes from differnet souce(unit). + virtual bool fromByteArray(const QByteArray &vByteArray , int *vIndex = nullptr) = 0; + virtual Type_Enum typeText ( ) const = 0; + virtual Unit_Enum unitText ( ) const = 0; + virtual QString infoText ( ) const = 0; + virtual QVariantList parameters ( ) const = 0; + + // Non-virtuals which working with parameters virtual method. + void toVariantList(QVariantList &vData) const; + QString toString ( ) const; + QString description ( ) const; }; } Index: sources/model/dg/data/MDGDrainPumpData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGDrainPumpData.cpp (.../MDGDrainPumpData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGDrainPumpData.cpp (.../MDGDrainPumpData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,17 +15,13 @@ using namespace Model; -QString MDGDrainPump::toString() const { - return QString(stringPrefix + ",%1,%2") - .arg(_data.mRPM .value) - .arg(_data.mDAC .value); +QVariantList MDGDrainPump::parameters() const { + return { + _data.mRPM .value, + _data.mDAC .value + }; } -void MDGDrainPump::toVariantList(QVariantList &vData) const { - vData += _data.mRPM .value; - vData += _data.mDAC .value; -} - bool MDGDrainPump::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mRPM )) Index: sources/model/dg/data/MDGDrainPumpData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGDrainPumpData.h (.../MDGDrainPumpData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGDrainPumpData.h (.../MDGDrainPumpData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -31,7 +31,11 @@ friend class ::tst_models; // DG Drain Pump Data (U32) Set pt. RPM (U32) DAC value - QString stringPrefix = "D,DG,Drain Pump"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("DrainPump"); } + QVariantList parameters() const override; + struct { Types::U32 mRPM ; Types::U32 mDAC ; @@ -45,10 +49,8 @@ MDGDrainPump () {} - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) ; - Data data ( ) const ; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGHeatersData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGHeatersData.cpp (.../MDGHeatersData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGHeatersData.cpp (.../MDGHeatersData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,19 +15,14 @@ using namespace Model; -QString MDGHeaters::toString() const { - return QString(stringPrefix + ",%1,%2,%3") - .arg(_data.mMainPrimaryDC .value) - .arg(_data.mSmallPrimaryDC .value) - .arg(_data.mTrimmerDC .value); +QVariantList MDGHeaters::parameters() const { + return { + _data.mMainPrimaryDC .value, + _data.mSmallPrimaryDC .value, + _data.mTrimmerDC .value + }; } -void MDGHeaters::toVariantList(QVariantList &vData) const { - vData += _data.mMainPrimaryDC .value; - vData += _data.mSmallPrimaryDC .value; - vData += _data.mTrimmerDC .value; -} - bool MDGHeaters::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mMainPrimaryDC )) Index: sources/model/dg/data/MDGHeatersData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGHeatersData.h (.../MDGHeatersData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGHeatersData.h (.../MDGHeatersData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -31,7 +31,11 @@ friend class ::tst_models; // Heaters Data (U32) mainPrimaryDC (U32) smallPrimaryDC (U32) trimmerDC - QString stringPrefix = "D,DG,Heaters"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("Heaters"); } + QVariantList parameters() const override; + struct { Types::U32 mMainPrimaryDC ; Types::U32 mSmallPrimaryDC ; @@ -47,10 +51,8 @@ MDGHeaters () {} - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) ; - Data data ( ) const ; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGLoadCellReadingsData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGLoadCellReadingsData.cpp (.../MDGLoadCellReadingsData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGLoadCellReadingsData.cpp (.../MDGLoadCellReadingsData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,21 +15,15 @@ using namespace Model; -QString MDGLoadCellReadings::toString() const { - return QString(stringPrefix + ",%1,%2,%3,%4") - .arg(_data.mReservoir1Prim .value) - .arg(_data.mReservoir1Bkup .value) - .arg(_data.mReservoir2Prim .value) - .arg(_data.mReservoir2Bkup .value); +QVariantList MDGLoadCellReadings::parameters() const { + return { + _data.mReservoir1Prim .value, + _data.mReservoir1Bkup .value, + _data.mReservoir2Prim .value, + _data.mReservoir2Bkup .value + }; } -void MDGLoadCellReadings::toVariantList(QVariantList &vData) const { - vData += _data.mReservoir1Prim .value; - vData += _data.mReservoir1Bkup .value; - vData += _data.mReservoir2Prim .value; - vData += _data.mReservoir2Bkup .value; -} - bool MDGLoadCellReadings::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mReservoir1Prim )) Index: sources/model/dg/data/MDGLoadCellReadingsData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGLoadCellReadingsData.h (.../MDGLoadCellReadingsData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGLoadCellReadingsData.h (.../MDGLoadCellReadingsData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -31,7 +31,11 @@ friend class ::tst_models; // Load Cell Readings Data Rs1 Prim. (F32) Rs1 Bkup (F32) Rs2 Prim. (F32) Rs2 Bkup (F32) - QString stringPrefix = "D,DG,Load Cell"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("LoadCell"); } + QVariantList parameters() const override; + struct { Types::F32 mReservoir1Prim ; Types::F32 mReservoir1Bkup ; @@ -49,10 +53,8 @@ MDGLoadCellReadings () {} - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) ; - Data data ( ) const ; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGOperationModeData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGOperationModeData.cpp (.../MDGOperationModeData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGOperationModeData.cpp (.../MDGOperationModeData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,15 +15,12 @@ using namespace Model; -QString MDGOperationMode::toString() const { - return QString(stringPrefix + ",%1") - .arg(_data.mOpMode .value); +QVariantList MDGOperationMode::parameters() const { + return { + _data.mOpMode.value + }; } -void MDGOperationMode::toVariantList(QVariantList &vData) const { - vData += _data.mOpMode .value; -} - bool MDGOperationMode::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mOpMode )) @@ -33,6 +30,6 @@ MDGOperationMode::Data MDGOperationMode::data() const { Data data; - data.mOpMode = _data.mOpMode .value; + data.mOpMode = _data.mOpMode.value; return data; } Index: sources/model/dg/data/MDGOperationModeData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGOperationModeData.h (.../MDGOperationModeData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGOperationModeData.h (.../MDGOperationModeData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -31,7 +31,11 @@ friend class ::tst_models; // DG Operation Mode (U32) DG Op Mode - QString stringPrefix = "D,DG,Op Mode"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("OpMode"); } + QVariantList parameters() const override; + struct { Types::U32 mOpMode ; } _data; @@ -43,10 +47,8 @@ MDGOperationMode () {} - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) ; - Data data ( ) const ; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGPressuresData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGPressuresData.cpp (.../MDGPressuresData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGPressuresData.cpp (.../MDGPressuresData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,21 +15,15 @@ using namespace Model; -QString MDGPressures::toString() const { - return QString(stringPrefix + ",%1,%2,%3,%4") - .arg(_data.mROInletPSI .value) - .arg(_data.mROOutletPSI .value) - .arg(_data.mDrainInletPSI .value) - .arg(_data.mDrainOutletPSI .value); +QVariantList MDGPressures::parameters() const { + return { + _data.mROInletPSI .value, + _data.mROOutletPSI .value, + _data.mDrainInletPSI .value, + _data.mDrainOutletPSI .value + }; } -void MDGPressures::toVariantList(QVariantList &vData) const { - vData += _data.mROInletPSI .value; - vData += _data.mROOutletPSI .value; - vData += _data.mDrainInletPSI .value; - vData += _data.mDrainOutletPSI .value; -} - bool MDGPressures::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mROInletPSI )) Index: sources/model/dg/data/MDGPressuresData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGPressuresData.h (.../MDGPressuresData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGPressuresData.h (.../MDGPressuresData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -31,7 +31,11 @@ friend class ::tst_models; // DG Pressures Data (F32) RO inlet PSI (F32) RO outlet PSI (F32) Drain inlet PSI (F32) Drain outlet PSI - QString stringPrefix = "D,DG,Pressures"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("Pressures"); } + QVariantList parameters() const override; + struct { Types::F32 mROInletPSI ; Types::F32 mROOutletPSI ; @@ -49,10 +53,8 @@ MDGPressures () {} - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) ; - Data data ( ) const ; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGROPumpData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGROPumpData.cpp (.../MDGROPumpData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGROPumpData.cpp (.../MDGROPumpData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,19 +15,14 @@ using namespace Model; -QString MDGROPump::toString() const { - return QString(stringPrefix + ",%1,%2,%3") - .arg(_data.mPressure.value) - .arg(_data.mFlowRate.value) - .arg(_data.mPWM .value); +QVariantList MDGROPump::parameters() const { + return { + _data.mPressure.value, + _data.mFlowRate.value, + _data.mPWM .value + }; } -void MDGROPump::toVariantList(QVariantList &vData) const { - vData += _data.mPressure.value; - vData += _data.mFlowRate.value; - vData += _data.mPWM .value; -} - bool MDGROPump::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mPressure)) Index: sources/model/dg/data/MDGROPumpData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGROPumpData.h (.../MDGROPumpData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGROPumpData.h (.../MDGROPumpData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -31,7 +31,11 @@ friend class ::tst_models; // DG RO Pump Data (U32) Set pt. pressure (F32) flow rate (F32) PWM - QString stringPrefix = "D,DG,RO Pump"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("ROPump"); } + QVariantList parameters() const override; + struct { Types::U32 mPressure ; Types::F32 mFlowRate ; @@ -47,11 +51,8 @@ MDGROPump () { } - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr); - - Data data() const; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGReservoirData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGReservoirData.cpp (.../MDGReservoirData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGReservoirData.cpp (.../MDGReservoirData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,19 +15,14 @@ using namespace Model; -QString MDGReservoir::toString() const { - return QString(stringPrefix + ",%1,%2,%3") - .arg(_data.mActiveReservoir .value) - .arg(_data.mFillToVol .value) - .arg(_data.mDrainToVol .value); +QVariantList MDGReservoir::parameters() const { + return { + _data.mActiveReservoir .value, + _data.mFillToVol .value, + _data.mDrainToVol .value + }; } -void MDGReservoir::toVariantList(QVariantList &vData) const { - vData += _data.mActiveReservoir .value; - vData += _data.mFillToVol .value; - vData += _data.mDrainToVol .value; -} - bool MDGReservoir::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mActiveReservoir )) Index: sources/model/dg/data/MDGReservoirData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGReservoirData.h (.../MDGReservoirData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGReservoirData.h (.../MDGReservoirData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -31,7 +31,11 @@ friend class ::tst_models; // DG Reservoir Data (U32) active reservoir (U32) Fill to vol (mL) (U32) Drain to vol (mL) - QString stringPrefix = "D,DG,Reservoir"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("Reservoir"); } + QVariantList parameters() const override; + struct { Types::U32 mActiveReservoir ; Types::U32 mFillToVol ; @@ -47,10 +51,8 @@ MDGReservoir () {} - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) ; - Data data ( ) const ; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGTemperaturesData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGTemperaturesData.cpp (.../MDGTemperaturesData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGTemperaturesData.cpp (.../MDGTemperaturesData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,37 +15,24 @@ using namespace Model; -QString MDGTemperatures::toString() const { - return QString(stringPrefix + ",%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12") - .arg(_data.mInletPrimaryHeater .value) - .arg(_data.mOutletPrimaryHeater .value) - .arg(_data.mConductivitySensor1 .value) - .arg(_data.mConductivitySensor2 .value) - .arg(_data.mOutletRedundancy .value) - .arg(_data.mInletDialysate .value) - .arg(_data.mPrimaryHeaterThermoCouple .value) - .arg(_data.mTrimmerHeaterThermoCouple .value) - .arg(_data.mPrimaryHeaterColdJunction .value) - .arg(_data.mTrimmerHeaterColdJunction .value) - .arg(_data.mPrimaryHeaterInternal .value) - .arg(_data.mTrimmerHeaterInternal .value); +QVariantList MDGTemperatures::parameters() const +{ + return { + _data.mInletPrimaryHeater .value, + _data.mOutletPrimaryHeater .value, + _data.mConductivitySensor1 .value, + _data.mConductivitySensor2 .value, + _data.mOutletRedundancy .value, + _data.mInletDialysate .value, + _data.mPrimaryHeaterThermoCouple .value, + _data.mTrimmerHeaterThermoCouple .value, + _data.mPrimaryHeaterColdJunction .value, + _data.mTrimmerHeaterColdJunction .value, + _data.mPrimaryHeaterInternal .value, + _data.mTrimmerHeaterInternal .value + }; } -void MDGTemperatures::toVariantList(QVariantList &vData) const { - vData += _data.mInletPrimaryHeater .value; - vData += _data.mOutletPrimaryHeater .value; - vData += _data.mConductivitySensor1 .value; - vData += _data.mConductivitySensor2 .value; - vData += _data.mOutletRedundancy .value; - vData += _data.mInletDialysate .value; - vData += _data.mPrimaryHeaterThermoCouple .value; - vData += _data.mTrimmerHeaterThermoCouple .value; - vData += _data.mPrimaryHeaterColdJunction .value; - vData += _data.mTrimmerHeaterColdJunction .value; - vData += _data.mPrimaryHeaterInternal .value; - vData += _data.mTrimmerHeaterInternal .value; -} - bool MDGTemperatures::fromByteArray(const QByteArray &vByteArray, int *vIndex) { int index = 0; // message data start position if (GetValue(vByteArray, index, _data.mInletPrimaryHeater )) Index: sources/model/dg/data/MDGTemperaturesData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGTemperaturesData.h (.../MDGTemperaturesData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGTemperaturesData.h (.../MDGTemperaturesData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -34,7 +34,11 @@ // 2 - F32 Outlet primary heater 6 - F32 Inlet dialysate 10 - F32 Trimmer heater cold junction // 3 - F32 Conductivity sensor 1 7 - F32 Primary heater thermo-couple 11 - F32 Primary heater internal temperature // 4 - F32 Conductivity sensor 2 8 - F32 Trimmer heater thermo-couple 12 - F32 Trimmer heater internal temperature - QString stringPrefix = "D,DG,Temperatures"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("Temperatures"); } + QVariantList parameters() const override; + struct { Types::F32 mInletPrimaryHeater ; Types::F32 mOutletPrimaryHeater ; @@ -68,11 +72,8 @@ MDGTemperatures() { } - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr); - - Data data() const; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; } Index: sources/model/dg/data/MDGValvesStatesData.cpp =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGValvesStatesData.cpp (.../MDGValvesStatesData.cpp) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGValvesStatesData.cpp (.../MDGValvesStatesData.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -15,15 +15,12 @@ using namespace Model; -QString MDGValvesStates::toString() const { - return QString(stringPrefix + ",%1") - .arg(_data.mStates.toString("")); -} - -void MDGValvesStates::toVariantList(QVariantList &vData) const { +QVariantList MDGValvesStates::parameters() const { + QVariantList mData; for (int i = 0; i < _data.mStates.count(); i++) { - vData += _data.mStates.at(i); + mData += _data.mStates.at(i); } + return mData; } bool MDGValvesStates::fromByteArray(const QByteArray &vByteArray, int *vIndex) { Index: sources/model/dg/data/MDGValvesStatesData.h =================================================================== diff -u -r6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5 -r90bcc276f2a879169fef20e9168711cf906c0e54 --- sources/model/dg/data/MDGValvesStatesData.h (.../MDGValvesStatesData.h) (revision 6ae83fa9a1a3204864fc5b50fe906ac09e9c1ea5) +++ sources/model/dg/data/MDGValvesStatesData.h (.../MDGValvesStatesData.h) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) @@ -49,7 +49,11 @@ private: // DG Valves States (U16) Valves States - QString stringPrefix = "D,DG,Valves States"; + Type_Enum typeText () const override { return Type_Enum::eDatum; } + Unit_Enum unitText () const override { return Unit_Enum::eDG ; } + QString infoText () const override { return QString("ValvesStates"); } + QVariantList parameters() const override; + struct { Types::Flags mStates ; } _data; @@ -61,11 +65,8 @@ MDGValvesStates () { } - QString toString ( ) const ; - void toVariantList ( QVariantList &vData ) const ; - bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr); - - Data data() const; + bool fromByteArray (const QByteArray &vByteArray , int *vIndex = nullptr) override; + Data data ( ) const ; }; }