mirror of
https://github.com/meshtastic/firmware.git
synced 2025-02-04 11:49:58 +00:00
51 lines
563 B
C++
51 lines
563 B
C++
#include "lock.h"
|
|
|
|
#include <cassert>
|
|
|
|
namespace meshtastic
|
|
{
|
|
|
|
#ifdef configUSE_PREEMPTION
|
|
Lock::Lock()
|
|
{
|
|
handle = xSemaphoreCreateBinary();
|
|
assert(handle);
|
|
assert(xSemaphoreGive(handle));
|
|
}
|
|
|
|
void Lock::lock()
|
|
{
|
|
assert(xSemaphoreTake(handle, portMAX_DELAY));
|
|
}
|
|
|
|
void Lock::unlock()
|
|
{
|
|
assert(xSemaphoreGive(handle));
|
|
}
|
|
#else
|
|
Lock::Lock()
|
|
{
|
|
}
|
|
|
|
void Lock::lock()
|
|
{
|
|
}
|
|
|
|
void Lock::unlock()
|
|
{
|
|
}
|
|
#endif
|
|
|
|
|
|
LockGuard::LockGuard(Lock *lock) : lock(lock)
|
|
{
|
|
lock->lock();
|
|
}
|
|
|
|
LockGuard::~LockGuard()
|
|
{
|
|
lock->unlock();
|
|
}
|
|
|
|
} // namespace meshtastic
|