Index: sources/canbus/MessageInterpreter.cpp =================================================================== diff -u -r615da996f40180040439b2a2fba22e8f24920336 -r2bc6542cebc264eb343f791f75223a1ca151465e --- sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 615da996f40180040439b2a2fba22e8f24920336) +++ sources/canbus/MessageInterpreter.cpp (.../MessageInterpreter.cpp) (revision 2bc6542cebc264eb343f791f75223a1ca151465e) @@ -169,7 +169,8 @@ */ void MessageInterpreter::printUnhandled(const Message &vMessage) const { - if ( gDisableUnhandledReport ) return; + if ( logUnhandledMessage(vMessage)) return; + if ( gDisableUnhandledReport ) return; QString mActionIdHexString = Format::toHexString(vMessage.actionId, false, eLenMessageIDDigits); QString logMessage = tr("Unhandled Message ID (HD)") + '\n' + QString("%1 # %2 %3") @@ -236,8 +237,11 @@ break; case Gui::GuiActionType::ID_PowerOff : INTERPRET_TRANSMIT_MESSAGE(AdjustPowerOffRequestData ); break; + // POST + case Gui::GuiActionType::ID_UIPostFinalResultData : INTERPRET_TRANSMIT_MESSAGE(AdjustUIPostFinalResultRequestData ); break; // Settings - case Gui::GuiActionType::ID_AdjustVersionsReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustVersionsRequestData ); break; + case Gui::GuiActionType::ID_AdjustVersionsUIRsp : INTERPRET_TRANSMIT_MESSAGE(AdjustVersionsResponseData ); break; + case Gui::GuiActionType::ID_AdjustVersionsUIReq : INTERPRET_TRANSMIT_MESSAGE(AdjustVersionsRequestData ); break; case Gui::GuiActionType::ID_AdjustHDDateTimeReq : INTERPRET_TRANSMIT_MESSAGE(AdjustHDDateTimeRequestData ); break; case Gui::GuiActionType::ID_AdjustDGDateTimeReq : INTERPRET_TRANSMIT_MESSAGE(AdjustDGDateTimeRequestData ); break; case Gui::GuiActionType::ID_AdjustServiceReq : INTERPRET_TRSMT_MT_MESSAGE(AdjustServiceRequestData ); break; @@ -282,6 +286,7 @@ // 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; + case Gui::GuiActionType::ID_AlarmTriggered : INTERPRET_TRANSMIT_MESSAGE(AlarmTriggeredRequestData ); break; // coco end default: QString mActionIdHexString = Format::toHexString(vActionId); @@ -370,7 +375,12 @@ 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"); break; // TODO : implement notify<>() + // ----- 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; + // ----- Settings + case Gui::GuiActionType::ID_AdjustVersionsHDReq : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustVersionsHDReq ); break; case Gui::GuiActionType::ID_AdjustVersionsHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustVersionsHDRsp ); break; case Gui::GuiActionType::ID_AdjustSerialHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustSerialHDRsp ); break; case Gui::GuiActionType::ID_AdjustServiceHDRsp : ok = notify(vMessage, vData, Gui::GuiActionType::ID_AdjustServiceHDRsp ); break; @@ -385,6 +395,7 @@ // ----- Datum case Gui::GuiActionType::ID_HDAccelerometerData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDAccelerometerData ); break; + case Gui::GuiActionType::ID_HDSyringePumpData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_HDSyringePumpData ); break; // ----- Datum - Treatment case Gui::GuiActionType::ID_TreatmentRanges : ok = notify(vMessage, vData, Gui::GuiActionType::ID_TreatmentRanges ); break; @@ -484,6 +495,10 @@ ok = true; LOG_EVENT(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; + // DG data messages case Gui::GuiActionType::ID_DGROPumpData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DGROPumpData ); break; case Gui::GuiActionType::ID_DGPressuresData : ok = notify(vMessage, vData, Gui::GuiActionType::ID_DGPressuresData ); break; @@ -511,10 +526,7 @@ // 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; @@ -598,3 +610,69 @@ return ok; } + +/*! + * \brief MessageInterpreter::logUnhandledMessage + * \details Search in the list of the unhandled messages and tries to extract the data and log it. + * \param vMessage - the received message. + * \return true if the message data can be extracted and logged. + */ +bool MessageInterpreter::logUnhandledMessage(const Message &vMessage) const { + bool ok = false; + quint16 id = vMessage.actionId; + if (_messageList.contains(id)) { + ok = true; + QStringList items = _messageList[id]; + QString logString; + int index = 0; + for ( int i = 0; i < items.count(); i++ ) { + QString item = items[i]; + if (i == 0) { + switch (identifySource(vMessage.can_id)) { + case Can_Source::eCan_HD: logString = "HD,~" + item; break; + case Can_Source::eCan_DG: logString = "DG,~" + item; break; + default : logString = "XX,~" + item; break; + } + } + else { + if ( item == "F32" ) { + Types::F32 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); + } else + if ( item == "S32" ) { + Types::S32 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); + } else + if ( item == "U32" ) { + Types::U32 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); + } else + if ( item == "S16" ) { + Types::S16 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); + } else + if ( item == "U16" ) { + Types::U16 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); + } else + if ( item == "S08" ) { + Types::S08 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); + } else + if ( item == "U08" ) { + Types::U08 param; + if (! GetValue(vMessage.data, index, param )) logString += ",?"; + else logString += "," + QString::number(param.value); + } + } + } + LOG_DATUM(logString); + } + return ok; +}