Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r4e708c6e93443b01ac26c71a466708916ede4abf -r3c30d57c6cba7595b1e1d6b806d90ca151bc8db2 --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 4e708c6e93443b01ac26c71a466708916ede4abf) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 3c30d57c6cba7595b1e1d6b806d90ca151bc8db2) @@ -95,6 +95,10 @@ bool MessageInterpreter::isType(const Message &vMessage, Gui::GuiActionType vType) const { if ( vMessage.actionId != vType ) { + LOG_DEBUG(QString("Incorrect expected ID '%1', got '%2'") + .arg(vType) + .arg(vMessage.actionId) + ); return false; } return true; @@ -273,8 +277,10 @@ // alarms case Gui::GuiActionType::ID_AlarmSilenceReq : INTERPRET_TRANSMIT_MESSAGE(AlarmSilenceRequestData ); break; case Gui::GuiActionType::ID_AlarmUserActionReq : INTERPRET_TRANSMIT_MESSAGE(AlarmUserActionRequestData ); break; + case Gui::GuiActionType::ID_AlarmVolumeSetReq : INTERPRET_TRANSMIT_MESSAGE(AdjustHDAlarmVolumeRequestData ); break; // coco begin validated: Manually tested. This model class is a placeholder for the message 63(0x3F00) and there is no use case for this now. case Gui::GuiActionType::ID_AlarmClearedConditionReq : INTERPRET_TRANSMIT_MESSAGE(AlarmClearedConditionRequestData ); break; + case Gui::GuiActionType::ID_AlarmActiveListReq : INTERPRET_TRSMT_MT_MESSAGE(AlarmActiveListRequestData ); break; // coco end default: QString mActionIdHexString = Format::toHexString(vActionId); @@ -286,6 +292,32 @@ } /*! + * \brief MessageInterpreter::identifySource + * \details Identifies the source of the message regarding the channgel id + * \return the source of the message in enum + * \sa can::Can_Source + */ +Can_Source MessageInterpreter::identifySource(Can_Id vCanId) +{ + switch (vCanId) { + case eChlid_HD_DG : // 0x008, ///< HD => DG + case eChlid_HD_UI : // 0x020, ///< HD => UI + case eChlid_HD_Alarm: // 0x001, ///< HD alarm broadcast + case eChlid_HD_Sync : // 0x040, ///< HD sync broadcast + return Can_Source::eCan_HD; + + case eChlid_DG_HD : // 0x010, ///< DG => HD + case eChlid_DG_UI : // 0x070, ///< DG => UI + case eChlid_DG_Alarm: // 0x002, ///< DG alarm broadcast + case eChlid_DG_Sync : // 0x080, ///< DG sync broadcast + return Can_Source::eCan_DG; + + default: + return Can_Source::eCan_Unknown; + } +} + +/*! * \brief MessageInterpreter::interpretMessage * \details This method will call appropriate message interpreter * for received messages from HD or DG regarding the Can_Id. @@ -301,19 +333,11 @@ bool MessageInterpreter::interpretMessage(const Message &vMessage, QVariantList &vData) { bool ok = false; - switch (vMessage.can_id) { - case eChlid_HD_DG : // break; // 0x008 : to remove the channel from listen list remove the break comment - case eChlid_HD_UI : // break; // 0x020 : to remove the channel from listen list remove the break comment - case eChlid_HD_Alarm: // break; // 0x001 : to remove the channel from listen list remove the break comment - case eChlid_HD_Sync : /* 0x040 */ ok = interpretMessage_HD(vMessage, vData); break; - case eChlid_DG_HD : // break; // 0x010 : to remove the channel from listen list remove the break comment - case eChlid_DG_UI : // break; // 0x070 : to remove the channel from listen list remove the break comment - case eChlid_DG_Alarm: // break; // 0x002 : to remove the channel from listen list remove the break comment - case eChlid_DG_Sync : /* 0x080 */ ok = interpretMessage_DG(vMessage, vData); break; - - default: - break; + switch (identifySource(vMessage.can_id)) { + case Can_Source::eCan_HD: ok = interpretMessage_HD(vMessage, vData); break; + case Can_Source::eCan_DG: ok = interpretMessage_DG(vMessage, vData); break; + default : break; } return ok; } @@ -402,6 +426,10 @@ // ----- Post-Treatment Adjust case Gui::GuiActionType::ID_AdjustDisposableRemovalConfirmRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDisposableRemovalConfirmRsp ); 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; + case Gui::GuiActionType::ID_TreatmentLogAlarmData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentLogAlarmData ); break; + case Gui::GuiActionType::ID_TreatmentLogEventData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentLogEventData ); break; // ----- Disinfection - Adjust case Gui::GuiActionType::ID_AdjustDisinfectRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustDisinfectRsp ); break; @@ -412,16 +440,18 @@ case Gui::GuiActionType::ID_AdjustUltrafiltrationConfirmRsp : ok = adjustUltrafiltrationConfirm (vMessage, vData); break; // TODO : implement notify<>() // ----- Alarms - case Gui::GuiActionType::ID_AlarmStatus : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmStatus ); break; - case Gui::GuiActionType::ID_AlarmTriggered : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmTriggered ); break; - case Gui::GuiActionType::ID_AlarmCleared : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmCleared ); break; + case Gui::GuiActionType::ID_AlarmStatus : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmStatus ); break; + case Gui::GuiActionType::ID_AlarmTriggered : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmTriggered ); break; + case Gui::GuiActionType::ID_AlarmCleared : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmCleared ); break; + case Gui::GuiActionType::ID_AlarmVolumeSetRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmVolumeSetRsp ); break; // coco begin validated: Manually tested. This model class is a placeholder for the message 63(0x3F00) and there is no use case for this now. - case Gui::GuiActionType::ID_AlarmClearedConditionRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmClearedConditionRsp ); break; + case Gui::GuiActionType::ID_AlarmClearedConditionRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmClearedConditionRsp ); break; + case Gui::GuiActionType::ID_AlarmActiveListRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AlarmActiveListRsp ); break; // coco end // unhandled 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; @@ -445,6 +475,7 @@ bool ok = false; vData.clear(); switch (vMessage.actionId) { // notice we are in receive mode + case Gui::GuiActionType::ID_Acknow : ok = true; break; // TODO : implement notify<>() case Gui::GuiActionType::ID_DGCheckIn: // TODO : implement notify<>() ok = true; LOG_EVENT(QString("DG,CheckIn," + QVariant(vData).toStringList().join(',')));