some bugfixes
This commit is contained in:
parent
a6a1e65607
commit
f766398b20
@ -33,73 +33,5 @@ LocalDataSet::LocalDataSet(object_id_t ownerId,
|
|||||||
hkManager = hkOwner->getHkManagerHandle();
|
hkManager = hkOwner->getHkManagerHandle();
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalDataSet::~LocalDataSet() {
|
LocalDataSet::~LocalDataSet() {}
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t LocalDataSet::lockDataPool(uint32_t timeoutMs) {
|
|
||||||
MutexIF* mutex = hkManager->getMutexHandle();
|
|
||||||
return mutex->lockMutex(MutexIF::TimeoutType::WAITING, timeoutMs);
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t LocalDataSet::serializeWithValidityBuffer(uint8_t **buffer,
|
|
||||||
size_t *size, size_t maxSize,
|
|
||||||
SerializeIF::Endianness streamEndianness) const {
|
|
||||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_FAILED;
|
|
||||||
uint8_t validityMaskSize = std::ceil(static_cast<float>(fillCount)/8.0);
|
|
||||||
uint8_t validityMask[validityMaskSize];
|
|
||||||
uint8_t validBufferIndex = 0;
|
|
||||||
uint8_t validBufferIndexBit = 0;
|
|
||||||
for (uint16_t count = 0; count < fillCount; count++) {
|
|
||||||
if(registeredVariables[count]->isValid()) {
|
|
||||||
// set validity buffer here.
|
|
||||||
this->bitSetter(validityMask + validBufferIndex,
|
|
||||||
validBufferIndexBit);
|
|
||||||
if(validBufferIndexBit == 7) {
|
|
||||||
validBufferIndex ++;
|
|
||||||
validBufferIndexBit = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
validBufferIndexBit ++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
result = registeredVariables[count]->serialize(buffer, size, maxSize,
|
|
||||||
streamEndianness);
|
|
||||||
if (result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// copy validity buffer to end
|
|
||||||
std::memcpy(*buffer, validityMask, validityMaskSize);
|
|
||||||
*size += validityMaskSize;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t LocalDataSet::unlockDataPool() {
|
|
||||||
MutexIF* mutex = hkManager->getMutexHandle();
|
|
||||||
return mutex->unlockMutex();
|
|
||||||
}
|
|
||||||
|
|
||||||
ReturnValue_t LocalDataSet::serializeLocalPoolIds(uint8_t** buffer,
|
|
||||||
size_t* size, size_t maxSize,
|
|
||||||
SerializeIF::Endianness streamEndianness) const {
|
|
||||||
for (uint16_t count = 0; count < fillCount; count++) {
|
|
||||||
lp_id_t currentPoolId = registeredVariables[count]->getDataPoolId();
|
|
||||||
auto result = SerializeAdapter::serialize(¤tPoolId, buffer,
|
|
||||||
size, maxSize, streamEndianness);
|
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
|
||||||
sif::warning << "LocalDataSet::serializeLocalPoolIds: Serialization"
|
|
||||||
" error!" << std::endl;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
void LocalDataSet::bitSetter(uint8_t* byte, uint8_t position) const {
|
|
||||||
if(position > 7) {
|
|
||||||
sif::debug << "Pool Raw Access: Bit setting invalid position" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
uint8_t shiftNumber = position + (7 - 2 * position);
|
|
||||||
*byte |= 1 << shiftNumber;
|
|
||||||
}
|
|
||||||
|
@ -7,7 +7,7 @@ class LocalDataSet: public LocalDataSetBase {
|
|||||||
public:
|
public:
|
||||||
LocalDataSet(HasLocalDataPoolIF* hkOwner, const size_t maxSize);
|
LocalDataSet(HasLocalDataPoolIF* hkOwner, const size_t maxSize);
|
||||||
LocalDataSet(object_id_t owner, const size_t maxSize);
|
LocalDataSet(object_id_t owner, const size_t maxSize);
|
||||||
virtual~ LocalDataSet() {};
|
virtual~ LocalDataSet();
|
||||||
|
|
||||||
//! Copying forbidden for now.
|
//! Copying forbidden for now.
|
||||||
LocalDataSet(const LocalDataSet&) = delete;
|
LocalDataSet(const LocalDataSet&) = delete;
|
||||||
|
@ -36,7 +36,7 @@ LocalDataSetBase::~LocalDataSetBase() {
|
|||||||
|
|
||||||
ReturnValue_t LocalDataSetBase::lockDataPool(uint32_t timeoutMs) {
|
ReturnValue_t LocalDataSetBase::lockDataPool(uint32_t timeoutMs) {
|
||||||
MutexIF* mutex = hkManager->getMutexHandle();
|
MutexIF* mutex = hkManager->getMutexHandle();
|
||||||
return mutex->lockMutex(timeoutMs);
|
return mutex->lockMutex(MutexIF::TimeoutType::WAITING, timeoutMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataSetBase::serializeWithValidityBuffer(uint8_t **buffer,
|
ReturnValue_t LocalDataSetBase::serializeWithValidityBuffer(uint8_t **buffer,
|
@ -8,7 +8,7 @@ SharedLocalDataSet::SharedLocalDataSet(object_id_t objectId, object_id_t owner,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t SharedLocalDataSet::lockDataset(dur_millis_t mutexTimeout) {
|
ReturnValue_t SharedLocalDataSet::lockDataset(dur_millis_t mutexTimeout) {
|
||||||
return datasetLock->lockMutex(mutexTimeout);
|
return datasetLock->lockMutex(MutexIF::TimeoutType::WAITING, mutexTimeout);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t SharedLocalDataSet::unlockDataset() {
|
ReturnValue_t SharedLocalDataSet::unlockDataset() {
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#ifndef FRAMEWORK_DATAPOOLLOCAL_STATICLOCALDATASET_H_
|
#ifndef FRAMEWORK_DATAPOOLLOCAL_STATICLOCALDATASET_H_
|
||||||
#define FRAMEWORK_DATAPOOLLOCAL_STATICLOCALDATASET_H_
|
#define FRAMEWORK_DATAPOOLLOCAL_STATICLOCALDATASET_H_
|
||||||
#include <framework/datapool/PoolDataSetBase.h>
|
#include <framework/datapoollocal/LocalPoolDataSetBase.h>
|
||||||
#include <framework/objectmanager/SystemObjectIF.h>
|
#include <framework/objectmanager/SystemObjectIF.h>
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
@ -20,7 +20,7 @@ public:
|
|||||||
LocalDataSetBase(owner, poolVarList.data(), NUM_VARIABLES) {
|
LocalDataSetBase(owner, poolVarList.data(), NUM_VARIABLES) {
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual~ StaticLocalDataSet();
|
virtual~ StaticLocalDataSet() {};
|
||||||
private:
|
private:
|
||||||
std::array<PoolVariableIF*, NUM_VARIABLES> poolVarList;
|
std::array<PoolVariableIF*, NUM_VARIABLES> poolVarList;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user