RTOS Wrapper
API reference
Loading...
Searching...
No Matches
MutexGuard.h
Go to the documentation of this file.
1
22#ifndef MUTEXGUARD_H_
23#define MUTEXGUARD_H_
24
25#include "Mutex.h"
26#include "variant"
27
29{
30public:
31
37 MutexGuard(OS_Mutex* mutex, bool* pSuccess);
38
44 MutexGuard(OS_Mutex& mutex, bool* pSuccess);
45
51 MutexGuard( Mutex& mutex, bool* pSuccess);
52
59 MutexGuard(OS_Mutex* mutex, uint32_t maxMsecToWait = MaxWaitTimeMsec, bool* pSuccess = nullptr);
60
67 MutexGuard(OS_Mutex& mutex, uint32_t maxMsecToWait = MaxWaitTimeMsec, bool* pSuccess = nullptr);
68
75 MutexGuard( Mutex& mutex, uint32_t maxMsecToWait = MaxWaitTimeMsec, bool* pSuccess = nullptr);
76
81
82
83 static constexpr uint32_t MaxWaitTimeMsec = 250U;
84 static constexpr uint32_t MaxInitializationTimeMsec = 10U;
85
86
87private:
88 mutable std::variant<OS_Mutex*, Mutex*> mutex; // Address of existing OS mutex or Mutex instance
89
90};
91
92
93#endif /* MUTEXGUARD_H_ */
Named-mutex wrapper used by BaseThread infrastructure.
Definition MutexGuard.h:29
static constexpr uint32_t MaxWaitTimeMsec
Definition MutexGuard.h:83
std::variant< OS_Mutex *, Mutex * > mutex
Used for initial creation/lock.
Definition MutexGuard.h:88
static constexpr uint32_t MaxInitializationTimeMsec
TODO: This seems unreasonably long.. lets work down to about 100 msec.
Definition MutexGuard.h:84
~MutexGuard()
The destructor releases the lock on the mutex.
Definition MutexGuard.cpp:136
Definition Mutex.h:29
osMutexId_t OS_Mutex
Definition os_cmsis.h:28