58 lines
906 B
C++
58 lines
906 B
C++
|
|
/*
|
|||
|
|
* mutex.hpp
|
|||
|
|
*
|
|||
|
|
* Created on: 26 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>. 2022 <EFBFBD>.
|
|||
|
|
* 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 <EFBFBD>++ <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> ti rtos
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
class Mutex {
|
|||
|
|
public:
|
|||
|
|
Mutex();
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* wait - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* portMAX_DELAY - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, 0 - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pdTRUE <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
BaseType_t lock(TickType_t wait = portMAX_DELAY);
|
|||
|
|
|
|||
|
|
void unlock(void);
|
|||
|
|
|
|||
|
|
~Mutex();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
SemaphoreHandle_t handle_;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LockGuard
|
|||
|
|
*
|
|||
|
|
*/
|
|||
|
|
class LockGuard {
|
|||
|
|
public:
|
|||
|
|
LockGuard(Mutex& mutex);
|
|||
|
|
|
|||
|
|
~LockGuard();
|
|||
|
|
|
|||
|
|
private:
|
|||
|
|
Mutex& mutex_;
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
#endif /* SRC_MUTEX_MUTEX_HPP_ */
|