diff --git a/src/fsfw/container/SharedRingBuffer.cpp b/src/fsfw/container/SharedRingBuffer.cpp index 111019e0..4be9c09f 100644 --- a/src/fsfw/container/SharedRingBuffer.cpp +++ b/src/fsfw/container/SharedRingBuffer.cpp @@ -1,5 +1,6 @@ #include "fsfw/container/SharedRingBuffer.h" +#include "SharedRingBuffer.h" #include "fsfw/ipc/MutexFactory.h" #include "fsfw/ipc/MutexGuard.h" @@ -15,7 +16,12 @@ SharedRingBuffer::SharedRingBuffer(object_id_t objectId, uint8_t* buffer, const mutex = MutexFactory::instance()->createMutex(); } -SharedRingBuffer::~SharedRingBuffer() { MutexFactory::instance()->deleteMutex(mutex); } +SharedRingBuffer::~SharedRingBuffer() { + MutexFactory::instance()->deleteMutex(mutex); + if (receiveSizesFifo != nullptr) { + delete (receiveSizesFifo); + } +} void SharedRingBuffer::setToUseReceiveSizeFIFO(size_t fifoDepth) { this->fifoDepth = fifoDepth; } @@ -30,18 +36,30 @@ MutexIF* SharedRingBuffer::getMutexHandle() const { return mutex; } ReturnValue_t SharedRingBuffer::initialize() { if (fifoDepth > 0) { - receiveSizesFIFO = new DynamicFIFO(fifoDepth); + receiveSizesFifo = new DynamicFIFO(fifoDepth); } return SystemObject::initialize(); } -DynamicFIFO* SharedRingBuffer::getReceiveSizesFIFO() { - if (receiveSizesFIFO == nullptr) { +DynamicFIFO* SharedRingBuffer::getReceiveSizesFifo() { + if (receiveSizesFifo == nullptr) { // Configuration error. #if FSFW_CPP_OSTREAM_ENABLED == 1 sif::warning << "SharedRingBuffer::getReceiveSizesFIFO: Ring buffer" << " was not configured to have sizes FIFO, returning nullptr!" << std::endl; #endif } - return receiveSizesFIFO; + return receiveSizesFifo; } + + ReturnValue_t SharedRingBuffer::fifoEmpty(bool& empty, MutexIF::TimeoutType timeoutType, uint32_t timeoutMs) { + if(receiveSizesFifo == nullptr) { + return returnvalue::FAILED; + } + MutexGuard mg(mutex, timeoutType, timeoutMs); + if(mg.getLockResult() != returnvalue::OK) { + return mg.getLockResult(); + } + empty = receiveSizesFifo->empty(); + return returnvalue::OK; + } \ No newline at end of file diff --git a/src/fsfw/container/SharedRingBuffer.h b/src/fsfw/container/SharedRingBuffer.h index dab28d92..532031b5 100644 --- a/src/fsfw/container/SharedRingBuffer.h +++ b/src/fsfw/container/SharedRingBuffer.h @@ -78,13 +78,15 @@ class SharedRingBuffer : public SystemObject, public SimpleRingBuffer { * Do not forget to protect access with a lock if required! * @return */ - DynamicFIFO* getReceiveSizesFIFO(); + DynamicFIFO* getReceiveSizesFifo(); + + ReturnValue_t fifoEmpty(bool& empty, MutexIF::TimeoutType timeoutType, uint32_t timeoutMs); private: MutexIF* mutex = nullptr; size_t fifoDepth = 0; - DynamicFIFO* receiveSizesFIFO = nullptr; + DynamicFIFO* receiveSizesFifo = nullptr; }; -#endif /* FSFW_CONTAINER_SHAREDRINGBUFFER_H_ */ +#endif /* FSFW_CONTAINER_SHAREDRINGBUFFER_H_ */ \ No newline at end of file diff --git a/src/fsfw/osal/host/FixedTimeslotTask.h b/src/fsfw/osal/host/FixedTimeslotTask.h index 95159ab8..6bf4091b 100644 --- a/src/fsfw/osal/host/FixedTimeslotTask.h +++ b/src/fsfw/osal/host/FixedTimeslotTask.h @@ -3,9 +3,9 @@ #include #include +#include #include #include -#include #include "fsfw/objectmanager/ObjectManagerIF.h" #include "fsfw/tasks/FixedSlotSequence.h" diff --git a/src/fsfw/osal/host/PeriodicTask.h b/src/fsfw/osal/host/PeriodicTask.h index 82ec70c0..b6366d87 100644 --- a/src/fsfw/osal/host/PeriodicTask.h +++ b/src/fsfw/osal/host/PeriodicTask.h @@ -3,9 +3,9 @@ #include #include +#include #include #include -#include #include "fsfw/objectmanager/ObjectManagerIF.h" #include "fsfw/tasks/PeriodicTaskBase.h" diff --git a/src/fsfw/osal/host/taskHelpers.h b/src/fsfw/osal/host/taskHelpers.h index 35988332..ed61b6d7 100644 --- a/src/fsfw/osal/host/taskHelpers.h +++ b/src/fsfw/osal/host/taskHelpers.h @@ -3,8 +3,8 @@ #include -#include #include +#include namespace tasks { diff --git a/src/fsfw/pus/Service11TelecommandScheduling.tpp b/src/fsfw/pus/Service11TelecommandScheduling.tpp index 21852b63..38f6c501 100644 --- a/src/fsfw/pus/Service11TelecommandScheduling.tpp +++ b/src/fsfw/pus/Service11TelecommandScheduling.tpp @@ -150,7 +150,7 @@ inline ReturnValue_t Service11TelecommandScheduling::handleResetCom template inline ReturnValue_t Service11TelecommandScheduling::doInsertActivity( const uint8_t *data, size_t size) { - if(telecommandMap.full()) { + if (telecommandMap.full()) { return MAP_IS_FULL; } uint32_t timestamp = 0;