sth with eclipse indentiation
This commit is contained in:
parent
d87f78f5c3
commit
e9aecdac26
@ -1,3 +1,4 @@
|
|||||||
|
#include <fsfw/timemanager/CCSDSTime.h>
|
||||||
#include <fsfw/timemanager/TimeStamperIF.h>
|
#include <fsfw/timemanager/TimeStamperIF.h>
|
||||||
#include "LocalDataPoolManager.h"
|
#include "LocalDataPoolManager.h"
|
||||||
#include "LocalPoolObjectBase.h"
|
#include "LocalPoolObjectBase.h"
|
||||||
@ -16,11 +17,11 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
object_id_t LocalDataPoolManager::defaultHkDestination =
|
object_id_t LocalDataPoolManager::defaultHkDestination =
|
||||||
objects::PUS_SERVICE_3_HOUSEKEEPING;
|
objects::PUS_SERVICE_3_HOUSEKEEPING;
|
||||||
|
|
||||||
LocalDataPoolManager::LocalDataPoolManager(HasLocalDataPoolIF* owner,
|
LocalDataPoolManager::LocalDataPoolManager(HasLocalDataPoolIF* owner,
|
||||||
MessageQueueIF* queueToUse, bool appendValidityBuffer):
|
MessageQueueIF* queueToUse, bool appendValidityBuffer):
|
||||||
appendValidityBuffer(appendValidityBuffer) {
|
appendValidityBuffer(appendValidityBuffer) {
|
||||||
if(owner == nullptr) {
|
if(owner == nullptr) {
|
||||||
sif::error << "LocalDataPoolManager::LocalDataPoolManager: "
|
sif::error << "LocalDataPoolManager::LocalDataPoolManager: "
|
||||||
<< "Invalid supplied owner!" << std::endl;
|
<< "Invalid supplied owner!" << std::endl;
|
||||||
@ -63,7 +64,7 @@ ReturnValue_t LocalDataPoolManager::initialize(MessageQueueIF* queueToUse) {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sif::error << "LocalDataPoolManager::LocalDataPoolManager: "
|
sif::error << "LocalDataPoolManager::LocalDataPoolManager: "
|
||||||
<< "Default HK destination object is invalid!" << std::endl;
|
<< "Default HK destination object is invalid!" << std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -78,17 +79,17 @@ ReturnValue_t LocalDataPoolManager::initializeAfterTaskCreation(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::initializeHousekeepingPoolEntriesOnce() {
|
ReturnValue_t LocalDataPoolManager::initializeHousekeepingPoolEntriesOnce() {
|
||||||
if(not mapInitialized) {
|
if(not mapInitialized) {
|
||||||
ReturnValue_t result = owner->initializeLocalDataPool(localPoolMap,
|
ReturnValue_t result = owner->initializeLocalDataPool(localPoolMap,
|
||||||
*this);
|
*this);
|
||||||
if(result == HasReturnvaluesIF::RETURN_OK) {
|
if(result == HasReturnvaluesIF::RETURN_OK) {
|
||||||
mapInitialized = true;
|
mapInitialized = true;
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
sif::warning << "HousekeepingManager: The map should only be initialized "
|
sif::warning << "HousekeepingManager: The map should only be initialized "
|
||||||
<< "once!" << std::endl;
|
<< "once!" << std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::performHkOperation() {
|
ReturnValue_t LocalDataPoolManager::performHkOperation() {
|
||||||
@ -125,7 +126,7 @@ ReturnValue_t LocalDataPoolManager::performHkOperation() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::handleHkUpdate(HkReceiver& receiver,
|
ReturnValue_t LocalDataPoolManager::handleHkUpdate(HkReceiver& receiver,
|
||||||
ReturnValue_t& status) {
|
ReturnValue_t& status) {
|
||||||
if(receiver.dataType == DataType::LOCAL_POOL_VARIABLE) {
|
if(receiver.dataType == DataType::LOCAL_POOL_VARIABLE) {
|
||||||
// Update packets shall only be generated from datasets.
|
// Update packets shall only be generated from datasets.
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
@ -135,7 +136,7 @@ ReturnValue_t LocalDataPoolManager::handleHkUpdate(HkReceiver& receiver,
|
|||||||
if(dataSet->hasChanged()) {
|
if(dataSet->hasChanged()) {
|
||||||
// prepare and send update notification
|
// prepare and send update notification
|
||||||
ReturnValue_t result = generateHousekeepingPacket(
|
ReturnValue_t result = generateHousekeepingPacket(
|
||||||
receiver.dataId.sid, dataSet, true);
|
receiver.dataId.sid, dataSet, true);
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
status = result;
|
status = result;
|
||||||
}
|
}
|
||||||
@ -197,58 +198,80 @@ ReturnValue_t LocalDataPoolManager::handleNotificationUpdate(
|
|||||||
ReturnValue_t LocalDataPoolManager::handleNotificationSnapshot(
|
ReturnValue_t LocalDataPoolManager::handleNotificationSnapshot(
|
||||||
HkReceiver& receiver, ReturnValue_t& status) {
|
HkReceiver& receiver, ReturnValue_t& status) {
|
||||||
MarkChangedIF* toReset = nullptr;
|
MarkChangedIF* toReset = nullptr;
|
||||||
// check whether data has changed and send messages in case it has.
|
// check whether data has changed and send messages in case it has.
|
||||||
if(receiver.dataType == DataType::LOCAL_POOL_VARIABLE) {
|
if(receiver.dataType == DataType::LOCAL_POOL_VARIABLE) {
|
||||||
LocalPoolObjectBase* poolObj = owner->getPoolObjectHandle(
|
LocalPoolObjectBase* poolObj = owner->getPoolObjectHandle(
|
||||||
receiver.dataId.localPoolId);
|
receiver.dataId.localPoolId);
|
||||||
if(poolObj == nullptr) {
|
if(poolObj == nullptr) {
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
if(poolObj->hasChanged()) {
|
|
||||||
// prepare and send update snapshot.
|
if (not poolObj->hasChanged()) {
|
||||||
CommandMessage notification;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
// todo: serialize into store with timestamp.
|
}
|
||||||
//TimeStamperIF* timeStamper = objectManager->
|
|
||||||
// get<TimeStamperIF>(objects::TIME_STAMPER)
|
// prepare and send update snapshot.
|
||||||
//HousekeepingPacketUpdate updatePacket(timeStamp, timeStampSize,
|
CommandMessage notification;
|
||||||
// owner->getDataSetHandle(receiver.dataId.sid));
|
timeval now;
|
||||||
store_address_t storeId;
|
Clock::getClock_timeval(&now);
|
||||||
HousekeepingMessage::setUpdateSnapshotSetCommand(
|
CCSDSTime::CDS_short cds;
|
||||||
¬ification, receiver.dataId.sid, storeId);
|
CCSDSTime::convertToCcsds(&cds, &now);
|
||||||
ReturnValue_t result = hkQueue->sendMessage(
|
HousekeepingPacketUpdate updatePacket(reinterpret_cast<uint8_t*>(&cds),
|
||||||
receiver.destinationQueue, ¬ification);
|
sizeof(cds), owner->getDataSetHandle(receiver.dataId.sid));
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
size_t updatePacketSize = updatePacket.getSerializedSize();
|
||||||
status = result;
|
|
||||||
}
|
store_address_t storeId;
|
||||||
toReset = poolObj;
|
uint8_t *storePtr = nullptr;
|
||||||
}
|
ReturnValue_t result = ipcStore->getFreeElement(&storeId,
|
||||||
}
|
updatePacket.getSerializedSize(), &storePtr);
|
||||||
else {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(
|
return result;
|
||||||
receiver.dataId.sid);
|
}
|
||||||
if(dataSet == nullptr) {
|
size_t serializedSize = 0;
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
result = updatePacket.serialize(&storePtr, &serializedSize,
|
||||||
}
|
updatePacketSize, SerializeIF::Endianness::MACHINE);
|
||||||
if(dataSet->hasChanged()) {
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
// prepare and send update snapshot.
|
return result;
|
||||||
CommandMessage notification;
|
}
|
||||||
// todo: serialize into store with timestamp.
|
HousekeepingMessage::setUpdateSnapshotSetCommand(¬ification,
|
||||||
store_address_t storeId;
|
receiver.dataId.sid, storeId);
|
||||||
HousekeepingMessage::setUpdateSnapshotVariableCommand(
|
result = hkQueue->sendMessage(receiver.destinationQueue,
|
||||||
¬ification, receiver.dataId.localPoolId, storeId);
|
¬ification);
|
||||||
ReturnValue_t result = hkQueue->sendMessage(
|
if (result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
receiver.destinationQueue, ¬ification);
|
status = result;
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
}
|
||||||
status = result;
|
toReset = poolObj;
|
||||||
}
|
}
|
||||||
toReset = dataSet;
|
else {
|
||||||
}
|
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(
|
||||||
}
|
receiver.dataId.sid);
|
||||||
if(toReset != nullptr) {
|
if(dataSet == nullptr) {
|
||||||
handleChangeResetLogic(receiver.dataType,
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
receiver.dataId, toReset);
|
}
|
||||||
}
|
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
if(not dataSet->hasChanged()) {
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
// prepare and send update snapshot.
|
||||||
|
CommandMessage notification;
|
||||||
|
// todo: serialize into store with timestamp.
|
||||||
|
store_address_t storeId;
|
||||||
|
HousekeepingMessage::setUpdateSnapshotVariableCommand(
|
||||||
|
¬ification, receiver.dataId.localPoolId, storeId);
|
||||||
|
ReturnValue_t result = hkQueue->sendMessage(
|
||||||
|
receiver.destinationQueue, ¬ification);
|
||||||
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
|
status = result;
|
||||||
|
}
|
||||||
|
toReset = dataSet;
|
||||||
|
|
||||||
|
}
|
||||||
|
if(toReset != nullptr) {
|
||||||
|
handleChangeResetLogic(receiver.dataType,
|
||||||
|
receiver.dataId, toReset);
|
||||||
|
}
|
||||||
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalDataPoolManager::handleChangeResetLogic(
|
void LocalDataPoolManager::handleChangeResetLogic(
|
||||||
@ -295,32 +318,32 @@ void LocalDataPoolManager::resetHkUpdateResetHelper() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::subscribeForPeriodicPacket(sid_t sid,
|
ReturnValue_t LocalDataPoolManager::subscribeForPeriodicPacket(sid_t sid,
|
||||||
bool enableReporting, float collectionInterval, bool isDiagnostics,
|
bool enableReporting, float collectionInterval, bool isDiagnostics,
|
||||||
object_id_t packetDestination) {
|
object_id_t packetDestination) {
|
||||||
AcceptsHkPacketsIF* hkReceiverObject =
|
AcceptsHkPacketsIF* hkReceiverObject =
|
||||||
objectManager->get<AcceptsHkPacketsIF>(packetDestination);
|
objectManager->get<AcceptsHkPacketsIF>(packetDestination);
|
||||||
if(hkReceiverObject == nullptr) {
|
if(hkReceiverObject == nullptr) {
|
||||||
sif::error << "LocalDataPoolManager::subscribeForPeriodicPacket:"
|
sif::error << "LocalDataPoolManager::subscribeForPeriodicPacket:"
|
||||||
<< " Invalid receiver!"<< std::endl;
|
<< " Invalid receiver!"<< std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct HkReceiver hkReceiver;
|
struct HkReceiver hkReceiver;
|
||||||
hkReceiver.dataId.sid = sid;
|
hkReceiver.dataId.sid = sid;
|
||||||
hkReceiver.reportingType = ReportingType::PERIODIC;
|
hkReceiver.reportingType = ReportingType::PERIODIC;
|
||||||
hkReceiver.dataType = DataType::DATA_SET;
|
hkReceiver.dataType = DataType::DATA_SET;
|
||||||
hkReceiver.destinationQueue = hkReceiverObject->getHkQueue();
|
hkReceiver.destinationQueue = hkReceiverObject->getHkQueue();
|
||||||
|
|
||||||
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
||||||
if(dataSet != nullptr) {
|
if(dataSet != nullptr) {
|
||||||
dataSet->setReportingEnabled(enableReporting);
|
dataSet->setReportingEnabled(enableReporting);
|
||||||
dataSet->setDiagnostic(isDiagnostics);
|
dataSet->setDiagnostic(isDiagnostics);
|
||||||
dataSet->initializePeriodicHelper(collectionInterval,
|
dataSet->initializePeriodicHelper(collectionInterval,
|
||||||
owner->getPeriodicOperationFrequency(), isDiagnostics);
|
owner->getPeriodicOperationFrequency(), isDiagnostics);
|
||||||
}
|
}
|
||||||
|
|
||||||
hkReceiversMap.push_back(hkReceiver);
|
hkReceiversMap.push_back(hkReceiver);
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -328,7 +351,7 @@ ReturnValue_t LocalDataPoolManager::subscribeForUpdatePackets(sid_t sid,
|
|||||||
bool isDiagnostics, bool reportingEnabled,
|
bool isDiagnostics, bool reportingEnabled,
|
||||||
object_id_t packetDestination) {
|
object_id_t packetDestination) {
|
||||||
AcceptsHkPacketsIF* hkReceiverObject =
|
AcceptsHkPacketsIF* hkReceiverObject =
|
||||||
objectManager->get<AcceptsHkPacketsIF>(packetDestination);
|
objectManager->get<AcceptsHkPacketsIF>(packetDestination);
|
||||||
if(hkReceiverObject == nullptr) {
|
if(hkReceiverObject == nullptr) {
|
||||||
sif::error << "LocalDataPoolManager::subscribeForPeriodicPacket:"
|
sif::error << "LocalDataPoolManager::subscribeForPeriodicPacket:"
|
||||||
<< " Invalid receiver!"<< std::endl;
|
<< " Invalid receiver!"<< std::endl;
|
||||||
@ -432,64 +455,64 @@ void LocalDataPoolManager::handleHkUpdateResetListInsertion(DataType dataType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::handleHousekeepingMessage(
|
ReturnValue_t LocalDataPoolManager::handleHousekeepingMessage(
|
||||||
CommandMessage* message) {
|
CommandMessage* message) {
|
||||||
Command_t command = message->getCommand();
|
Command_t command = message->getCommand();
|
||||||
sid_t sid = HousekeepingMessage::getSid(message);
|
sid_t sid = HousekeepingMessage::getSid(message);
|
||||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||||
switch(command) {
|
switch(command) {
|
||||||
// Houskeeping interface handling.
|
// Houskeeping interface handling.
|
||||||
case(HousekeepingMessage::ENABLE_PERIODIC_DIAGNOSTICS_GENERATION): {
|
case(HousekeepingMessage::ENABLE_PERIODIC_DIAGNOSTICS_GENERATION): {
|
||||||
result = togglePeriodicGeneration(sid, true, true);
|
result = togglePeriodicGeneration(sid, true, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case(HousekeepingMessage::DISABLE_PERIODIC_DIAGNOSTICS_GENERATION): {
|
case(HousekeepingMessage::DISABLE_PERIODIC_DIAGNOSTICS_GENERATION): {
|
||||||
result = togglePeriodicGeneration(sid, false, true);
|
result = togglePeriodicGeneration(sid, false, true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case(HousekeepingMessage::ENABLE_PERIODIC_HK_REPORT_GENERATION): {
|
case(HousekeepingMessage::ENABLE_PERIODIC_HK_REPORT_GENERATION): {
|
||||||
result = togglePeriodicGeneration(sid, true, false);
|
result = togglePeriodicGeneration(sid, true, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case(HousekeepingMessage::DISABLE_PERIODIC_HK_REPORT_GENERATION): {
|
case(HousekeepingMessage::DISABLE_PERIODIC_HK_REPORT_GENERATION): {
|
||||||
result = togglePeriodicGeneration(sid, false, false);
|
result = togglePeriodicGeneration(sid, false, false);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case(HousekeepingMessage::REPORT_DIAGNOSTICS_REPORT_STRUCTURES):
|
case(HousekeepingMessage::REPORT_DIAGNOSTICS_REPORT_STRUCTURES):
|
||||||
return generateSetStructurePacket(sid, true);
|
return generateSetStructurePacket(sid, true);
|
||||||
case(HousekeepingMessage::REPORT_HK_REPORT_STRUCTURES):
|
case(HousekeepingMessage::REPORT_HK_REPORT_STRUCTURES):
|
||||||
return generateSetStructurePacket(sid, false);
|
return generateSetStructurePacket(sid, false);
|
||||||
case(HousekeepingMessage::MODIFY_DIAGNOSTICS_REPORT_COLLECTION_INTERVAL):
|
case(HousekeepingMessage::MODIFY_DIAGNOSTICS_REPORT_COLLECTION_INTERVAL):
|
||||||
case(HousekeepingMessage::MODIFY_PARAMETER_REPORT_COLLECTION_INTERVAL): {
|
case(HousekeepingMessage::MODIFY_PARAMETER_REPORT_COLLECTION_INTERVAL): {
|
||||||
float newCollIntvl = 0;
|
float newCollIntvl = 0;
|
||||||
HousekeepingMessage::getCollectionIntervalModificationCommand(message,
|
HousekeepingMessage::getCollectionIntervalModificationCommand(message,
|
||||||
&newCollIntvl);
|
&newCollIntvl);
|
||||||
if(command == HousekeepingMessage::
|
if(command == HousekeepingMessage::
|
||||||
MODIFY_DIAGNOSTICS_REPORT_COLLECTION_INTERVAL) {
|
MODIFY_DIAGNOSTICS_REPORT_COLLECTION_INTERVAL) {
|
||||||
result = changeCollectionInterval(sid, newCollIntvl, true);
|
result = changeCollectionInterval(sid, newCollIntvl, true);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
result = changeCollectionInterval(sid, newCollIntvl, false);
|
result = changeCollectionInterval(sid, newCollIntvl, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case(HousekeepingMessage::GENERATE_ONE_PARAMETER_REPORT):
|
case(HousekeepingMessage::GENERATE_ONE_PARAMETER_REPORT):
|
||||||
case(HousekeepingMessage::GENERATE_ONE_DIAGNOSTICS_REPORT): {
|
case(HousekeepingMessage::GENERATE_ONE_DIAGNOSTICS_REPORT): {
|
||||||
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
||||||
if(command == HousekeepingMessage::GENERATE_ONE_PARAMETER_REPORT
|
if(command == HousekeepingMessage::GENERATE_ONE_PARAMETER_REPORT
|
||||||
and dataSet->isDiagnostics()) {
|
and dataSet->isDiagnostics()) {
|
||||||
return WRONG_HK_PACKET_TYPE;
|
return WRONG_HK_PACKET_TYPE;
|
||||||
}
|
}
|
||||||
else if(command == HousekeepingMessage::GENERATE_ONE_DIAGNOSTICS_REPORT
|
else if(command == HousekeepingMessage::GENERATE_ONE_DIAGNOSTICS_REPORT
|
||||||
and not dataSet->isDiagnostics()) {
|
and not dataSet->isDiagnostics()) {
|
||||||
return WRONG_HK_PACKET_TYPE;
|
return WRONG_HK_PACKET_TYPE;
|
||||||
}
|
}
|
||||||
return generateHousekeepingPacket(HousekeepingMessage::getSid(message),
|
return generateHousekeepingPacket(HousekeepingMessage::getSid(message),
|
||||||
dataSet, true);
|
dataSet, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Notification handling.
|
// Notification handling.
|
||||||
@ -522,30 +545,30 @@ ReturnValue_t LocalDataPoolManager::handleHousekeepingMessage(
|
|||||||
}
|
}
|
||||||
|
|
||||||
CommandMessage reply;
|
CommandMessage reply;
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
HousekeepingMessage::setHkRequestFailureReply(&reply, sid, result);
|
HousekeepingMessage::setHkRequestFailureReply(&reply, sid, result);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
HousekeepingMessage::setHkRequestSuccessReply(&reply, sid);
|
HousekeepingMessage::setHkRequestSuccessReply(&reply, sid);
|
||||||
}
|
}
|
||||||
hkQueue->sendMessage(hkDestinationId, &reply);
|
hkQueue->sendMessage(hkDestinationId, &reply);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::printPoolEntry(
|
ReturnValue_t LocalDataPoolManager::printPoolEntry(
|
||||||
lp_id_t localPoolId) {
|
lp_id_t localPoolId) {
|
||||||
auto poolIter = localPoolMap.find(localPoolId);
|
auto poolIter = localPoolMap.find(localPoolId);
|
||||||
if (poolIter == localPoolMap.end()) {
|
if (poolIter == localPoolMap.end()) {
|
||||||
sif::debug << "HousekeepingManager::fechPoolEntry:"
|
sif::debug << "HousekeepingManager::fechPoolEntry:"
|
||||||
<< " Pool entry not found." << std::endl;
|
<< " Pool entry not found." << std::endl;
|
||||||
return POOL_ENTRY_NOT_FOUND;
|
return POOL_ENTRY_NOT_FOUND;
|
||||||
}
|
}
|
||||||
poolIter->second->print();
|
poolIter->second->print();
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MutexIF* LocalDataPoolManager::getMutexHandle() {
|
MutexIF* LocalDataPoolManager::getMutexHandle() {
|
||||||
return mutex;
|
return mutex;
|
||||||
}
|
}
|
||||||
|
|
||||||
HasLocalDataPoolIF* LocalDataPoolManager::getOwner() {
|
HasLocalDataPoolIF* LocalDataPoolManager::getOwner() {
|
||||||
@ -553,51 +576,51 @@ HasLocalDataPoolIF* LocalDataPoolManager::getOwner() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::generateHousekeepingPacket(sid_t sid,
|
ReturnValue_t LocalDataPoolManager::generateHousekeepingPacket(sid_t sid,
|
||||||
LocalPoolDataSetBase* dataSet, bool forDownlink,
|
LocalPoolDataSetBase* dataSet, bool forDownlink,
|
||||||
MessageQueueId_t destination) {
|
MessageQueueId_t destination) {
|
||||||
if(dataSet == nullptr) {
|
if(dataSet == nullptr) {
|
||||||
// Configuration error.
|
// Configuration error.
|
||||||
sif::warning << "HousekeepingManager::generateHousekeepingPacket:"
|
sif::warning << "HousekeepingManager::generateHousekeepingPacket:"
|
||||||
<< " Set ID not found or dataset not assigned!" << std::endl;
|
<< " Set ID not found or dataset not assigned!" << std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
store_address_t storeId;
|
store_address_t storeId;
|
||||||
HousekeepingPacketDownlink hkPacket(sid, dataSet);
|
HousekeepingPacketDownlink hkPacket(sid, dataSet);
|
||||||
size_t serializedSize = 0;
|
size_t serializedSize = 0;
|
||||||
ReturnValue_t result = serializeHkPacketIntoStore(hkPacket, storeId,
|
ReturnValue_t result = serializeHkPacketIntoStore(hkPacket, storeId,
|
||||||
forDownlink, &serializedSize);
|
forDownlink, &serializedSize);
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK or serializedSize == 0) {
|
if(result != HasReturnvaluesIF::RETURN_OK or serializedSize == 0) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// and now we set a HK message and send it the HK packet destination.
|
// and now we set a HK message and send it the HK packet destination.
|
||||||
CommandMessage hkMessage;
|
CommandMessage hkMessage;
|
||||||
if(dataSet->isDiagnostics()) {
|
if(dataSet->isDiagnostics()) {
|
||||||
HousekeepingMessage::setHkDiagnosticsReply(&hkMessage, sid, storeId);
|
HousekeepingMessage::setHkDiagnosticsReply(&hkMessage, sid, storeId);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
HousekeepingMessage::setHkReportReply(&hkMessage, sid, storeId);
|
HousekeepingMessage::setHkReportReply(&hkMessage, sid, storeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(hkQueue == nullptr) {
|
if(hkQueue == nullptr) {
|
||||||
return QUEUE_OR_DESTINATION_NOT_SET;
|
return QUEUE_OR_DESTINATION_NOT_SET;
|
||||||
}
|
}
|
||||||
if(destination == MessageQueueIF::NO_QUEUE) {
|
if(destination == MessageQueueIF::NO_QUEUE) {
|
||||||
if(hkDestinationId == MessageQueueIF::NO_QUEUE) {
|
if(hkDestinationId == MessageQueueIF::NO_QUEUE) {
|
||||||
// error, all destinations invalid
|
// error, all destinations invalid
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
destination = hkDestinationId;
|
destination = hkDestinationId;
|
||||||
}
|
}
|
||||||
|
|
||||||
return hkQueue->sendMessage(destination, &hkMessage);
|
return hkQueue->sendMessage(destination, &hkMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::serializeHkPacketIntoStore(
|
ReturnValue_t LocalDataPoolManager::serializeHkPacketIntoStore(
|
||||||
HousekeepingPacketDownlink& hkPacket,
|
HousekeepingPacketDownlink& hkPacket,
|
||||||
store_address_t& storeId, bool forDownlink,
|
store_address_t& storeId, bool forDownlink,
|
||||||
size_t* serializedSize) {
|
size_t* serializedSize) {
|
||||||
uint8_t* dataPtr = nullptr;
|
uint8_t* dataPtr = nullptr;
|
||||||
const size_t maxSize = hkPacket.getSerializedSize();
|
const size_t maxSize = hkPacket.getSerializedSize();
|
||||||
ReturnValue_t result = ipcStore->getFreeElement(&storeId,
|
ReturnValue_t result = ipcStore->getFreeElement(&storeId,
|
||||||
@ -607,8 +630,8 @@ ReturnValue_t LocalDataPoolManager::serializeHkPacketIntoStore(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(forDownlink) {
|
if(forDownlink) {
|
||||||
return hkPacket.serialize(&dataPtr, serializedSize, maxSize,
|
return hkPacket.serialize(&dataPtr, serializedSize, maxSize,
|
||||||
SerializeIF::Endianness::BIG);
|
SerializeIF::Endianness::BIG);
|
||||||
}
|
}
|
||||||
return hkPacket.serialize(&dataPtr, serializedSize, maxSize,
|
return hkPacket.serialize(&dataPtr, serializedSize, maxSize,
|
||||||
SerializeIF::Endianness::MACHINE);
|
SerializeIF::Endianness::MACHINE);
|
||||||
@ -620,124 +643,124 @@ void LocalDataPoolManager::setNonDiagnosticIntervalFactor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LocalDataPoolManager::performPeriodicHkGeneration(HkReceiver& receiver) {
|
void LocalDataPoolManager::performPeriodicHkGeneration(HkReceiver& receiver) {
|
||||||
sid_t sid = receiver.dataId.sid;
|
sid_t sid = receiver.dataId.sid;
|
||||||
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
||||||
if(not dataSet->getReportingEnabled()) {
|
if(not dataSet->getReportingEnabled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dataSet->periodicHelper == nullptr) {
|
if(dataSet->periodicHelper == nullptr) {
|
||||||
// Configuration error.
|
// Configuration error.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(not dataSet->periodicHelper->checkOpNecessary()) {
|
if(not dataSet->periodicHelper->checkOpNecessary()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t result = generateHousekeepingPacket(
|
ReturnValue_t result = generateHousekeepingPacket(
|
||||||
sid, dataSet, true);
|
sid, dataSet, true);
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
// configuration error
|
// configuration error
|
||||||
sif::debug << "LocalDataPoolManager::performHkOperation:"
|
sif::debug << "LocalDataPoolManager::performHkOperation:"
|
||||||
<< "0x" << std::hex << std::setfill('0') << std::setw(8)
|
<< "0x" << std::hex << std::setfill('0') << std::setw(8)
|
||||||
<< owner->getObjectId() << " Error generating "
|
<< owner->getObjectId() << " Error generating "
|
||||||
<< "HK packet" << std::setfill(' ') << std::dec << std::endl;
|
<< "HK packet" << std::setfill(' ') << std::dec << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::togglePeriodicGeneration(sid_t sid,
|
ReturnValue_t LocalDataPoolManager::togglePeriodicGeneration(sid_t sid,
|
||||||
bool enable, bool isDiagnostics) {
|
bool enable, bool isDiagnostics) {
|
||||||
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
||||||
if((dataSet->isDiagnostics() and not isDiagnostics) or
|
if((dataSet->isDiagnostics() and not isDiagnostics) or
|
||||||
(not dataSet->isDiagnostics() and isDiagnostics)) {
|
(not dataSet->isDiagnostics() and isDiagnostics)) {
|
||||||
return WRONG_HK_PACKET_TYPE;
|
return WRONG_HK_PACKET_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((dataSet->getReportingEnabled() and enable) or
|
if((dataSet->getReportingEnabled() and enable) or
|
||||||
(not dataSet->getReportingEnabled() and not enable)) {
|
(not dataSet->getReportingEnabled() and not enable)) {
|
||||||
return REPORTING_STATUS_UNCHANGED;
|
return REPORTING_STATUS_UNCHANGED;
|
||||||
}
|
}
|
||||||
|
|
||||||
dataSet->setReportingEnabled(enable);
|
dataSet->setReportingEnabled(enable);
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::changeCollectionInterval(sid_t sid,
|
ReturnValue_t LocalDataPoolManager::changeCollectionInterval(sid_t sid,
|
||||||
float newCollectionInterval, bool isDiagnostics) {
|
float newCollectionInterval, bool isDiagnostics) {
|
||||||
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
||||||
bool targetIsDiagnostics = dataSet->isDiagnostics();
|
bool targetIsDiagnostics = dataSet->isDiagnostics();
|
||||||
if((targetIsDiagnostics and not isDiagnostics) or
|
if((targetIsDiagnostics and not isDiagnostics) or
|
||||||
(not targetIsDiagnostics and isDiagnostics)) {
|
(not targetIsDiagnostics and isDiagnostics)) {
|
||||||
return WRONG_HK_PACKET_TYPE;
|
return WRONG_HK_PACKET_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dataSet->periodicHelper == nullptr) {
|
if(dataSet->periodicHelper == nullptr) {
|
||||||
// config error
|
// config error
|
||||||
return PERIODIC_HELPER_INVALID;
|
return PERIODIC_HELPER_INVALID;
|
||||||
}
|
}
|
||||||
|
|
||||||
dataSet->periodicHelper->changeCollectionInterval(newCollectionInterval);
|
dataSet->periodicHelper->changeCollectionInterval(newCollectionInterval);
|
||||||
return HasReturnvaluesIF::RETURN_OK;
|
return HasReturnvaluesIF::RETURN_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalDataPoolManager::generateSetStructurePacket(sid_t sid,
|
ReturnValue_t LocalDataPoolManager::generateSetStructurePacket(sid_t sid,
|
||||||
bool isDiagnostics) {
|
bool isDiagnostics) {
|
||||||
// Get and check dataset first.
|
// Get and check dataset first.
|
||||||
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
LocalPoolDataSetBase* dataSet = owner->getDataSetHandle(sid);
|
||||||
if(dataSet == nullptr) {
|
if(dataSet == nullptr) {
|
||||||
sif::warning << "HousekeepingManager::generateHousekeepingPacket:"
|
sif::warning << "HousekeepingManager::generateHousekeepingPacket:"
|
||||||
<< " Set ID not found" << std::endl;
|
<< " Set ID not found" << std::endl;
|
||||||
return HasReturnvaluesIF::RETURN_FAILED;
|
return HasReturnvaluesIF::RETURN_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool targetIsDiagnostics = dataSet->isDiagnostics();
|
bool targetIsDiagnostics = dataSet->isDiagnostics();
|
||||||
if((targetIsDiagnostics and not isDiagnostics) or
|
if((targetIsDiagnostics and not isDiagnostics) or
|
||||||
(not targetIsDiagnostics and isDiagnostics)) {
|
(not targetIsDiagnostics and isDiagnostics)) {
|
||||||
return WRONG_HK_PACKET_TYPE;
|
return WRONG_HK_PACKET_TYPE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool valid = dataSet->isValid();
|
bool valid = dataSet->isValid();
|
||||||
bool reportingEnabled = dataSet->getReportingEnabled();
|
bool reportingEnabled = dataSet->getReportingEnabled();
|
||||||
float collectionInterval =
|
float collectionInterval =
|
||||||
dataSet->periodicHelper->getCollectionIntervalInSeconds();
|
dataSet->periodicHelper->getCollectionIntervalInSeconds();
|
||||||
|
|
||||||
// Generate set packet which can be serialized.
|
// Generate set packet which can be serialized.
|
||||||
HousekeepingSetPacket setPacket(sid,
|
HousekeepingSetPacket setPacket(sid,
|
||||||
reportingEnabled, valid, collectionInterval, dataSet);
|
reportingEnabled, valid, collectionInterval, dataSet);
|
||||||
size_t expectedSize = setPacket.getSerializedSize();
|
size_t expectedSize = setPacket.getSerializedSize();
|
||||||
uint8_t* storePtr = nullptr;
|
uint8_t* storePtr = nullptr;
|
||||||
store_address_t storeId;
|
store_address_t storeId;
|
||||||
ReturnValue_t result = ipcStore->getFreeElement(&storeId,
|
ReturnValue_t result = ipcStore->getFreeElement(&storeId,
|
||||||
expectedSize,&storePtr);
|
expectedSize,&storePtr);
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
sif::error << "HousekeepingManager::generateHousekeepingPacket: "
|
sif::error << "HousekeepingManager::generateHousekeepingPacket: "
|
||||||
<< "Could not get free element from IPC store." << std::endl;
|
<< "Could not get free element from IPC store." << std::endl;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Serialize set packet into store.
|
// Serialize set packet into store.
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
result = setPacket.serialize(&storePtr, &size, expectedSize,
|
result = setPacket.serialize(&storePtr, &size, expectedSize,
|
||||||
SerializeIF::Endianness::BIG);
|
SerializeIF::Endianness::BIG);
|
||||||
if(expectedSize != size) {
|
if(expectedSize != size) {
|
||||||
sif::error << "HousekeepingManager::generateSetStructurePacket: "
|
sif::error << "HousekeepingManager::generateSetStructurePacket: "
|
||||||
<< "Expected size is not equal to serialized size" << std::endl;
|
<< "Expected size is not equal to serialized size" << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send structure reporting reply.
|
// Send structure reporting reply.
|
||||||
CommandMessage reply;
|
CommandMessage reply;
|
||||||
if(isDiagnostics) {
|
if(isDiagnostics) {
|
||||||
HousekeepingMessage::setDiagnosticsStuctureReportReply(&reply,
|
HousekeepingMessage::setDiagnosticsStuctureReportReply(&reply,
|
||||||
sid, storeId);
|
sid, storeId);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
HousekeepingMessage::setHkStuctureReportReply(&reply,
|
HousekeepingMessage::setHkStuctureReportReply(&reply,
|
||||||
sid, storeId);
|
sid, storeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
hkQueue->reply(&reply);
|
hkQueue->reply(&reply);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -7,15 +7,15 @@
|
|||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
|
||||||
LocalPoolDataSetBase::LocalPoolDataSetBase(HasLocalDataPoolIF *hkOwner,
|
LocalPoolDataSetBase::LocalPoolDataSetBase(HasLocalDataPoolIF *hkOwner,
|
||||||
uint32_t setId, PoolVariableIF** registeredVariablesArray,
|
uint32_t setId, PoolVariableIF** registeredVariablesArray,
|
||||||
const size_t maxNumberOfVariables, bool noPeriodicHandling):
|
const size_t maxNumberOfVariables, bool noPeriodicHandling):
|
||||||
PoolDataSetBase(registeredVariablesArray, maxNumberOfVariables) {
|
PoolDataSetBase(registeredVariablesArray, maxNumberOfVariables) {
|
||||||
if(hkOwner == nullptr) {
|
if(hkOwner == nullptr) {
|
||||||
// Configuration error.
|
// Configuration error.
|
||||||
sif::error << "LocalPoolDataSetBase::LocalPoolDataSetBase: Owner "
|
sif::error << "LocalPoolDataSetBase::LocalPoolDataSetBase: Owner "
|
||||||
<< "invalid!" << std::endl;
|
<< "invalid!" << std::endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
hkManager = hkOwner->getHkManagerHandle();
|
hkManager = hkOwner->getHkManagerHandle();
|
||||||
this->sid.objectId = hkOwner->getObjectId();
|
this->sid.objectId = hkOwner->getObjectId();
|
||||||
this->sid.ownerSetId = setId;
|
this->sid.ownerSetId = setId;
|
||||||
@ -24,20 +24,20 @@ LocalPoolDataSetBase::LocalPoolDataSetBase(HasLocalDataPoolIF *hkOwner,
|
|||||||
|
|
||||||
// Data creators get a periodic helper for periodic HK data generation.
|
// Data creators get a periodic helper for periodic HK data generation.
|
||||||
if(not noPeriodicHandling) {
|
if(not noPeriodicHandling) {
|
||||||
periodicHelper = new PeriodicHousekeepingHelper(this);
|
periodicHelper = new PeriodicHousekeepingHelper(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalPoolDataSetBase::LocalPoolDataSetBase(sid_t sid,
|
LocalPoolDataSetBase::LocalPoolDataSetBase(sid_t sid,
|
||||||
PoolVariableIF** registeredVariablesArray,
|
PoolVariableIF** registeredVariablesArray,
|
||||||
const size_t maxNumberOfVariables):
|
const size_t maxNumberOfVariables):
|
||||||
PoolDataSetBase(registeredVariablesArray, maxNumberOfVariables) {
|
PoolDataSetBase(registeredVariablesArray, maxNumberOfVariables) {
|
||||||
HasLocalDataPoolIF* hkOwner = objectManager->get<HasLocalDataPoolIF>(
|
HasLocalDataPoolIF* hkOwner = objectManager->get<HasLocalDataPoolIF>(
|
||||||
sid.objectId);
|
sid.objectId);
|
||||||
if(hkOwner == nullptr) {
|
if(hkOwner == nullptr) {
|
||||||
// Configuration error.
|
// Configuration error.
|
||||||
sif::error << "LocalPoolDataSetBase::LocalPoolDataSetBase: Owner "
|
sif::error << "LocalPoolDataSetBase::LocalPoolDataSetBase: Owner "
|
||||||
<< "invalid!" << std::endl;
|
<< "invalid!" << std::endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
hkManager = hkOwner->getHkManagerHandle();
|
hkManager = hkOwner->getHkManagerHandle();
|
||||||
@ -50,8 +50,8 @@ LocalPoolDataSetBase::~LocalPoolDataSetBase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalPoolDataSetBase::lockDataPool(uint32_t timeoutMs) {
|
ReturnValue_t LocalPoolDataSetBase::lockDataPool(uint32_t timeoutMs) {
|
||||||
MutexIF* mutex = hkManager->getMutexHandle();
|
MutexIF* mutex = hkManager->getMutexHandle();
|
||||||
return mutex->lockMutex(MutexIF::TimeoutType::WAITING, timeoutMs);
|
return mutex->lockMutex(MutexIF::TimeoutType::WAITING, timeoutMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalPoolDataSetBase::serializeWithValidityBuffer(uint8_t **buffer,
|
ReturnValue_t LocalPoolDataSetBase::serializeWithValidityBuffer(uint8_t **buffer,
|
||||||
@ -97,7 +97,7 @@ ReturnValue_t LocalPoolDataSetBase::deSerializeWithValidityBuffer(
|
|||||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_FAILED;
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_FAILED;
|
||||||
for (uint16_t count = 0; count < fillCount; count++) {
|
for (uint16_t count = 0; count < fillCount; count++) {
|
||||||
result = registeredVariables[count]->deSerialize(buffer, size,
|
result = registeredVariables[count]->deSerialize(buffer, size,
|
||||||
streamEndianness);
|
streamEndianness);
|
||||||
if(result != HasReturnvaluesIF::RETURN_OK) {
|
if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -127,8 +127,8 @@ ReturnValue_t LocalPoolDataSetBase::deSerializeWithValidityBuffer(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalPoolDataSetBase::unlockDataPool() {
|
ReturnValue_t LocalPoolDataSetBase::unlockDataPool() {
|
||||||
MutexIF* mutex = hkManager->getMutexHandle();
|
MutexIF* mutex = hkManager->getMutexHandle();
|
||||||
return mutex->unlockMutex();
|
return mutex->unlockMutex();
|
||||||
}
|
}
|
||||||
|
|
||||||
ReturnValue_t LocalPoolDataSetBase::serializeLocalPoolIds(uint8_t** buffer,
|
ReturnValue_t LocalPoolDataSetBase::serializeLocalPoolIds(uint8_t** buffer,
|
||||||
@ -205,7 +205,7 @@ ReturnValue_t LocalPoolDataSetBase::serialize(uint8_t **buffer, size_t *size,
|
|||||||
void LocalPoolDataSetBase::bitSetter(uint8_t* byte, uint8_t position) const {
|
void LocalPoolDataSetBase::bitSetter(uint8_t* byte, uint8_t position) const {
|
||||||
if(position > 7) {
|
if(position > 7) {
|
||||||
sif::debug << "Pool Raw Access: Bit setting invalid position"
|
sif::debug << "Pool Raw Access: Bit setting invalid position"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uint8_t shiftNumber = position + (7 - 2 * position);
|
uint8_t shiftNumber = position + (7 - 2 * position);
|
||||||
@ -213,47 +213,49 @@ void LocalPoolDataSetBase::bitSetter(uint8_t* byte, uint8_t position) const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void LocalPoolDataSetBase::setDiagnostic(bool isDiagnostics) {
|
void LocalPoolDataSetBase::setDiagnostic(bool isDiagnostics) {
|
||||||
this->diagnostic = isDiagnostics;
|
this->diagnostic = isDiagnostics;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LocalPoolDataSetBase::isDiagnostics() const {
|
bool LocalPoolDataSetBase::isDiagnostics() const {
|
||||||
return diagnostic;
|
return diagnostic;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalPoolDataSetBase::setReportingEnabled(bool reportingEnabled) {
|
void LocalPoolDataSetBase::setReportingEnabled(bool reportingEnabled) {
|
||||||
this->reportingEnabled = reportingEnabled;
|
this->reportingEnabled = reportingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LocalPoolDataSetBase::getReportingEnabled() const {
|
bool LocalPoolDataSetBase::getReportingEnabled() const {
|
||||||
return reportingEnabled;
|
return reportingEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalPoolDataSetBase::initializePeriodicHelper(
|
void LocalPoolDataSetBase::initializePeriodicHelper(
|
||||||
float collectionInterval, dur_millis_t minimumPeriodicInterval,
|
float collectionInterval, dur_millis_t minimumPeriodicInterval,
|
||||||
bool isDiagnostics, uint8_t nonDiagIntervalFactor) {
|
bool isDiagnostics, uint8_t nonDiagIntervalFactor) {
|
||||||
periodicHelper->initialize(collectionInterval, minimumPeriodicInterval,
|
periodicHelper->initialize(collectionInterval, minimumPeriodicInterval,
|
||||||
isDiagnostics, nonDiagIntervalFactor);
|
isDiagnostics, nonDiagIntervalFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalPoolDataSetBase::setChanged(bool changed) {
|
void LocalPoolDataSetBase::setChanged(bool changed) {
|
||||||
MutexHelper(mutex, MutexIF::TimeoutType::WAITING, 5);
|
// TODO: Make this configurable?
|
||||||
this->changed = changed;
|
MutexHelper(mutex, MutexIF::TimeoutType::WAITING, 20);
|
||||||
|
this->changed = changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LocalPoolDataSetBase::hasChanged() const {
|
bool LocalPoolDataSetBase::hasChanged() const {
|
||||||
MutexHelper(mutex, MutexIF::TimeoutType::WAITING, 5);
|
// TODO: Make this configurable?
|
||||||
return changed;
|
MutexHelper(mutex, MutexIF::TimeoutType::WAITING, 20);
|
||||||
|
return changed;
|
||||||
}
|
}
|
||||||
|
|
||||||
sid_t LocalPoolDataSetBase::getSid() const {
|
sid_t LocalPoolDataSetBase::getSid() const {
|
||||||
return sid;
|
return sid;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LocalPoolDataSetBase::bitGetter(const uint8_t* byte,
|
bool LocalPoolDataSetBase::bitGetter(const uint8_t* byte,
|
||||||
uint8_t position) const {
|
uint8_t position) const {
|
||||||
if(position > 7) {
|
if(position > 7) {
|
||||||
sif::debug << "Pool Raw Access: Bit setting invalid position"
|
sif::debug << "Pool Raw Access: Bit setting invalid position"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
uint8_t shiftNumber = position + (7 - 2 * position);
|
uint8_t shiftNumber = position + (7 - 2 * position);
|
||||||
@ -267,10 +269,10 @@ bool LocalPoolDataSetBase::isValid() const {
|
|||||||
|
|
||||||
void LocalPoolDataSetBase::setValidity(bool valid, bool setEntriesRecursively) {
|
void LocalPoolDataSetBase::setValidity(bool valid, bool setEntriesRecursively) {
|
||||||
MutexHelper(mutex, MutexIF::TimeoutType::WAITING, 5);
|
MutexHelper(mutex, MutexIF::TimeoutType::WAITING, 5);
|
||||||
if(setEntriesRecursively) {
|
if(setEntriesRecursively) {
|
||||||
for(size_t idx = 0; idx < this->getFillCount(); idx++) {
|
for(size_t idx = 0; idx < this->getFillCount(); idx++) {
|
||||||
registeredVariables[idx] -> setValid(valid);
|
registeredVariables[idx] -> setValid(valid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->valid = valid;
|
this->valid = valid;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user