diff --git a/include/sta/os2/mutex.hpp b/include/sta/os2/mutex.hpp new file mode 100644 index 0000000..028b88e --- /dev/null +++ b/include/sta/os2/mutex.hpp @@ -0,0 +1,31 @@ +#ifndef STA_OS2_MUTEX_HPP +#define STA_OS2_MUTEX_HPP + +#include + +#include + + +namespace sta +{ + /** + * @brief Implementation of Mutex for CMSIS V2. + */ + class Os2Mutex : public Mutex + { + public: + /** + * @param handle CMSIS V2 mutex + */ + Os2Mutex(osMutexId_t * handle); + + void acquire() override; + void release() override; + + private: + osMutexId_t * handle_; /**< CMSIS V2 mutex */ + }; +} // namespace sta + + +#endif // STA_OS2_MUTEX_HPP diff --git a/src/os2/mutex.cpp b/src/os2/mutex.cpp new file mode 100644 index 0000000..b6901fa --- /dev/null +++ b/src/os2/mutex.cpp @@ -0,0 +1,19 @@ +#include + + +namespace sta +{ + Os2Mutex::Os2Mutex(osMutexId_t * handle) + : handle_{handle} + {} + + void Os2Mutex::acquire() + { + osMutexAcquire(*handle_, osWaitForever); + } + + void Os2Mutex::release() + { + osMutexRelease(*handle_); + } +}