From 5e251705f682642b683b1b91bae7c7a5cce9bce8 Mon Sep 17 00:00:00 2001 From: "Robin.Mueller" Date: Mon, 11 Jan 2021 16:33:02 +0100 Subject: [PATCH] getter function for object iD --- datapoollocal/LocalPoolDataSetBase.cpp | 29 +++++++++++++++++++------- datapoollocal/LocalPoolDataSetBase.h | 2 ++ 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/datapoollocal/LocalPoolDataSetBase.cpp b/datapoollocal/LocalPoolDataSetBase.cpp index 163ef3420..8a39823ea 100644 --- a/datapoollocal/LocalPoolDataSetBase.cpp +++ b/datapoollocal/LocalPoolDataSetBase.cpp @@ -23,13 +23,15 @@ LocalPoolDataSetBase::LocalPoolDataSetBase(HasLocalDataPoolIF *hkOwner, #endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */ return; } - LocalDataPoolManager* hkManager = hkOwner->getHkManagerHandle(); - mutexIfSingleDataCreator = hkManager->getMutexHandle(); + hkManager = hkOwner->getHkManagerHandle(); + + if(hkManager != nullptr) { + mutexIfSingleDataCreator = hkManager->getMutexHandle(); + } + this->sid.objectId = hkOwner->getObjectId(); this->sid.ownerSetId = setId; - //mutex = MutexFactory::instance()->createMutex(); - // Data creators get a periodic helper for periodic HK data generation. if(periodicHandling) { periodicHelper = new PeriodicHousekeepingHelper(this); @@ -42,8 +44,13 @@ LocalPoolDataSetBase::LocalPoolDataSetBase(sid_t sid, PoolDataSetBase(registeredVariablesArray, maxNumberOfVariables) { HasLocalDataPoolIF* hkOwner = objectManager->get( sid.objectId); - LocalDataPoolManager* hkManager = hkOwner->getHkManagerHandle(); - mutexIfSingleDataCreator = hkManager->getMutexHandle(); + if(hkOwner != nullptr) { + hkManager = hkOwner->getHkManagerHandle(); + } + + if(hkManager != nullptr) { + mutexIfSingleDataCreator = hkManager->getMutexHandle(); + } this->sid = sid; } @@ -301,4 +308,12 @@ void LocalPoolDataSetBase::setValidity(bool valid, bool setEntriesRecursively) { this->valid = valid; } - +object_id_t LocalPoolDataSetBase::getCreatorObjectId(object_id_t objectId) { + if(hkManager != nullptr) { + HasLocalDataPoolIF* owner = hkManager->getOwner(); + if(owner != nullptr) { + return owner->getObjectId(); + } + } + return objects::NO_OBJECT; +} diff --git a/datapoollocal/LocalPoolDataSetBase.h b/datapoollocal/LocalPoolDataSetBase.h index fdd8b3c75..ccbf7b96e 100644 --- a/datapoollocal/LocalPoolDataSetBase.h +++ b/datapoollocal/LocalPoolDataSetBase.h @@ -145,6 +145,7 @@ public: void setChanged(bool changed) override; bool hasChanged() const override; + object_id_t getCreatorObjectId(object_id_t objectId); protected: sid_t sid; //! This mutex is used if the data is created by one object only. @@ -211,6 +212,7 @@ protected: bool bitGetter(const uint8_t* byte, uint8_t position) const; PeriodicHousekeepingHelper* periodicHelper = nullptr; + LocalDataPoolManager* hkManager = nullptr; };