Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -r90bcc276f2a879169fef20e9168711cf906c0e54 -r30f83b2813e68ae3c2806399bf808b642c215b67 --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 90bcc276f2a879169fef20e9168711cf906c0e54) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 30f83b2813e68ae3c2806399bf808b642c215b67) @@ -15,20 +15,25 @@ // Qt #include +// #include // Project #include "logger.h" #include "format.h" using namespace Can; -#define EMIT_RECEIVE_SIGNAL(vID, vMODEL) \ -{ \ +#define DEBUG_RECEIVE_SIGNAL(vID, vMODEL) // Debug() << #vID << #vMODEL; + +// This define helps to prevent having multiple overloaded function for each model +#define EMIT_RECEIVE_SIGNAL(vID, vMODEL) { \ vMODEL mModel; \ ok = prepareData(vMessage, vID, mModel, vData); \ - if (ok) emit didActionReceive(mModel.data()); \ -} \ -break; + if ( ! ok ) return false; \ + emit didActionReceive(mModel.data()); \ + LOG_BASIC(mModel.toString()); \ + DEBUG_RECEIVE_SIGNAL(vID, vMODEL) \ +} /*! * \brief MessageInterpreter::MessageInterpreter @@ -124,10 +129,7 @@ { bool ok = false; if ( ! isValidMessage(vMessage, vID) ) return ok; - ok = vModel.fromByteArray(vMessage.data); - LOG_DATUM(vModel.toString()); - vModel.toVariantList(vData); return ok; } @@ -288,13 +290,13 @@ case Gui::GuiActionType::ID_CANBusFaultCount : ok = canbusFaultCountData (vMessage, vData); break; // ----- Datum - 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; + case Gui::GuiActionType::ID_TreatmentTime : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_TreatmentTime , Model::MTreatmentTime ); break; + case Gui::GuiActionType::ID_BloodFlow : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_BloodFlow , Model::MBloodFlow ); break; + case Gui::GuiActionType::ID_DialysateInletFlow : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DialysateInletFlow , Model::MDialysateFlow ); break; + case Gui::GuiActionType::ID_DialysateOutletFlow : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DialysateOutletFlow , Model::MOutletFlow ); break; + case Gui::GuiActionType::ID_TreatmentRanges : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_TreatmentRanges , Model::MTreatmentRanges ); break; + case Gui::GuiActionType::ID_PressureOcclusion : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_PressureOcclusion , Model::MPressureOcclusion ); break; + case Gui::GuiActionType::ID_TreatmentState : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_TreatmentState , Model::MTreatmentStates ); break; // ----- Events case Gui::GuiActionType::ID_Acknow : ok = true; break; @@ -305,8 +307,8 @@ case Gui::GuiActionType::ID_AlarmCleared : ok = alarmCleared (vMessage, vData); break; // Adjustment Response Messages - case Gui::GuiActionType::ID_AdjustDurationRsp : ok = adjustDuration (vMessage, vData); break; - case Gui::GuiActionType::ID_AdjustBloodDialysateRsp : ok = adjustBloodDialysate (vMessage, vData); break; + case Gui::GuiActionType::ID_AdjustDurationRsp : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_AdjustDurationRsp , Model::MAdjustDurationResponse ); break; + case Gui::GuiActionType::ID_AdjustBloodDialysateRsp : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_AdjustBloodDialysateRsp , Model::MAdjustBloodDialysateResponse ); 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; @@ -344,15 +346,15 @@ LOG_EVENT(mSenderID + QString("DG,CheckIn," + QVariant(vData).toStringList().join(','))); break; - 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 ) + case Gui::GuiActionType::ID_DGROPumpData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGROPumpData , Model::MDGROPump ); break; + case Gui::GuiActionType::ID_DGPressuresData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGPressuresData , Model::MDGPressures ); break; + case Gui::GuiActionType::ID_DGDrainPumpData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGDrainPumpData , Model::MDGDrainPump ); break; + case Gui::GuiActionType::ID_DGOperationModeData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGOperationModeData , Model::MDGOperationMode ); break; + case Gui::GuiActionType::ID_DGReservoirData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGReservoirData , Model::MDGReservoir ); break; + case Gui::GuiActionType::ID_DGValvesStatesData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGValvesStatesData , Model::MDGValvesStates ); break; + case Gui::GuiActionType::ID_DGHeatersData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGHeatersData , Model::MDGHeaters ); break; + case Gui::GuiActionType::ID_DGLoadCellReadingsData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGLoadCellReadingsData , Model::MDGLoadCellReadings ); break; + case Gui::GuiActionType::ID_DGTemperaturesData : EMIT_RECEIVE_SIGNAL(Gui::GuiActionType::ID_DGTemperaturesData , Model::MDGTemperatures ); break; // unhandles messages: these will only be logged as received message // there has nothing been defined for these messages. @@ -395,187 +397,6 @@ return ok; } -// ---------- ---------- ---------- ---------- ---------- Data ---------- ---------- ---------- ---------- ---------- // -// ---------- ---------- ---------- ---------- ---------- - HD ---------- ---------- ---------- ---------- ---------- // - -/*! - * \brief MessageInterpreter::treatmentTimeData - * \details This method interprets Treatment Time message data - * in vMessage of type Message. - * \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 data can be extracted as defined for Treatment Time Message ID - */ -bool MessageInterpreter::treatmentTimeData(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_TreatmentTime) ) return ok; - - Model::MTreatmentTime mData; - ok = mData.fromByteArray(vMessage.data); - LOG_DATUM("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! - * \brief MessageInterpreter::bloodFlowData - * \details This method interprets Blood Flow message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - Blood Flow data - * \return true if the data can be extracted as defined for Blood Flow Message ID - */ -bool MessageInterpreter::bloodFlowData(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_BloodFlow)) return ok; - - Model::MBloodFlow mData; - ok = mData.fromByteArray(vMessage.data); - LOG_DATUM("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! - * \brief MessageInterpreter::dialysateInletFlowData - * \details This method interprets Dialysate Inlet Flow message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - Dialysate Inlet Flow data - * \return true if the data can be extracted as defined for Dialysate Inlet Flow Message ID - */ -bool MessageInterpreter::dialysateInletFlowData(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_DialysateInletFlow) ) return ok; - - Model::MDialysateFlow mData; - ok = mData.fromByteArray(vMessage.data); - LOG_DATUM("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! - * \brief MessageInterpreter::dialysateOutletFlowData - * \details This method interprets Dialysate Outlet Flow message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - Dialysate Outlet Flow data - * \return true if the data can be extracted as defined for Dialysate Outlet Flow Message ID - */ -bool MessageInterpreter::dialysateOutletFlowData(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_DialysateOutletFlow) ) return ok; - - Model::MOutletFlow mData; - ok = mData.fromByteArray(vMessage.data); - LOG_DATUM("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! - * \brief MessageInterpreter::treatmentRangesData - * \details This method interprets Treatment Ranges message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - Treatment Ranges data - * \return true if the data can be extracted as defined for Treatment Ranges Message ID - */ -bool MessageInterpreter::treatmentRangesData(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_TreatmentRanges) ) return ok; - - Model::MTreatmentRanges mData; - ok = mData.fromByteArray(vMessage.data); - LOG_DATUM("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! - * \brief MessageInterpreter::pressureOcclusionData - * \details This method interprets Pressure/Occlusion message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - Pressure/Occlusion data - * \return true if the data can be extracted as defined for Pressure/Occlusion Message ID - */ -bool MessageInterpreter::pressureOcclusionData(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_PressureOcclusion) ) return ok; - - Model::MPressureOcclusion mData; - ok = mData.fromByteArray(vMessage.data); - LOG_DATUM("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! - * \brief MessageInterpreter::treatmentStateData - * \details This method interprets Treatment State message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - Treatment State data - * \return true if the data can be extracted as defined for Treatment State Message ID - */ -bool MessageInterpreter::treatmentStateData(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_TreatmentState) ) return ok; - - Model::MTreatmentState mData; - ok = mData.fromByteArray(vMessage.data); - LOG_DATUM("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -// ---------- ---------- ---------- ---------- ---------- - DG ---------- ---------- ---------- ---------- ---------- // - - // ---------- ---------- ---------- ---------- ---------- Events ---------- ---------- ---------- ---------- ---------- // // ---------- ---------- ---------- ---------- ---------- - HD ---------- ---------- ---------- ---------- ---------- // @@ -689,55 +510,6 @@ // ---------- ---------- ---------- ---------- ---------- Adjustments ---------- ---------- ---------- ---------- ---------- // /*! - * \brief MessageInterpreter::adjustDurationData - * \details This method interprets Treatment Duration Adjustment Response message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - Treatment Duration Adjustment Response data - * \return true if the data can be extracted as defined for Treatment Duration Adjustment Response Message ID - */ -bool MessageInterpreter::adjustDuration(const Message &vMessage, QVariantList &vData) -{ - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AdjustDurationRsp) ) return ok; - - Model::MAdjustDurationResponse mData; - ok = mData.fromByteArray(vMessage.data); - LOG_EVENT("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! - * \brief MessageInterpreter::adjustBloodDialysateData - * \details This method interprets AdjustBlood Dialysate Response message data - * in vMessage of type Message. - * \param vMessage - The vMessage of type Message which contains all the data, - * require to be interpreted. - * \param vData - AdjustBlood Dialysate Response data - * \return true if the data can be extracted as defined for AdjustBlood Dialysate Response Message ID - */ -bool MessageInterpreter::adjustBloodDialysate(const Message &vMessage, QVariantList &vData) -{ - // TODO : review other methods - bool ok = false; - if ( ! isValidMessage(vMessage, Gui::GuiActionType::ID_AdjustBloodDialysateRsp) ) return ok; - - Model::MAdjustBloodDialysateResponse mData; - ok = mData.fromByteArray(vMessage.data); - LOG_EVENT("HD," + mData.toString()); - - mData.toVariantList(vData); - emit didActionReceive(mData.data()); - - return ok; -} - -/*! * \brief MessageInterpreter::ultrafiltrationState * \details This method interprets Treatment Ultrafiltration State Adjustment Response message data * in vMessage of type Message. @@ -751,7 +523,7 @@ bool ok = false; // TODO : In HD the Ultrafiltration State change shall have the rejection reason like other responses. if ( ! isType (vMessage, Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq) ) return ok; - if ( ! isPayloadLenValid(vMessage, Gui::GuiActionType::ID_AcknowGeneric ) ) return ok; + if ( ! isPayloadLenValid(vMessage, Gui::GuiActionType::ID_AcknowGeneric ) ) return ok; // This is an exception It has to be changed. Model::MAdjustUltrafiltrationStateResponse mData; ok = mData.fromByteArray(vMessage.data);