Updated FSFW to upstream development #5
@ -14,6 +14,10 @@ PoolDataSetBase::~PoolDataSetBase() {}
|
|||||||
|
|
||||||
|
|
||||||
ReturnValue_t PoolDataSetBase::registerVariable(PoolVariableIF *variable) {
|
ReturnValue_t PoolDataSetBase::registerVariable(PoolVariableIF *variable) {
|
||||||
|
if(registeredVariables == nullptr) {
|
||||||
|
/* Underlying container invalid */
|
||||||
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
|
}
|
||||||
if (state != States::STATE_SET_UNINITIALISED) {
|
if (state != States::STATE_SET_UNINITIALISED) {
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::error << "DataSet::registerVariable: Call made in wrong position." << std::endl;
|
sif::error << "DataSet::registerVariable: Call made in wrong position." << std::endl;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
SharedLocalDataSet::SharedLocalDataSet(object_id_t objectId, sid_t sid,
|
SharedLocalDataSet::SharedLocalDataSet(object_id_t objectId, sid_t sid,
|
||||||
const size_t maxSize): SystemObject(objectId),
|
const size_t maxSize): SystemObject(objectId),
|
||||||
LocalPoolDataSetBase(sid, nullptr, maxSize) {
|
LocalPoolDataSetBase(sid, nullptr, maxSize), poolVarVector(maxSize) {
|
||||||
this->setContainer(poolVarVector.data());
|
this->setContainer(poolVarVector.data());
|
||||||
datasetLock = MutexFactory::instance()->createMutex();
|
datasetLock = MutexFactory::instance()->createMutex();
|
||||||
}
|
}
|
||||||
@ -11,7 +11,7 @@ SharedLocalDataSet::SharedLocalDataSet(object_id_t objectId, sid_t sid,
|
|||||||
SharedLocalDataSet::SharedLocalDataSet(object_id_t objectId,
|
SharedLocalDataSet::SharedLocalDataSet(object_id_t objectId,
|
||||||
HasLocalDataPoolIF *owner, uint32_t setId,
|
HasLocalDataPoolIF *owner, uint32_t setId,
|
||||||
const size_t maxSize): SystemObject(objectId),
|
const size_t maxSize): SystemObject(objectId),
|
||||||
LocalPoolDataSetBase(owner, setId, nullptr, maxSize) {
|
LocalPoolDataSetBase(owner, setId, nullptr, maxSize), poolVarVector(maxSize) {
|
||||||
this->setContainer(poolVarVector.data());
|
this->setContainer(poolVarVector.data());
|
||||||
datasetLock = MutexFactory::instance()->createMutex();
|
datasetLock = MutexFactory::instance()->createMutex();
|
||||||
}
|
}
|
||||||
|
@ -255,11 +255,27 @@ TEST_CASE("DataSetTest" , "[DataSetTest]") {
|
|||||||
|
|
||||||
SECTION("SharedDataSet") {
|
SECTION("SharedDataSet") {
|
||||||
object_id_t sharedSetId = objects::SHARED_SET_ID;
|
object_id_t sharedSetId = objects::SHARED_SET_ID;
|
||||||
SharedLocalDataSet sharedSet(sharedSetId, poolOwner, 2, 5);
|
SharedLocalDataSet sharedSet(sharedSetId, poolOwner, lpool::testSetId, 5);
|
||||||
|
localSet.localPoolVarUint8.setReadWriteMode(pool_rwm_t::VAR_WRITE);
|
||||||
|
localSet.localPoolUint16Vec.setReadWriteMode(pool_rwm_t::VAR_WRITE);
|
||||||
|
CHECK(sharedSet.registerVariable(&localSet.localPoolVarUint8) == retval::CATCH_OK);
|
||||||
|
CHECK(sharedSet.registerVariable(&localSet.localPoolUint16Vec) == retval::CATCH_OK);
|
||||||
CHECK(sharedSet.initialize() == retval::CATCH_OK);
|
CHECK(sharedSet.initialize() == retval::CATCH_OK);
|
||||||
CHECK(sharedSet.lockDataset() == retval::CATCH_OK);
|
CHECK(sharedSet.lockDataset() == retval::CATCH_OK);
|
||||||
|
|
||||||
CHECK(sharedSet.unlockDataset() == retval::CATCH_OK);
|
CHECK(sharedSet.unlockDataset() == retval::CATCH_OK);
|
||||||
|
|
||||||
|
{
|
||||||
|
//PoolReadGuard rg(&sharedSet);
|
||||||
|
//CHECK(rg.getReadResult() == retval::CATCH_OK);
|
||||||
|
localSet.localPoolVarUint8.value = 5;
|
||||||
|
localSet.localPoolUint16Vec.value[0] = 1;
|
||||||
|
localSet.localPoolUint16Vec.value[1] = 2;
|
||||||
|
localSet.localPoolUint16Vec.value[2] = 3;
|
||||||
|
CHECK(sharedSet.commit() == retval::CATCH_OK);
|
||||||
|
}
|
||||||
|
|
||||||
|
sharedSet.setReadCommitProtectionBehaviour(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we need to reset the subscription list because the pool owner
|
/* we need to reset the subscription list because the pool owner
|
||||||
|
Loading…
Reference in New Issue
Block a user