esp32-nmea2000-obp60/lib/queue/GwSynchronized.h

17 lines
459 B
C++

#pragma once
#include <freertos/semphr.h>
class GwSynchronized{
private:
SemaphoreHandle_t *locker;
public:
GwSynchronized(SemaphoreHandle_t *locker){
this->locker=locker;
if (locker != nullptr) xSemaphoreTake(*locker, portMAX_DELAY);
}
~GwSynchronized(){
if (locker != nullptr) xSemaphoreGive(*locker);
}
};
#define GWSYNCHRONIZED(locker) GwSynchronized __xlock__(locker);