Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r40c09957821fb3779fa06214a856c20cca110e56 -r38ae7b93679d05a54fc460dac68891562d7da72d --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 40c09957821fb3779fa06214a856c20cca110e56) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 38ae7b93679d05a54fc460dac68891562d7da72d) @@ -1,13 +1,13 @@ /*! * - * Copyright (c) 2020-2022 Diality Inc. - All Rights Reserved. + * Copyright (c) 2020-2024 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 MessageInterpreter.cpp - * \author (last) Behrouz NematiPour - * \date (last) 04-Oct-2022 + * \author (last) Dara Navaei + * \date (last) 06-May-2024 * \author (original) Behrouz NematiPour * \date (original) 26-Aug-2020 * @@ -29,15 +29,14 @@ #define DISABLE_CHECKIN_LOG 0 #define DEBUG_SIGNAL(vID, vMODEL) // qDebug() << vID << vMODEL; - // a macro to simplify the transmit message // would be better later to be replaced by a template method // like the notify method of received messages #define INTERPRET_TRANSMIT_MESSAGE(vMODEL) \ if ( ! length ) { logInvalidLength(vActionId); return false; } \ vCanId = vMODEL::canid(); \ vPayload = Format::fromVariant(vData); \ - LOG_EVENT(vMODEL::toString(vData)); \ + LOG_APPED_MSG(vActionId, vMODEL::toString(vData)); \ DEBUG_SIGNAL(0, typeid(vMODEL).name()) // another version of the INTERPRET_TRANSMIT_MESSAGE for empty messages @@ -46,7 +45,7 @@ if ( length ) { logInvalidLength(vActionId); return false; } \ vCanId = vMODEL::canid(); \ vPayload = Format::fromVariant(vData); \ - LOG_EVENT(vMODEL::toString(vData)); \ + LOG_APPED_MSG(vActionId, vMODEL::toString(vData)); \ DEBUG_SIGNAL(0, typeid(vMODEL).name()) /*! @@ -82,7 +81,7 @@ if ( ! ok ) return false; // disabled coco end emit didActionReceive(tModel.data()); - logReceivedMessage(tModel); + LOG_APPED_MSG(vIdCheck, tModel.toString()); DEBUG_SIGNAL(vIdCheck, typeid(TModel).name()) return ok; } @@ -183,23 +182,6 @@ } /*! - * \brief MessageInterpreter::logReceived - * \details Regarding the type of message logs the message received. - * \param vModel - the MAbstract model type - */ -void MessageInterpreter::logReceivedMessage(const Model::MAbstract &vModel) -{ - switch (vModel.typeText()) { - case Model::MAbstract::Type_Enum::eDatum: - LOG_DATUM(vModel.toString()); - break; - case Model::MAbstract::Type_Enum::eEvent: - LOG_EVENT(vModel.toString()); - break; - } -} - -/*! * \brief MessageInterpreter::interpretMessage * \details This method will be called * to interpret messages from UI regarding vActionId. @@ -226,21 +208,25 @@ case Gui::GuiActionType::ID_KeepAlive: // len: 255, can have any len if ( length ) { // this message has a variable length - vPayload = Format::fromVariant(vData[0]); + vPayload = Format::fromVariant(vData.first()); } - if ( gEnableCheckInLog ) - LOG_EVENT_UI(QString("CheckIn")); - + if ( ! gDisableCheckInLog ) { + LOG_APPED_UI(QString("CheckIn")); + } break; case Gui::GuiActionType::ID_RawData: // len: 255, can have any len if ( length ) { // this message has a variable length - vPayload = Format::fromVariant(vData[0]); + vPayload = Format::fromVariant(vData.first()); } - LOG_EVENT_UI(QString("RawData")); + LOG_APPED_UI(QString("RawData")); break; + // Generic Confirm case Gui::GuiActionType::ID_DuetConfirmUIr : INTERPRET_TRANSMIT_MESSAGE(DuetConfirmUIrData ); break; + // RO Water + case Gui::GuiActionType::ID_DuetRoWaterModeUIi : INTERPRET_TRANSMIT_MESSAGE(DuetRoWaterModeUIiData ); break; + // Power Off case Gui::GuiActionType::ID_PowerOff : INTERPRET_TRANSMIT_MESSAGE(AdjustPowerOffRequestData ); break; // POST case Gui::GuiActionType::ID_UIPostFinalResultData : INTERPRET_TRANSMIT_MESSAGE(AdjustUIPostFinalResultRequestData ); break; @@ -251,6 +237,8 @@ case Gui::GuiActionType::ID_AdjustHDDateTimeReq : INTERPRET_TRANSMIT_MESSAGE(AdjustHDDateTimeRequestData ); break; case Gui::GuiActionType::ID_AdjustDGDateTimeReq : INTERPRET_TRANSMIT_MESSAGE(AdjustDGDateTimeRequestData ); break; case Gui::GuiActionType::ID_AdjustServiceDatesReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustServiceDatesRequestData ); break; + case Gui::GuiActionType::ID_HDUsageInfoReq : INTERPRET_TRSMT_MT_MESSAGE(HDUsageInfoRequestData ); break; + case Gui::GuiActionType::ID_AdjustInstitutionalRecordReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustInstitutionalRequestData ); break; // Pre-Treatment case Gui::GuiActionType::ID_AdjustInitTreatmentReq : INTERPRET_TRANSMIT_MESSAGE(AdjustInitTreatmentRequestData ); break; case Gui::GuiActionType::ID_AdjustParametersValidationReq : INTERPRET_TRANSMIT_MESSAGE(AdjustParametersValidationRequestData ); break; @@ -279,12 +267,16 @@ case Gui::GuiActionType::ID_AdjustRecirculateReq : INTERPRET_TRANSMIT_MESSAGE(AdjustRecirculateRequestData ); break; case Gui::GuiActionType::ID_AdjustTreatmentEndReq : INTERPRET_TRANSMIT_MESSAGE(AdjustTreatmentEndRequestData ); break; // Post-Treatment - case Gui::GuiActionType::ID_AdjustPatientDisconnectionConfirmReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustPatientDisconnectionConfirmRequestData ); break; + case Gui::GuiActionType::ID_AdjustPatientDisconnectNotifyReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustPatientDisconnectionNotifyRequestData ); break; + case Gui::GuiActionType::ID_AdjustPatientDisconnectConfirmReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustPatientDisconnectionConfirmRequestData ); break; case Gui::GuiActionType::ID_AdjustDisposablesRemovalConfirmReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustDisposablesRemovalConfirmRequestData ); break; case Gui::GuiActionType::ID_AdjustTreatmentLogReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustTreatmentLogRequestData ); break; // Disinfection case Gui::GuiActionType::ID_AdjustDisinfectModeReq : INTERPRET_TRANSMIT_MESSAGE(AdjustDisinfectModeRequestData ); break; case Gui::GuiActionType::ID_AdjustDisinfectStartReq : INTERPRET_TRANSMIT_MESSAGE(AdjustDisinfectStartRequestData ); break; + // DG Cleaning + case Gui::GuiActionType::ID_AdjustDGCleaningUsageReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustDGCleaningUsageRequestData ); break; + // alarms case Gui::GuiActionType::ID_AlarmSilenceReq : INTERPRET_TRANSMIT_MESSAGE(AlarmSilenceRequestData ); break; case Gui::GuiActionType::ID_AlarmUserActionReq : INTERPRET_TRANSMIT_MESSAGE(AlarmUserActionRequestData ); break; @@ -293,6 +285,10 @@ case Gui::GuiActionType::ID_AlarmClearedConditionReq : INTERPRET_TRANSMIT_MESSAGE(AlarmClearedConditionRequestData ); break; case Gui::GuiActionType::ID_AlarmActiveListReq : INTERPRET_TRSMT_MT_MESSAGE(AlarmActiveListRequestData ); break; case Gui::GuiActionType::ID_AlarmTriggered : INTERPRET_TRANSMIT_MESSAGE(AlarmTriggeredRequestData ); break; + + // HD reset in service mode + case Gui::GuiActionType::ID_ResetHDInServiceModeReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustHDResetInSrvcRequestData ); break; + // disabled coco end default: QString mActionIdHexString = Format::toHexString(vActionId); @@ -434,14 +430,15 @@ // ----- Events case Gui::GuiActionType::ID_Acknow : ok = true; /* TODO : implement notify<>() */ break; case Gui::GuiActionType::ID_PowerOff : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PowerOff ); break; - case Gui::GuiActionType::ID_ShuttingDown : ok = true; LOG_EVENT("HD,ShuttingDown"); /* TODO : implement notify<>() */ break; + case Gui::GuiActionType::ID_ShuttingDown : ok = true; LOG_APPED("HD,ShuttingDown"); /* TODO : implement notify<>() */ break; case Gui::GuiActionType::ID_DuetConfirmHDi : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DuetConfirmHDi ); break; // ----- POST case Gui::GuiActionType::ID_HDPostSingleResultData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDPostSingleResultData ); break; case Gui::GuiActionType::ID_HDPostFinalResultData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDPostFinalResultData ); break; case Gui::GuiActionType::ID_UIPostFinalResultHDReq : ok = notify(vMessage, vData, Gui::GuiActionType::ID_UIPostFinalResultHDReq ); break; + case Gui::GuiActionType::ID_HDRTCEpochData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDRTCEpochData ); break; // ----- Settings case Gui::GuiActionType::ID_AdjustServiceModeRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceModeRsp ); break; @@ -450,8 +447,8 @@ case Gui::GuiActionType::ID_AdjustSerialHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSerialHDRsp ); break; case Gui::GuiActionType::ID_AdjustServiceDatesHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceDatesHDRsp ); break; case Gui::GuiActionType::ID_AdjustHDDateTimeRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustHDDateTimeRsp ); break; - - + case Gui::GuiActionType::ID_HDUsageInfoRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDUsageInfoRsp ); break; + case Gui::GuiActionType::ID_AdjustInstitutionalRecordRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustInstitutionalRecordRsp ); break; // ----- States case Gui::GuiActionType::ID_HDOperationModeData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDOperationModeData ); break; case Gui::GuiActionType::ID_PreTreatmentStates : ok = notify(vMessage, vData, Gui::GuiActionType::ID_PreTreatmentStates ); break; @@ -507,7 +504,8 @@ case Gui::GuiActionType::ID_AdjustTreatmentEndRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustTreatmentEndRsp ); break; // ----- Post-Treatment Adjust - case Gui::GuiActionType::ID_AdjustDisposableRemovalConfirmRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDisposableRemovalConfirmRsp ); break; + case Gui::GuiActionType::ID_AdjustPatientDisconnectConfirmRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustPatientDisconnectConfirmRsp ); break; + case Gui::GuiActionType::ID_AdjustDisposablesRemovalConfirmRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDisposablesRemovalConfirmRsp); break; case Gui::GuiActionType::ID_AdjustTreatmentLogRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustTreatmentLogRsp ); break; // ----- Treatment Log case Gui::GuiActionType::ID_TreatmentLogAvrgeData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentLogAvrgeData ); break; @@ -558,7 +556,7 @@ switch (vMessage.actionId) { // notice we are in receive mode case Gui::GuiActionType::ID_Acknow : ok = true; /* TODO : implement notify<>() */ break; case Gui::GuiActionType::ID_DGCheckIn : ok = true; /* TODO : implement notify<>() */ - LOG_EVENT(QString("DG,CheckIn," + QVariant(vData).toStringList().join(','))); break; + LOG_APPED(QString("DG,CheckIn," + QVariant(vData).toStringList().join(','))); break; // ----- POST case Gui::GuiActionType::ID_DGPostSingleResultData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DGPostSingleResultData ); break; case Gui::GuiActionType::ID_DGPostFinalResultData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DGPostFinalResultData ); break; @@ -584,7 +582,10 @@ case Gui::GuiActionType::ID_AdjustSerialDGRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSerialDGRsp ); break; case Gui::GuiActionType::ID_AdjustServiceDatesDGRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceDatesDGRsp ); break; case Gui::GuiActionType::ID_AdjustDGDateTimeRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDGDateTimeRsp ); break; - + case Gui::GuiActionType::ID_AdjustDGCleaningUsageRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDGCleaningUsageRsp ); break; + // RO Water + case Gui::GuiActionType::ID_DuetRoWaterStatDGq : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DuetRoWaterStatDGq ); break; + case Gui::GuiActionType::ID_DuetRoWaterModeDGr : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DuetRoWaterModeDGr ); break; // unhandled messages: these will only be logged as received message // there has nothing been defined for these messages. default : printUnhandled (vMessage ); break; @@ -640,7 +641,7 @@ Model::MAdjustUltrafiltrationEditResponse mData; ok = mData.fromByteArray(vMessage.data); - LOG_EVENT("HD," + mData.toString()); // TODO : Not Standard + LOG_APPED("HD," + mData.toString()); // TODO : Not Standard mData.toVariantList(vData); emit didActionReceive(mData.data()); @@ -664,7 +665,7 @@ Model::MAdjustUltrafiltrationConfirmResponse mData; ok = mData.fromByteArray(vMessage.data); - LOG_EVENT("HD," + mData.toString()); // TODO : Not Standard + LOG_APPED("HD," + mData.toString()); // TODO : Not Standard mData.toVariantList(vData); emit didActionReceive(mData.data()); @@ -684,7 +685,7 @@ QString category = Storage::Settings_Category_MessagesUnhandled; QStringList groups = _Settings.groups(category); // DEBUG: qDebug() << groups; - for(const auto group: groups) { + for(const auto &group: qAsConst(groups)) { bool ok; quint16 id = QString(group).toUInt(&ok,16); if (!ok) continue; @@ -702,7 +703,7 @@ bool MessageInterpreter::logUnhandledMessage(const Message &vMessage) const { bool ok = false; quint16 id = vMessage.actionId; - QString logString; + QString logString = QString("%1,").arg(id,4,16); if (_messageList.contains(id)) { ok = true; QStringList items = _messageList[id]; @@ -712,10 +713,10 @@ if (i == 0) { QString ID; switch (identifySource(vMessage.can_id, &ID)) { - case Can_Source::eCan_HD: logString = ID + ",~" + item; break; - case Can_Source::eCan_DG: logString = ID + ",~" + item; break; - case Can_Source::eCan_DI: logString = ID + ",~" + item; break; - default : logString = ID + ",~" + item; break; + case Can_Source::eCan_HD: logString += ID + ",~" + item; break; + case Can_Source::eCan_DG: logString += ID + ",~" + item; break; + case Can_Source::eCan_DI: logString += ID + ",~" + item; break; + default : logString += ID + ",~" + item; break; } } else { @@ -753,10 +754,15 @@ Types::U08 param; if (! GetValue(vMessage.data, index, param )) logString += ",?"; else logString += "," + QString::number(param.value); + } else + if ( item == "BOOL" ) { + Types::U32 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); } } } - LOG_DATUM(logString); + LOG_APPED(logString); } else { if ( gDisableUnhandledReport ) { // if the unhandled message error has been disabled, return.