Adds sitara_depot/free_rtos Original one is on server_gorbunov/SmartForce4.0/sitara_depot
58 lines
906 B
C++
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_ */
|