1
0
mirror of https://github.com/thooge/esp32-nmea2000-obp60.git synced 2025-12-14 06:23:07 +01:00

introduce write lock for USB channel

This commit is contained in:
andreas
2024-11-24 16:07:27 +01:00
parent 874dcffba8
commit 8cb012eac0
4 changed files with 30 additions and 7 deletions

View File

@@ -3,14 +3,26 @@
class GwSynchronized{
private:
SemaphoreHandle_t *locker;
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;
if (locker != nullptr) xSemaphoreTake(*locker, portMAX_DELAY);
lock();
}
~GwSynchronized(){
if (locker != nullptr) xSemaphoreGive(*locker);
if (locker != nullptr) xSemaphoreGive(locker);
}
};