/* * mutex.hpp * * Created on: 26 сент. 2022 г. * Author: sychev */ #ifndef SRC_MUTEX_MUTEX_HPP_ #define SRC_MUTEX_MUTEX_HPP_ #include #include namespace free_rtos { /** * @brief С++ обертка на мьютексом из ti rtos * */ class Mutex { public: Mutex(); /** * wait - время ожидания в тиках, по умолчанию * portMAX_DELAY - ожидание бесконечно, 0 - ожидание отсутствует * Вызвращает pdTRUE если удалось получить семафор */ BaseType_t lock(TickType_t wait = portMAX_DELAY); void unlock(void); ~Mutex(); private: SemaphoreHandle_t handle_; }; /** * @brief Реализация паттерна LockGuard * */ class LockGuard { public: LockGuard(Mutex& mutex); ~LockGuard(); private: Mutex& mutex_; }; } #endif /* SRC_MUTEX_MUTEX_HPP_ */