Merge pull request 'Mutex Helper renamed' (#383) from KSat/fsfw:mueller/update-package-4 into development
Reviewed-on: fsfw/fsfw#383
This commit is contained in:
commit
c815905b5a
@ -1,6 +1,6 @@
|
|||||||
#include "SharedRingBuffer.h"
|
#include "SharedRingBuffer.h"
|
||||||
#include "../ipc/MutexFactory.h"
|
#include "../ipc/MutexFactory.h"
|
||||||
#include "../ipc/MutexHelper.h"
|
#include "../ipc/MutexGuard.h"
|
||||||
|
|
||||||
SharedRingBuffer::SharedRingBuffer(object_id_t objectId, const size_t size,
|
SharedRingBuffer::SharedRingBuffer(object_id_t objectId, const size_t size,
|
||||||
bool overwriteOld, size_t maxExcessBytes):
|
bool overwriteOld, size_t maxExcessBytes):
|
||||||
|
@ -66,7 +66,7 @@ public:
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* The mutex handle can be accessed directly, for example to perform
|
* The mutex handle can be accessed directly, for example to perform
|
||||||
* the lock with the #MutexHelper for a RAII compliant lock operation.
|
* the lock with the #MutexGuard for a RAII compliant lock operation.
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
MutexIF* getMutexHandle() const;
|
MutexIF* getMutexHandle() const;
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#include "../housekeeping/AcceptsHkPacketsIF.h"
|
#include "../housekeeping/AcceptsHkPacketsIF.h"
|
||||||
#include "../timemanager/CCSDSTime.h"
|
#include "../timemanager/CCSDSTime.h"
|
||||||
#include "../ipc/MutexFactory.h"
|
#include "../ipc/MutexFactory.h"
|
||||||
#include "../ipc/MutexHelper.h"
|
#include "../ipc/MutexGuard.h"
|
||||||
#include "../ipc/QueueFactory.h"
|
#include "../ipc/QueueFactory.h"
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#include "../ipc/MutexIF.h"
|
#include "../ipc/MutexIF.h"
|
||||||
#include "../ipc/CommandMessage.h"
|
#include "../ipc/CommandMessage.h"
|
||||||
#include "../ipc/MessageQueueIF.h"
|
#include "../ipc/MessageQueueIF.h"
|
||||||
#include "../ipc/MutexHelper.h"
|
#include "../ipc/MutexGuard.h"
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
@ -25,7 +25,7 @@ inline LocalPoolVector<T, vectorSize>::LocalPoolVector(gp_id_t globalPoolId,
|
|||||||
template<typename T, uint16_t vectorSize>
|
template<typename T, uint16_t vectorSize>
|
||||||
inline ReturnValue_t LocalPoolVector<T, vectorSize>::read(
|
inline ReturnValue_t LocalPoolVector<T, vectorSize>::read(
|
||||||
MutexIF::TimeoutType timeoutType, uint32_t timeoutMs) {
|
MutexIF::TimeoutType timeoutType, uint32_t timeoutMs) {
|
||||||
MutexHelper(LocalDpManagerAttorney::getMutexHandle(*hkManager), timeoutType, timeoutMs);
|
MutexGuard(LocalDpManagerAttorney::getMutexHandle(*hkManager), timeoutType, timeoutMs);
|
||||||
return readWithoutLock();
|
return readWithoutLock();
|
||||||
}
|
}
|
||||||
template<typename T, uint16_t vectorSize>
|
template<typename T, uint16_t vectorSize>
|
||||||
@ -64,7 +64,7 @@ inline ReturnValue_t LocalPoolVector<T, vectorSize>::commit(bool valid,
|
|||||||
template<typename T, uint16_t vectorSize>
|
template<typename T, uint16_t vectorSize>
|
||||||
inline ReturnValue_t LocalPoolVector<T, vectorSize>::commit(
|
inline ReturnValue_t LocalPoolVector<T, vectorSize>::commit(
|
||||||
MutexIF::TimeoutType timeoutType, uint32_t timeoutMs) {
|
MutexIF::TimeoutType timeoutType, uint32_t timeoutMs) {
|
||||||
MutexHelper(LocalDpManagerAttorney::getMutexHandle(*hkManager), timeoutType, timeoutMs);
|
MutexGuard(LocalDpManagerAttorney::getMutexHandle(*hkManager), timeoutType, timeoutMs);
|
||||||
return commitWithoutLock();
|
return commitWithoutLock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +119,7 @@ public:
|
|||||||
DeviceHandlerIF::DEFAULT_THERMAL_STATE_POOL_ID,
|
DeviceHandlerIF::DEFAULT_THERMAL_STATE_POOL_ID,
|
||||||
lp_id_t thermalRequestPoolId =
|
lp_id_t thermalRequestPoolId =
|
||||||
DeviceHandlerIF::DEFAULT_THERMAL_HEATING_REQUEST_POOL_ID,
|
DeviceHandlerIF::DEFAULT_THERMAL_HEATING_REQUEST_POOL_ID,
|
||||||
uint32_t thermalSetId = DeviceHandlerIF::DEFAULT_THERMAL_SET_ID);
|
uint32_t thermalSetId = DeviceHandlerIF::DEFAULT_THERMAL_SET_ID);
|
||||||
/**
|
/**
|
||||||
* @brief Helper function to ease device handler development.
|
* @brief Helper function to ease device handler development.
|
||||||
* This will instruct the transition to MODE_ON immediately
|
* This will instruct the transition to MODE_ON immediately
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#include "HealthTable.h"
|
#include "HealthTable.h"
|
||||||
#include "../ipc/MutexHelper.h"
|
#include "../ipc/MutexGuard.h"
|
||||||
#include "../ipc/MutexFactory.h"
|
#include "../ipc/MutexFactory.h"
|
||||||
#include "../serialize/SerializeAdapter.h"
|
#include "../serialize/SerializeAdapter.h"
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ ReturnValue_t HealthTable::registerObject(object_id_t object,
|
|||||||
|
|
||||||
void HealthTable::setHealth(object_id_t object,
|
void HealthTable::setHealth(object_id_t object,
|
||||||
HasHealthIF::HealthState newState) {
|
HasHealthIF::HealthState newState) {
|
||||||
MutexHelper(mutex, timeoutType, mutexTimeoutMs);
|
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
||||||
HealthMap::iterator iter = healthMap.find(object);
|
HealthMap::iterator iter = healthMap.find(object);
|
||||||
if (iter != healthMap.end()) {
|
if (iter != healthMap.end()) {
|
||||||
iter->second = newState;
|
iter->second = newState;
|
||||||
@ -40,7 +40,7 @@ void HealthTable::setHealth(object_id_t object,
|
|||||||
|
|
||||||
HasHealthIF::HealthState HealthTable::getHealth(object_id_t object) {
|
HasHealthIF::HealthState HealthTable::getHealth(object_id_t object) {
|
||||||
HasHealthIF::HealthState state = HasHealthIF::HEALTHY;
|
HasHealthIF::HealthState state = HasHealthIF::HEALTHY;
|
||||||
MutexHelper(mutex, timeoutType, mutexTimeoutMs);
|
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
||||||
HealthMap::iterator iter = healthMap.find(object);
|
HealthMap::iterator iter = healthMap.find(object);
|
||||||
if (iter != healthMap.end()) {
|
if (iter != healthMap.end()) {
|
||||||
state = iter->second;
|
state = iter->second;
|
||||||
@ -49,7 +49,7 @@ HasHealthIF::HealthState HealthTable::getHealth(object_id_t object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool HealthTable::hasHealth(object_id_t object) {
|
bool HealthTable::hasHealth(object_id_t object) {
|
||||||
MutexHelper(mutex, timeoutType, mutexTimeoutMs);
|
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
||||||
HealthMap::iterator iter = healthMap.find(object);
|
HealthMap::iterator iter = healthMap.find(object);
|
||||||
if (iter != healthMap.end()) {
|
if (iter != healthMap.end()) {
|
||||||
return true;
|
return true;
|
||||||
@ -58,14 +58,14 @@ bool HealthTable::hasHealth(object_id_t object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t HealthTable::getPrintSize() {
|
size_t HealthTable::getPrintSize() {
|
||||||
MutexHelper(mutex, timeoutType, mutexTimeoutMs);
|
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
||||||
uint32_t size = healthMap.size() * sizeof(object_id_t) +
|
uint32_t size = healthMap.size() * sizeof(object_id_t) +
|
||||||
sizeof(HasHealthIF::HealthState) + sizeof(uint16_t);
|
sizeof(HasHealthIF::HealthState) + sizeof(uint16_t);
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HealthTable::printAll(uint8_t* pointer, size_t maxSize) {
|
void HealthTable::printAll(uint8_t* pointer, size_t maxSize) {
|
||||||
MutexHelper(mutex, timeoutType, mutexTimeoutMs);
|
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
||||||
size_t size = 0;
|
size_t size = 0;
|
||||||
uint16_t count = healthMap.size();
|
uint16_t count = healthMap.size();
|
||||||
SerializeAdapter::serialize(&count,
|
SerializeAdapter::serialize(&count,
|
||||||
@ -81,7 +81,7 @@ void HealthTable::printAll(uint8_t* pointer, size_t maxSize) {
|
|||||||
|
|
||||||
ReturnValue_t HealthTable::iterate(HealthEntry *value, bool reset) {
|
ReturnValue_t HealthTable::iterate(HealthEntry *value, bool reset) {
|
||||||
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_OK;
|
||||||
MutexHelper(mutex, timeoutType, mutexTimeoutMs);
|
MutexGuard(mutex, timeoutType, mutexTimeoutMs);
|
||||||
if (reset) {
|
if (reset) {
|
||||||
mapIterator = healthMap.begin();
|
mapIterator = healthMap.begin();
|
||||||
}
|
}
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
#include "MutexFactory.h"
|
#include "MutexFactory.h"
|
||||||
#include "../serviceinterface/ServiceInterface.h"
|
#include "../serviceinterface/ServiceInterface.h"
|
||||||
|
|
||||||
class MutexHelper {
|
class MutexGuard {
|
||||||
public:
|
public:
|
||||||
MutexHelper(MutexIF* mutex, MutexIF::TimeoutType timeoutType =
|
MutexGuard(MutexIF* mutex, MutexIF::TimeoutType timeoutType =
|
||||||
MutexIF::TimeoutType::BLOCKING, uint32_t timeoutMs = 0):
|
MutexIF::TimeoutType::BLOCKING, uint32_t timeoutMs = 0):
|
||||||
internalMutex(mutex) {
|
internalMutex(mutex) {
|
||||||
if(mutex == nullptr) {
|
if(mutex == nullptr) {
|
||||||
@ -19,10 +19,10 @@ public:
|
|||||||
#endif /* FSFW_VERBOSE_LEVEL >= 1 */
|
#endif /* FSFW_VERBOSE_LEVEL >= 1 */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ReturnValue_t status = mutex->lockMutex(timeoutType,
|
result = mutex->lockMutex(timeoutType,
|
||||||
timeoutMs);
|
timeoutMs);
|
||||||
#if FSFW_VERBOSE_LEVEL >= 1
|
#if FSFW_VERBOSE_LEVEL >= 1
|
||||||
if(status == MutexIF::MUTEX_TIMEOUT) {
|
if(result == MutexIF::MUTEX_TIMEOUT) {
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::error << "MutexHelper: Lock of mutex failed with timeout of "
|
sif::error << "MutexHelper: Lock of mutex failed with timeout of "
|
||||||
<< timeoutMs << " milliseconds!" << std::endl;
|
<< timeoutMs << " milliseconds!" << std::endl;
|
||||||
@ -32,11 +32,11 @@ public:
|
|||||||
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(status != HasReturnvaluesIF::RETURN_OK) {
|
else if(result != HasReturnvaluesIF::RETURN_OK) {
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
sif::error << "MutexHelper: Lock of Mutex failed with code " << status << std::endl;
|
sif::error << "MutexHelper: Lock of Mutex failed with code " << result << std::endl;
|
||||||
#else
|
#else
|
||||||
sif::printError("MutexHelper: Lock of Mutex failed with code %d\n", status);
|
sif::printError("MutexHelper: Lock of Mutex failed with code %d\n", result);
|
||||||
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
#endif /* FSFW_CPP_OSTREAM_ENABLED == 1 */
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
@ -45,13 +45,18 @@ public:
|
|||||||
#endif /* FSFW_VERBOSE_LEVEL >= 1 */
|
#endif /* FSFW_VERBOSE_LEVEL >= 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
~MutexHelper() {
|
ReturnValue_t getLockResult() const {
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
~MutexGuard() {
|
||||||
if(internalMutex != nullptr) {
|
if(internalMutex != nullptr) {
|
||||||
internalMutex->unlockMutex();
|
internalMutex->unlockMutex();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
MutexIF* internalMutex;
|
MutexIF* internalMutex;
|
||||||
|
ReturnValue_t result = HasReturnvaluesIF::RETURN_FAILED;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* FRAMEWORK_IPC_MUTEXHELPER_H_ */
|
#endif /* FRAMEWORK_IPC_MUTEXHELPER_H_ */
|
@ -106,7 +106,7 @@ ReturnValue_t TmTcWinUdpBridge::sendTm(const uint8_t *data, size_t dataLen) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TmTcWinUdpBridge::checkAndSetClientAddress(sockaddr_in newAddress) {
|
void TmTcWinUdpBridge::checkAndSetClientAddress(sockaddr_in newAddress) {
|
||||||
MutexHelper lock(mutex, MutexIF::TimeoutType::WAITING, 10);
|
MutexGuard lock(mutex, MutexIF::TimeoutType::WAITING, 10);
|
||||||
|
|
||||||
// char ipAddress [15];
|
// char ipAddress [15];
|
||||||
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
#if FSFW_CPP_OSTREAM_ENABLED == 1
|
||||||
|
@ -15,7 +15,7 @@ PoolManager::~PoolManager(void) {
|
|||||||
|
|
||||||
ReturnValue_t PoolManager::reserveSpace(const size_t size,
|
ReturnValue_t PoolManager::reserveSpace(const size_t size,
|
||||||
store_address_t* address, bool ignoreFault) {
|
store_address_t* address, bool ignoreFault) {
|
||||||
MutexHelper mutexHelper(mutex, MutexIF::TimeoutType::WAITING,
|
MutexGuard mutexHelper(mutex, MutexIF::TimeoutType::WAITING,
|
||||||
mutexTimeoutMs);
|
mutexTimeoutMs);
|
||||||
ReturnValue_t status = LocalPool::reserveSpace(size,
|
ReturnValue_t status = LocalPool::reserveSpace(size,
|
||||||
address,ignoreFault);
|
address,ignoreFault);
|
||||||
@ -32,7 +32,7 @@ ReturnValue_t PoolManager::deleteData(
|
|||||||
". id is "<< storeId.packetIndex << std::endl;
|
". id is "<< storeId.packetIndex << std::endl;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
MutexHelper mutexHelper(mutex, MutexIF::TimeoutType::WAITING,
|
MutexGuard mutexHelper(mutex, MutexIF::TimeoutType::WAITING,
|
||||||
mutexTimeoutMs);
|
mutexTimeoutMs);
|
||||||
return LocalPool::deleteData(storeId);
|
return LocalPool::deleteData(storeId);
|
||||||
}
|
}
|
||||||
@ -40,7 +40,7 @@ ReturnValue_t PoolManager::deleteData(
|
|||||||
|
|
||||||
ReturnValue_t PoolManager::deleteData(uint8_t* buffer,
|
ReturnValue_t PoolManager::deleteData(uint8_t* buffer,
|
||||||
size_t size, store_address_t* storeId) {
|
size_t size, store_address_t* storeId) {
|
||||||
MutexHelper mutexHelper(mutex, MutexIF::TimeoutType::WAITING, 20);
|
MutexGuard mutexHelper(mutex, MutexIF::TimeoutType::WAITING, 20);
|
||||||
ReturnValue_t status = LocalPool::deleteData(buffer,
|
ReturnValue_t status = LocalPool::deleteData(buffer,
|
||||||
size, storeId);
|
size, storeId);
|
||||||
return status;
|
return status;
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "LocalPool.h"
|
#include "LocalPool.h"
|
||||||
#include "StorageAccessor.h"
|
#include "StorageAccessor.h"
|
||||||
#include "../ipc/MutexHelper.h"
|
#include "../ipc/MutexGuard.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user