2020-07-05 23:11:40 +02:00
|
|
|
#include "Lock.h"
|
2023-01-21 14:34:29 +01:00
|
|
|
#include "configuration.h"
|
2020-07-05 23:11:40 +02:00
|
|
|
#include <cassert>
|
|
|
|
|
|
2026-01-03 21:19:24 +01:00
|
|
|
namespace concurrency {
|
2020-07-05 23:11:40 +02:00
|
|
|
|
2020-09-04 15:03:22 -07:00
|
|
|
#ifdef HAS_FREE_RTOS
|
2026-01-03 21:19:24 +01:00
|
|
|
Lock::Lock() : handle(xSemaphoreCreateBinary()) {
|
|
|
|
|
assert(handle);
|
|
|
|
|
if (xSemaphoreGive(handle) == false) {
|
|
|
|
|
abort();
|
|
|
|
|
}
|
2020-07-05 23:11:40 +02:00
|
|
|
}
|
|
|
|
|
|
2026-01-03 21:19:24 +01:00
|
|
|
void Lock::lock() {
|
|
|
|
|
if (xSemaphoreTake(handle, portMAX_DELAY) == false) {
|
|
|
|
|
abort();
|
|
|
|
|
}
|
2020-07-05 23:11:40 +02:00
|
|
|
}
|
|
|
|
|
|
2026-01-03 21:19:24 +01:00
|
|
|
void Lock::unlock() {
|
|
|
|
|
if (xSemaphoreGive(handle) == false) {
|
|
|
|
|
abort();
|
|
|
|
|
}
|
2020-07-05 23:11:40 +02:00
|
|
|
}
|
2020-09-04 15:03:22 -07:00
|
|
|
#else
|
|
|
|
|
Lock::Lock() {}
|
|
|
|
|
|
|
|
|
|
void Lock::lock() {}
|
|
|
|
|
|
|
|
|
|
void Lock::unlock() {}
|
|
|
|
|
#endif
|
2020-07-05 23:11:40 +02:00
|
|
|
|
|
|
|
|
} // namespace concurrency
|