From a9a31308ae40618e49db5c6e98f131bfdebddcb7 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Wed, 14 Oct 2020 19:52:06 +0200 Subject: [PATCH] update notifications working --- datapoollocal/LocalDataPoolManager.cpp | 34 ++++++++++++++++++++------ housekeeping/HousekeepingMessage.h | 9 ++++--- ipc/CommandMessageCleaner.cpp | 2 +- pus/Service3Housekeeping.cpp | 5 ++-- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/datapoollocal/LocalDataPoolManager.cpp b/datapoollocal/LocalDataPoolManager.cpp index 13225e78..848ade5e 100644 --- a/datapoollocal/LocalDataPoolManager.cpp +++ b/datapoollocal/LocalDataPoolManager.cpp @@ -128,10 +128,10 @@ ReturnValue_t LocalDataPoolManager::performHkOperation() { continue; } if(poolObj->hasChanged()) { - // prepare and send update notification. + toReset = poolObj; } - toReset = poolObj; + } else { LocalPoolDataSetBase* dataSet = owner->getDataSetHandle( @@ -140,12 +140,22 @@ ReturnValue_t LocalDataPoolManager::performHkOperation() { continue; } if(dataSet->hasChanged()) { - // prepare and send update notification + CommandMessage notification; + HousekeepingMessage::setUpdateNotificationSetCommand( + ¬ification, receiver.dataId.sid); + ReturnValue_t result = hkQueue->sendMessage( + receiver.destinationQueue, ¬ification); + if(result != HasReturnvaluesIF::RETURN_OK) { + status = result; + } + toReset = dataSet; } - toReset = dataSet; } - handleChangeResetLogic(receiver.dataType, receiver.dataId, toReset); + if(toReset != nullptr) { + handleChangeResetLogic(receiver.dataType, + receiver.dataId, toReset); + } break; } case(ReportingType::UPDATE_SNAPSHOT): { @@ -159,8 +169,8 @@ ReturnValue_t LocalDataPoolManager::performHkOperation() { } if(poolObj->hasChanged()) { // prepare and send update snapshot. + toReset = poolObj; } - toReset = poolObj; } else { LocalPoolDataSetBase* dataSet = owner->getDataSetHandle( @@ -170,10 +180,13 @@ ReturnValue_t LocalDataPoolManager::performHkOperation() { } if(dataSet->hasChanged()) { // prepare and send update snapshot. + toReset = dataSet; } - toReset = dataSet; } - handleChangeResetLogic(receiver.dataType, receiver.dataId, toReset); + if(toReset != nullptr) { + handleChangeResetLogic(receiver.dataType, + receiver.dataId, toReset); + } break; } default: @@ -425,6 +438,11 @@ ReturnValue_t LocalDataPoolManager::handleHousekeepingMessage( dataSet, true); } + case(HousekeepingMessage::UPDATE_NOTIFICATION_SET): { + owner->handleChangedDatasetOrVariable(sid); + return HasReturnvaluesIF::RETURN_OK; + } + default: return CommandMessageIF::UNKNOWN_COMMAND; } diff --git a/housekeeping/HousekeepingMessage.h b/housekeeping/HousekeepingMessage.h index 70711be9..90bbe594 100644 --- a/housekeeping/HousekeepingMessage.h +++ b/housekeeping/HousekeepingMessage.h @@ -130,12 +130,13 @@ public: static void setUpdateSnapshotVariableCommand(CommandMessage* command, lp_id_t localPoolId, store_address_t storeId); - sid_t getUpdateNotificationSetCommand(const CommandMessage* command); - lp_id_t getUpdateNotificationVariableCommand(const CommandMessage* command); + static sid_t getUpdateNotificationSetCommand(const CommandMessage* command); + static lp_id_t getUpdateNotificationVariableCommand( + const CommandMessage* command); - sid_t getUpdateSnapshotSetCommand(const CommandMessage* command, + static sid_t getUpdateSnapshotSetCommand(const CommandMessage* command, store_address_t* storeId); - lp_id_t getUpdateSnapshotVariableCommand(const CommandMessage* command, + static lp_id_t getUpdateSnapshotVariableCommand(const CommandMessage* command, store_address_t* storeId); /** Utility */ diff --git a/ipc/CommandMessageCleaner.cpp b/ipc/CommandMessageCleaner.cpp index fa03a9a3..6a364069 100644 --- a/ipc/CommandMessageCleaner.cpp +++ b/ipc/CommandMessageCleaner.cpp @@ -12,7 +12,7 @@ void CommandMessageCleaner::clearCommandMessage(CommandMessage* message) { switch(message->getMessageType()){ - case messagetypes::MODE_COMMAND: + case messagetypes::MODE_COMMAND: ModeMessage::clear(message); break; case messagetypes::HEALTH_COMMAND: diff --git a/pus/Service3Housekeeping.cpp b/pus/Service3Housekeeping.cpp index 3f41f541..175af026 100644 --- a/pus/Service3Housekeeping.cpp +++ b/pus/Service3Housekeeping.cpp @@ -249,8 +249,9 @@ void Service3Housekeeping::handleUnrequestedReply( } default: - sif::error << "Service3Housekeeping::handleReply: Invalid reply with " - << "reply command " << command << "!" << std::endl; + sif::error << "Service3Housekeeping::handleUnrequestedReply: Invalid " + << "reply with " << "reply command " << command << "!" + << std::endl; return; }