fixed annoying bug
This commit is contained in:
parent
fa636fded5
commit
20bf7b6fc4
@ -5,4 +5,6 @@ target_sources(${LIB_FSFW_NAME}
|
|||||||
LocalPoolDataSetBase.cpp
|
LocalPoolDataSetBase.cpp
|
||||||
LocalPoolObjectBase.cpp
|
LocalPoolObjectBase.cpp
|
||||||
SharedLocalDataSet.cpp
|
SharedLocalDataSet.cpp
|
||||||
|
HasLocalDpIFUserAttorney.cpp
|
||||||
|
HasLocalDpIFManagerAttorney.cpp
|
||||||
)
|
)
|
@ -1,7 +1,8 @@
|
|||||||
#ifndef FSFW_DATAPOOLLOCAL_HASLOCALDATAPOOLIF_H_
|
#ifndef FSFW_DATAPOOLLOCAL_HASLOCALDATAPOOLIF_H_
|
||||||
#define FSFW_DATAPOOLLOCAL_HASLOCALDATAPOOLIF_H_
|
#define FSFW_DATAPOOLLOCAL_HASLOCALDATAPOOLIF_H_
|
||||||
|
|
||||||
#include <fsfw/datapoollocal/localPoolDefinitions.h>
|
#include "localPoolDefinitions.h"
|
||||||
|
|
||||||
#include "../datapool/PoolEntryIF.h"
|
#include "../datapool/PoolEntryIF.h"
|
||||||
#include "../serviceinterface/ServiceInterface.h"
|
#include "../serviceinterface/ServiceInterface.h"
|
||||||
#include "../ipc/MessageQueueSenderIF.h"
|
#include "../ipc/MessageQueueSenderIF.h"
|
||||||
|
@ -3,16 +3,16 @@
|
|||||||
#include "LocalPoolDataSetBase.h"
|
#include "LocalPoolDataSetBase.h"
|
||||||
#include "HasLocalDataPoolIF.h"
|
#include "HasLocalDataPoolIF.h"
|
||||||
|
|
||||||
LocalPoolDataSetBase* HasLocalDpIFManagerAttorney::getDataSetHandle(HasLocalDataPoolIF* interface,
|
LocalPoolDataSetBase* HasLocalDpIFManagerAttorney::getDataSetHandle(HasLocalDataPoolIF* clientIF,
|
||||||
sid_t sid) {
|
sid_t sid) {
|
||||||
return interface->getDataSetHandle(sid);
|
return clientIF->getDataSetHandle(sid);
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalPoolObjectBase* HasLocalDpIFManagerAttorney::getPoolObjectHandle(HasLocalDataPoolIF* interface,
|
LocalPoolObjectBase* HasLocalDpIFManagerAttorney::getPoolObjectHandle(HasLocalDataPoolIF* clientIF,
|
||||||
lp_id_t localPoolId) {
|
lp_id_t localPoolId) {
|
||||||
return interface->getPoolObjectHandle(localPoolId);
|
return clientIF->getPoolObjectHandle(localPoolId);
|
||||||
}
|
}
|
||||||
|
|
||||||
object_id_t HasLocalDpIFManagerAttorney::getObjectId(HasLocalDataPoolIF* interface) {
|
object_id_t HasLocalDpIFManagerAttorney::getObjectId(HasLocalDataPoolIF* clientIF) {
|
||||||
return interface->getObjectId();
|
return clientIF->getObjectId();
|
||||||
}
|
}
|
||||||
|
@ -9,12 +9,12 @@ class LocalPoolObjectBase;
|
|||||||
|
|
||||||
class HasLocalDpIFManagerAttorney {
|
class HasLocalDpIFManagerAttorney {
|
||||||
|
|
||||||
static LocalPoolDataSetBase* getDataSetHandle(HasLocalDataPoolIF* interface, sid_t sid);
|
static LocalPoolDataSetBase* getDataSetHandle(HasLocalDataPoolIF* clientIF, sid_t sid);
|
||||||
|
|
||||||
static LocalPoolObjectBase* getPoolObjectHandle(HasLocalDataPoolIF* interface,
|
static LocalPoolObjectBase* getPoolObjectHandle(HasLocalDataPoolIF* clientIF,
|
||||||
lp_id_t localPoolId);
|
lp_id_t localPoolId);
|
||||||
|
|
||||||
static object_id_t getObjectId(HasLocalDataPoolIF* interface);
|
static object_id_t getObjectId(HasLocalDataPoolIF* clientIF);
|
||||||
|
|
||||||
friend class LocalDataPoolManager;
|
friend class LocalDataPoolManager;
|
||||||
};
|
};
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
#include "HasLocalDpIFUserAttorney.h"
|
#include "HasLocalDpIFUserAttorney.h"
|
||||||
|
#include "AccessLocalPoolF.h"
|
||||||
#include "HasLocalDataPoolIF.h"
|
#include "HasLocalDataPoolIF.h"
|
||||||
|
|
||||||
AccessPoolManagerIF* HasLocalDpIFUserAttorney::getAccessorHandle(HasLocalDataPoolIF *interface) {
|
AccessPoolManagerIF* HasLocalDpIFUserAttorney::getAccessorHandle(HasLocalDataPoolIF *clientIF) {
|
||||||
return interface->getAccessorHandle();
|
return clientIF->getAccessorHandle();
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ class AccessPoolManagerIF;
|
|||||||
class HasLocalDpIFUserAttorney {
|
class HasLocalDpIFUserAttorney {
|
||||||
private:
|
private:
|
||||||
|
|
||||||
static AccessPoolManagerIF* getAccessorHandle(HasLocalDataPoolIF* interface);
|
static AccessPoolManagerIF* getAccessorHandle(HasLocalDataPoolIF* clientIF);
|
||||||
|
|
||||||
friend class LocalPoolObjectBase;
|
friend class LocalPoolObjectBase;
|
||||||
friend class LocalPoolDataSetBase;
|
friend class LocalPoolDataSetBase;
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
#ifndef FSFW_DATAPOOLLOCAL_LOCALPOOLDATASETBASE_H_
|
#ifndef FSFW_DATAPOOLLOCAL_LOCALPOOLDATASETBASE_H_
|
||||||
#define FSFW_DATAPOOLLOCAL_LOCALPOOLDATASETBASE_H_
|
#define FSFW_DATAPOOLLOCAL_LOCALPOOLDATASETBASE_H_
|
||||||
|
|
||||||
#include <fsfw/datapoollocal/localPoolDefinitions.h>
|
|
||||||
#include "MarkChangedIF.h"
|
#include "MarkChangedIF.h"
|
||||||
|
#include "localPoolDefinitions.h"
|
||||||
|
|
||||||
#include "../datapool/DataSetIF.h"
|
#include "../datapool/DataSetIF.h"
|
||||||
#include "../datapool/PoolDataSetBase.h"
|
#include "../datapool/PoolDataSetBase.h"
|
||||||
|
@ -21,8 +21,11 @@ static constexpr uint8_t INTERFACE_ID = CLASS_ID::LOCAL_POOL_OWNER_IF;
|
|||||||
static constexpr ReturnValue_t POOL_ENTRY_NOT_FOUND = MAKE_RETURN_CODE(0x00);
|
static constexpr ReturnValue_t POOL_ENTRY_NOT_FOUND = MAKE_RETURN_CODE(0x00);
|
||||||
static constexpr ReturnValue_t POOL_ENTRY_TYPE_CONFLICT = MAKE_RETURN_CODE(0x01);
|
static constexpr ReturnValue_t POOL_ENTRY_TYPE_CONFLICT = MAKE_RETURN_CODE(0x01);
|
||||||
|
|
||||||
|
//! This is the core data structure of the local data pools. Users should insert all desired
|
||||||
|
//! pool variables, using the std::map interface.
|
||||||
using DataPool = std::map<lp_id_t, PoolEntryIF*>;
|
using DataPool = std::map<lp_id_t, PoolEntryIF*>;
|
||||||
using DataPoolMapIter = DataPool::iterator;
|
using DataPoolMapIter = DataPool::iterator;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -92,7 +92,7 @@ public:
|
|||||||
|
|
||||||
// This is called by initializeAfterTaskCreation of the HK manager.
|
// This is called by initializeAfterTaskCreation of the HK manager.
|
||||||
virtual ReturnValue_t initializeLocalDataPool(
|
virtual ReturnValue_t initializeLocalDataPool(
|
||||||
LocalDataPool& localDataPoolMap,
|
localpool::DataPool& localDataPoolMap,
|
||||||
LocalDataPoolManager& poolManager) {
|
LocalDataPoolManager& poolManager) {
|
||||||
// Default initialization empty for now.
|
// Default initialization empty for now.
|
||||||
localDataPoolMap.emplace(lpool::uint8VarId,
|
localDataPoolMap.emplace(lpool::uint8VarId,
|
||||||
@ -109,7 +109,16 @@ public:
|
|||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalDataPoolManager* getHkManagerHandle() override {
|
/**
|
||||||
|
* This function can be used by data pool consumers to retrieve a handle
|
||||||
|
* which allows subscriptions to dataset and variable updates.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
virtual ProvidesDataPoolSubscriptionIF* getSubscriptionInterface() override {
|
||||||
|
return &hkManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
virtual AccessPoolManagerIF* getAccessorHandle() override {
|
||||||
return &hkManager;
|
return &hkManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,15 +81,15 @@ TEST_CASE("LocalPoolVariable" , "[LocPoolVarTest]") {
|
|||||||
lp_var_t<uint8_t> invalidVariable = lp_var_t<uint8_t>(
|
lp_var_t<uint8_t> invalidVariable = lp_var_t<uint8_t>(
|
||||||
objects::TEST_LOCAL_POOL_OWNER_BASE, 0xffffffff);
|
objects::TEST_LOCAL_POOL_OWNER_BASE, 0xffffffff);
|
||||||
REQUIRE(invalidVariable.read() ==
|
REQUIRE(invalidVariable.read() ==
|
||||||
static_cast<int>(HasLocalDataPoolIF::POOL_ENTRY_NOT_FOUND));
|
static_cast<int>(localpool::POOL_ENTRY_NOT_FOUND));
|
||||||
|
|
||||||
REQUIRE(invalidVariable.commit() ==
|
REQUIRE(invalidVariable.commit() ==
|
||||||
static_cast<int>(HasLocalDataPoolIF::POOL_ENTRY_NOT_FOUND));
|
static_cast<int>(localpool::POOL_ENTRY_NOT_FOUND));
|
||||||
// now try to access with wrong type
|
// now try to access with wrong type
|
||||||
lp_var_t<int8_t> invalidVariable2 = lp_var_t<int8_t>(
|
lp_var_t<int8_t> invalidVariable2 = lp_var_t<int8_t>(
|
||||||
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint8VarId);
|
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint8VarId);
|
||||||
REQUIRE(invalidVariable2.read() ==
|
REQUIRE(invalidVariable2.read() ==
|
||||||
static_cast<int>(HasLocalDataPoolIF::POOL_ENTRY_TYPE_CONFLICT));
|
static_cast<int>(localpool::POOL_ENTRY_TYPE_CONFLICT));
|
||||||
|
|
||||||
lp_var_t<uint8_t> readOnlyVar = lp_var_t<uint8_t>(
|
lp_var_t<uint8_t> readOnlyVar = lp_var_t<uint8_t>(
|
||||||
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint8VarId,
|
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint8VarId,
|
||||||
|
@ -91,17 +91,17 @@ TEST_CASE("LocalPoolVector" , "[LocPoolVecTest]") {
|
|||||||
lp_vec_t<uint16_t, 3> invalidVector = lp_vec_t<uint16_t, 3>(
|
lp_vec_t<uint16_t, 3> invalidVector = lp_vec_t<uint16_t, 3>(
|
||||||
objects::TEST_LOCAL_POOL_OWNER_BASE, 0xffffffff);
|
objects::TEST_LOCAL_POOL_OWNER_BASE, 0xffffffff);
|
||||||
REQUIRE(invalidVector.read() ==
|
REQUIRE(invalidVector.read() ==
|
||||||
static_cast<int>(HasLocalDataPoolIF::POOL_ENTRY_NOT_FOUND));
|
static_cast<int>(localpool::POOL_ENTRY_NOT_FOUND));
|
||||||
REQUIRE(invalidVector.commit() ==
|
REQUIRE(invalidVector.commit() ==
|
||||||
static_cast<int>(HasLocalDataPoolIF::POOL_ENTRY_NOT_FOUND));
|
static_cast<int>(localpool::POOL_ENTRY_NOT_FOUND));
|
||||||
|
|
||||||
// now try to access with wrong type
|
// now try to access with wrong type
|
||||||
lp_vec_t<uint32_t, 3> invalidVector2 = lp_vec_t<uint32_t, 3>(
|
lp_vec_t<uint32_t, 3> invalidVector2 = lp_vec_t<uint32_t, 3>(
|
||||||
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint16Vec3Id);
|
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint16Vec3Id);
|
||||||
REQUIRE(invalidVector2.read() ==
|
REQUIRE(invalidVector2.read() ==
|
||||||
static_cast<int>(HasLocalDataPoolIF::POOL_ENTRY_TYPE_CONFLICT));
|
static_cast<int>(localpool::POOL_ENTRY_TYPE_CONFLICT));
|
||||||
REQUIRE(invalidVector2.commit() ==
|
REQUIRE(invalidVector2.commit() ==
|
||||||
static_cast<int>(HasLocalDataPoolIF::POOL_ENTRY_TYPE_CONFLICT));
|
static_cast<int>(localpool::POOL_ENTRY_TYPE_CONFLICT));
|
||||||
|
|
||||||
lp_vec_t<uint16_t, 3> writeOnlyVec = lp_vec_t<uint16_t, 3>(
|
lp_vec_t<uint16_t, 3> writeOnlyVec = lp_vec_t<uint16_t, 3>(
|
||||||
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint16Vec3Id,
|
objects::TEST_LOCAL_POOL_OWNER_BASE, lpool::uint16Vec3Id,
|
||||||
|
Loading…
Reference in New Issue
Block a user