#pragma once typedef osEventFlagsId_t FuriApiLock; #define API_LOCK_EVENT (1U << 0) #define API_LOCK_INIT_LOCKED() osEventFlagsNew(NULL); #define API_LOCK_WAIT_UNTIL_UNLOCK(_lock) \ osEventFlagsWait(_lock, API_LOCK_EVENT, osFlagsWaitAny, osWaitForever); #define API_LOCK_FREE(_lock) osEventFlagsDelete(_lock); #define API_LOCK_UNLOCK(_lock) osEventFlagsSet(_lock, API_LOCK_EVENT); #define API_LOCK_WAIT_UNTIL_UNLOCK_AND_FREE(_lock) \ API_LOCK_WAIT_UNTIL_UNLOCK(_lock); \ API_LOCK_FREE(_lock);