2021-07-13 20:22:54 +02:00
|
|
|
#include "fsfw/storagemanager/PoolManager.h"
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
#include "fsfw/FSFW.h"
|
2020-10-15 13:43:23 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
PoolManager::PoolManager(object_id_t setObjectId, const LocalPoolConfig& localPoolConfig)
|
|
|
|
: LocalPool(setObjectId, localPoolConfig, true) {
|
|
|
|
mutex = MutexFactory::instance()->createMutex();
|
2020-10-15 13:43:23 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
PoolManager::~PoolManager(void) { MutexFactory::instance()->deleteMutex(mutex); }
|
2020-10-15 13:43:23 +02:00
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t PoolManager::reserveSpace(const size_t size, store_address_t* address,
|
|
|
|
bool ignoreFault) {
|
|
|
|
MutexGuard mutexHelper(mutex, MutexIF::TimeoutType::WAITING, mutexTimeoutMs);
|
|
|
|
ReturnValue_t status = LocalPool::reserveSpace(size, address, ignoreFault);
|
|
|
|
return status;
|
2020-10-15 13:43:23 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t PoolManager::deleteData(store_address_t storeId) {
|
2022-02-23 18:23:22 +01:00
|
|
|
#if FSFW_VERBOSE_LEVEL >= 2
|
2021-01-03 14:16:52 +01:00
|
|
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
2022-02-02 10:29:30 +01:00
|
|
|
sif::debug << "PoolManager( " << translateObject(getObjectId()) << " )::deleteData from store "
|
|
|
|
<< storeId.poolIndex << ". id is " << storeId.packetIndex << std::endl;
|
2021-01-03 13:58:18 +01:00
|
|
|
#endif
|
2020-10-15 13:43:23 +02:00
|
|
|
#endif
|
2022-02-02 10:29:30 +01:00
|
|
|
MutexGuard mutexHelper(mutex, MutexIF::TimeoutType::WAITING, mutexTimeoutMs);
|
|
|
|
return LocalPool::deleteData(storeId);
|
2020-10-15 13:43:23 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t PoolManager::deleteData(uint8_t* buffer, size_t size, store_address_t* storeId) {
|
|
|
|
MutexGuard mutexHelper(mutex, MutexIF::TimeoutType::WAITING, 20);
|
|
|
|
ReturnValue_t status = LocalPool::deleteData(buffer, size, storeId);
|
|
|
|
return status;
|
2020-10-15 13:43:23 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
void PoolManager::setMutexTimeout(uint32_t mutexTimeoutMs) {
|
|
|
|
this->mutexTimeoutMs = mutexTimeoutMs;
|
2020-10-15 13:43:23 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t PoolManager::lockMutex(MutexIF::TimeoutType timeoutType, uint32_t timeoutMs) {
|
|
|
|
return mutex->lockMutex(timeoutType, timeoutMs);
|
2020-10-15 13:43:23 +02:00
|
|
|
}
|
|
|
|
|
2022-02-02 10:29:30 +01:00
|
|
|
ReturnValue_t PoolManager::unlockMutex() { return mutex->unlockMutex(); }
|