sitara_depot/components/free_rtos/mutex/mutex.hpp
algin ae3cac8a7d feat: First commit
Adds sitara_depot/free_rtos

Original one is on server_gorbunov/SmartForce4.0/sitara_depot
2023-05-03 14:01:32 +03:00

58 lines
906 B
C++

/*
* mutex.hpp
*
* Created on: 26 ñåíò. 2022 ã.
* Author: sychev
*/
#ifndef SRC_MUTEX_MUTEX_HPP_
#define SRC_MUTEX_MUTEX_HPP_
#include <kernel/freertos/FreeRTOS-Kernel/include/FreeRTOS.h>
#include <kernel/freertos/FreeRTOS-Kernel/include/semphr.h>
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_ */