29 lines
706 B
C
29 lines
706 B
C
|
#ifndef FRAMEWORK_OSAL_FREERTOS_MUTEX_H_
|
||
|
#define FRAMEWORK_OSAL_FREERTOS_MUTEX_H_
|
||
|
|
||
|
#include <framework/ipc/MutexIF.h>
|
||
|
|
||
|
#include <mutex>
|
||
|
|
||
|
/**
|
||
|
* @brief OS component to implement MUTual EXclusion
|
||
|
*
|
||
|
* @details
|
||
|
* Mutexes are binary semaphores which include a priority inheritance mechanism.
|
||
|
* Documentation: https://www.freertos.org/Real-time-embedded-RTOS-mutexes.html
|
||
|
* @ingroup osal
|
||
|
*/
|
||
|
class Mutex : public MutexIF {
|
||
|
public:
|
||
|
Mutex() = default;
|
||
|
ReturnValue_t lockMutex(uint32_t timeoutMs = MutexIF::MAX_TIMEOUT) override;
|
||
|
ReturnValue_t unlockMutex() override;
|
||
|
|
||
|
std::timed_mutex* getMutexHandle();
|
||
|
private:
|
||
|
bool locked = false;
|
||
|
std::timed_mutex mutex;
|
||
|
};
|
||
|
|
||
|
#endif /* FRAMEWORK_FREERTOS_MUTEX_H_ */
|