1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2025-12-15 06:53:07 +01:00
Files
esp32-nmea2000-obp60/lib/queue/GwSynchronized.h
2024-11-24 16:07:27 +01:00

29 lines
793 B
C++

#pragma once
#include <freertos/semphr.h>
class GwSynchronized{
private:
SemaphoreHandle_t locker=nullptr;
void lock(){
if (locker != nullptr) xSemaphoreTake(locker, portMAX_DELAY);
}
public:
/**
* deprecated
* as SemaphoreHandle_t is already a pointer just use this directly
*/
GwSynchronized(SemaphoreHandle_t *locker){
if (locker == nullptr) return;
this->locker=*locker;
lock();
}
GwSynchronized(SemaphoreHandle_t locker){
this->locker=locker;
lock();
}
~GwSynchronized(){
if (locker != nullptr) xSemaphoreGive(locker);
}
};
#define GWSYNCHRONIZED(locker) GwSynchronized __xlock__(locker);