From 4b03e1d9f4c79c5ef844c1810f1117e0a6c1a390 Mon Sep 17 00:00:00 2001 From: Henrik Stickann <4376396-Mithradir@users.noreply.gitlab.com> Date: Sat, 9 Apr 2022 21:16:11 +0200 Subject: [PATCH] Add mutex implementation --- include/sta/os2/mutex.hpp | 31 +++++++++++++++++++++++++++++++ src/os2/mutex.cpp | 19 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 include/sta/os2/mutex.hpp create mode 100644 src/os2/mutex.cpp 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_); + } +}