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:
@@ -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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user