Index: sources/canbus/messageinterpreter.cpp =================================================================== diff -u -ra19862d191c2501faa4e8cde64804ef18b80c6b3 -r7edcaf054062754370e0abd165f17ca9941b7d07 --- sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision a19862d191c2501faa4e8cde64804ef18b80c6b3) +++ sources/canbus/messageinterpreter.cpp (.../messageinterpreter.cpp) (revision 7edcaf054062754370e0abd165f17ca9941b7d07) @@ -6,8 +6,8 @@ * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * \file messageinterpreter.cpp - * \author (last) Peter Lucia - * \date (last) 29-Jun-2020 + * \author (last) Behrouz NematiPour + * \date (last) 20-Aug-2020 * \author (original) Behrouz NematiPour * \date (original) 13-Dec-2019 * @@ -39,8 +39,8 @@ /*! * \brief MessageInterpreter::notify * \details Checks and prepares the model with the Message Data - * Regarding the type of message logs the message recived. - * Notofies observers by emiting the didActionReceive( < Data > ) signal + * Regarding the type of message logs the message received. + * Notifies observers by emitting the didActionReceive( < Data > ) signal * \param vMessage - The Denali message * \param vID - The Message ID to be checked against * \param vModel - The appropriate model for the Message Data @@ -83,8 +83,8 @@ /*! * \brief MessageInterpreter::isPayloadLenValid - * \details Checks if the Data length has been defined for this type od messsage - * if not logs Undefind Data Length error + * \details Checks if the Data length has been defined for this type of message + * if not logs Undefined Data Length error * if defined checks if the correct length of data is provided for this type of message. * if not logs Incorrect Data Length error * otherwise returns true @@ -106,16 +106,21 @@ return true; } +/*! + * \brief MessageInterpreter::logInvalidLength + * \details Logs invalid data length for the message type vActionId + * \param vActionId - Message Type + */ void MessageInterpreter::logInvalidLength(const Gui::GuiActionType &vActionId) { QString mActionIdHexString = Format::toHexString(vActionId); - LOG_DEBUG(QString("Incorrect data length for trsansmit Message with ID '%1'") + LOG_DEBUG(QString("Incorrect data length for transmit message with ID '%1'") .arg(mActionIdHexString)); } /*! * \brief MessageInterpreter::validateMessage - * \details Validate the messgae by checking its type and data + * \details Validate the message by checking its type and data * \param vMessage - The message * \param vType - The type of the message to be checked against * \return true on valid massage @@ -140,15 +145,15 @@ QString mActionIdHexString = Format::toHexString(vMessage.actionId, false, eLenMessageIDDigits); QString logMessage = tr("Unhandled Message ID (HD)") + '\n' + QString("%1 # %2 %3") - .arg(int(vMessage.can_id), 3, 16, QChar('0')) - .arg(mActionIdHexString) - .arg(QString(vMessage.data.toHex('.'))); + .arg(int(vMessage.can_id), 3, 16, QChar('0')) + .arg(mActionIdHexString) + .arg(QString(vMessage.data.toHex('.'))); LOG_DEBUG(logMessage); } /*! * \brief MessageInterpreter::logReceived - * \details Regarding the type of message logs the message recived. + * \details Regarding the type of message logs the message received. * \param vModel - the MAbstract model type */ void MessageInterpreter::logReceivedMessage(const Model::MAbstract &vModel) @@ -183,89 +188,87 @@ vPayload.clear(); int count = vData.length(); - LOG_EVENT(QString("%0").arg(vActionId)); - switch (vActionId) { // notice we are in transmit mode - case Gui::GuiActionType::ID_Acknow: // len: 0, can have zero len - break; // No data, Just registered + case Gui::GuiActionType::ID_Acknow: // len: 0, can have zero len + break; // No data, Just registered - case Gui::GuiActionType::ID_KeepAlive: // len: 255, can have any len - { - if ( count ) { // this message has a variable length - vPayload = Format::fromVariant(vData[0]); - } - LOG_EVENT(mSenderID + QString("CheckIn")); - } break; - case Gui::GuiActionType::ID_RawData: // len: 255, can have any len - { - if ( count ) { // this message has a variable length - vPayload = Format::fromVariant(vData[0]); - } - LOG_EVENT(mSenderID + QString("RawData")); + case Gui::GuiActionType::ID_KeepAlive: // len: 255, can have any len + if ( count ) { // this message has a variable length + vPayload = Format::fromVariant(vData[0]); + } + LOG_EVENT(mSenderID + QString("CheckIn")); + break; - } break; + case Gui::GuiActionType::ID_RawData: // len: 255, can have any len + if ( count ) { // this message has a variable length + vPayload = Format::fromVariant(vData[0]); + } + LOG_EVENT(mSenderID + QString("RawData")); + break; - case Gui::GuiActionType::ID_PowerOff: - { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload += Format::fromVariant(vData); - LOG_EVENT(AdjustPowerOffRequestData::toString(vData)); + case Gui::GuiActionType::ID_PowerOff: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload += Format::fromVariant(vData); + LOG_EVENT(AdjustPowerOffRequestData::toString(vData)); + break; - } break; + case Gui::GuiActionType::ID_AdjustBloodDialysateReq: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + LOG_EVENT(AdjustBloodDialysateRequestData::toString(vData)); + break; - case Gui::GuiActionType::ID_AdjustBloodDialysateReq: - { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload = Format::fromVariant(vData); - LOG_EVENT(AdjustBloodDialysateRequestData::toString(vData)); - } break; + case Gui::GuiActionType::ID_AdjustDurationReq: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + LOG_EVENT(AdjustDurationRequestData::toString(vData)); + break; - case Gui::GuiActionType::ID_AdjustDurationReq: - { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload = Format::fromVariant(vData); - LOG_EVENT(AdjustDurationRequestData::toString(vData)); - } break; + case Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + LOG_EVENT(AdjustUltrafiltrationStateRequestData::toString(vData)); + break; - case Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq: { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload = Format::fromVariant(vData); - LOG_EVENT(AdjustUltrafiltrationStateRequestData::toString(vData)); - } break; + case Gui::GuiActionType::ID_AdjustUltrafiltrationEditReq: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + LOG_EVENT(AdjustUltrafiltrationEditRequestData::toString(vData)); + break; - case Gui::GuiActionType::ID_AdjustUltrafiltrationEditReq: { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload = Format::fromVariant(vData); - LOG_EVENT(AdjustUltrafiltrationEditRequestData::toString(vData)); - } break; + case Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmReq: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + LOG_EVENT(AdjustUltrafiltrationConfirmRequestData::toString(vData)); + break; - case Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmReq: { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload = Format::fromVariant(vData); - LOG_EVENT(AdjustUltrafiltrationConfirmRequestData::toString(vData)); - } break; + case Gui::GuiActionType::ID_AdjustSalineReq: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + LOG_EVENT(AdjustSalineRequestData::toString(vData)); + break; - case Gui::GuiActionType::ID_AlarmSilenceReq: { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload = Format::fromVariant(vData); - LOG_EVENT(AlarmSilenceRequestData::toString(vData)); - } break; + case Gui::GuiActionType::ID_AlarmSilenceReq: + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + LOG_EVENT(AlarmSilenceRequestData::toString(vData)); + break; - case Gui::GuiActionType::ID_CreateTreatmentReq: { - if ( ! count ) { logInvalidLength(vActionId); return false; } - vPayload = Format::fromVariant(vData); - TreatmentParameters params; - params.fromVariantList(vData); - LOG_EVENT("GOT HERE"); - LOG_EVENT(params.toString()); - } break; + case Gui::GuiActionType::ID_CreateTreatmentReq: { + if ( ! count ) { logInvalidLength(vActionId); return false; } + vPayload = Format::fromVariant(vData); + TreatmentParameters params; + params.fromVariantList(vData); + LOG_EVENT("GOT HERE"); + LOG_EVENT(params.toString()); + } break; - default: { - QString mActionIdHexString = Format::toHexString(vActionId); - LOG_DEBUG(mSenderID + tr("Unknown transmit Message with ID '%1'").arg(mActionIdHexString)); - ok = false; - } break; + default: { + QString mActionIdHexString = Format::toHexString(vActionId); + LOG_DEBUG(mSenderID + tr("Unknown transmit Message with ID '%1'").arg(mActionIdHexString)); + ok = false; + } break; } return ok; @@ -295,7 +298,7 @@ case eChlid_DG_HD : case eChlid_DG_UI : - // case eChlid_DG_Alarm: // commented out for now. Currentlyh there is no message in this category. + // case eChlid_DG_Alarm: // commented out for now. Currently there is no message in this category. case eChlid_DG_Sync : ok = interpretMessage_DG(vMessage, vData); break; default: @@ -333,6 +336,7 @@ case Gui::GuiActionType::ID_TreatmentRanges : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentRanges ); break; case Gui::GuiActionType::ID_PressureOcclusion : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PressureOcclusion ); break; case Gui::GuiActionType::ID_TreatmentStates : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentStates ); break; + case Gui::GuiActionType::ID_Saline : ok = notify(vMessage, vData, Gui::GuiActionType::ID_Saline ); break; // ----- Events case Gui::GuiActionType::ID_HDOperationModeData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDOperationModeData ); break; @@ -348,15 +352,20 @@ // Adjustment Response Messages case Gui::GuiActionType::ID_AdjustDurationRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDurationRsp ); break; case Gui::GuiActionType::ID_AdjustBloodDialysateRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustBloodDialysateRsp); break; + case Gui::GuiActionType::ID_AdjustSalineRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSalineRsp ); break; + + // ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq); break; + // this message has been inherited from MAbstract and should use notify but since the response message is not standard can't use notify yet. + // when received gets payload len error and can't be interpreted. case Gui::GuiActionType::ID_AdjustUltrafiltrationStateReq : ok = adjustUltrafiltrationState (vMessage, vData); break; // TODO : implement notify<>() case Gui::GuiActionType::ID_AdjustUltrafiltrationEditRsp : ok = adjustUltrafiltrationEdit (vMessage, vData); break; // TODO : implement notify<>() case Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmRsp : ok = adjustUltrafiltrationConfirm (vMessage, vData); break; // TODO : implement notify<>() case Gui::GuiActionType::ID_CreateTreatmentRsp : ok = createTreatmentRespData (vMessage, vData); break; - // unhandles messages: these will only be logged as received message + // there has nothing been defined for these messages. - default : printUnhandled (vMessage ); break; + default : printUnhandled (vMessage ); break; } return ok; @@ -396,7 +405,7 @@ case Gui::GuiActionType::ID_DGTemperaturesData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DGTemperaturesData ); break; case Gui::GuiActionType::ID_DGDebugText : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DGDebugText ); break; - // unhandles messages: these will only be logged as received message + // unhandled messages: these will only be logged as received message // there has nothing been defined for these messages. default: printUnhandled (vMessage); @@ -534,7 +543,7 @@ Model::MAdjustUltrafiltrationStateResponse mData; ok = mData.fromByteArray(vMessage.data); - LOG_EVENT("HD," + mData.toString()); + LOG_EVENT(mData.toString()); mData.toVariantList(vData); emit didActionReceive(mData.data());