#include "LocalPoolOwnerBase.h" LocalPoolOwnerBase::LocalPoolOwnerBase(MessageQueueIF &queue, object_id_t objectId) : SystemObject(objectId), queue(queue), sharedPool(getObjectId()), hkHelper(this, &queue), dataset(sharedPool, lpool::testSetId) {} LocalPoolOwnerBase::~LocalPoolOwnerBase() = default; ReturnValue_t LocalPoolOwnerBase::initialize() { sharedPool.addPoolEntry(lpool::uint8VarId, &u8PoolEntry); sharedPool.addPoolEntry(lpool::floatVarId, &floatPoolEntry); sharedPool.addPoolEntry(lpool::uint32VarId, &u32PoolEntry); sharedPool.addPoolEntry(lpool::uint16Vec3Id, &u16VecPoolEntry); sharedPool.addPoolEntry(lpool::int64Vec2Id, &i64VecPoolEntry); ReturnValue_t result = hkHelper.initialize(&queue); if (result != returnvalue::OK) { return result; } return SystemObject::initialize(); } localpool::SharedPool *LocalPoolOwnerBase::getOptionalSharedPool() { return &sharedPool; } ReturnValue_t LocalPoolOwnerBase::serializeDataset(sid_t structureId, uint8_t *buf, size_t maxSize) { return returnvalue::OK; } ReturnValue_t LocalPoolOwnerBase::specifyDatasets( std::vector &setList) { return returnvalue::OK; } /* ReturnValue_t LocalPoolOwnerBase::initializeLocalDataPool(localpool::DataPool &localDataPoolMap, PeriodicHkGenerationHelper &poolManager) { // Default initialization empty for now. localDataPoolMap.emplace(lpool::uint8VarId, &u8PoolEntry); localDataPoolMap.emplace(lpool::floatVarId, &floatPoolEntry); localDataPoolMap.emplace(lpool::uint32VarId, &u32PoolEntry); localDataPoolMap.emplace(lpool::uint16Vec3Id, &u16VecPoolEntry); localDataPoolMap.emplace(lpool::int64Vec2Id, &i64VecPoolEntry); return returnvalue::OK; } */ LocalPoolObjectBase *LocalPoolOwnerBase::getPoolObjectHandle(lp_id_t localPoolId) { if (localPoolId == lpool::uint8VarId) { return &testUint8; } else if (localPoolId == lpool::uint16Vec3Id) { return &testUint16Vec; } else if (localPoolId == lpool::floatVarId) { return &testFloat; } else if (localPoolId == lpool::int64Vec2Id) { return &testInt64Vec; } else if (localPoolId == lpool::uint32VarId) { return &testUint32; } else { return &testUint8; } } ReturnValue_t LocalPoolOwnerBase::reset() { // resetSubscriptionList(); ReturnValue_t status = returnvalue::OK; { PoolReadGuard readHelper(&dataset); if (readHelper.getReadResult() != returnvalue::OK) { status = readHelper.getReadResult(); } dataset.localPoolVarUint8.value = 0; dataset.localPoolVarFloat.value = 0.0; dataset.localPoolUint16Vec.value[0] = 0; dataset.localPoolUint16Vec.value[1] = 0; dataset.localPoolUint16Vec.value[2] = 0; // dataset.setValidity(false, true); } { PoolReadGuard readHelper(&testUint32); if (readHelper.getReadResult() != returnvalue::OK) { status = readHelper.getReadResult(); } testUint32.value = 0; // testUint32.setValid(false); } { PoolReadGuard readHelper(&testInt64Vec); if (readHelper.getReadResult() != returnvalue::OK) { status = readHelper.getReadResult(); } testInt64Vec.value[0] = 0; testInt64Vec.value[1] = 0; // testInt64Vec.setValid(false); } return status; } bool LocalPoolOwnerBase::changedDataSetCallbackWasCalled(sid_t &sid, store_address_t &storeId) { bool condition = false; if (not this->changedDatasetSid.notSet()) { condition = true; } sid = changedDatasetSid; storeId = storeIdForChangedSet; this->changedDatasetSid.raw = sid_t::INVALID_SID; this->storeIdForChangedSet = store_address_t::invalid(); return condition; } bool LocalPoolOwnerBase::changedVariableCallbackWasCalled(gp_id_t &gpid, store_address_t &storeId) { bool condition = false; if (not this->changedPoolVariableGpid.notSet()) { condition = true; } gpid = changedPoolVariableGpid; storeId = storeIdForChangedVariable; this->changedPoolVariableGpid.raw = gp_id_t::INVALID_GPID; this->storeIdForChangedVariable = store_address_t::invalid(); return condition; } void LocalPoolOwnerBase::setHkDestId(MessageQueueId_t id) { hkHelper.setHkDestinationId(id); }