#pragma once typedef FuriEventFlag* FuriApiLock; #define API_LOCK_EVENT (1U << 0) #define API_LOCK_INIT_LOCKED() furi_event_flag_alloc(); #define API_LOCK_WAIT_UNTIL_UNLOCK(_lock) \ furi_event_flag_wait(_lock, API_LOCK_EVENT, FuriFlagWaitAny, FuriWaitForever); #define API_LOCK_FREE(_lock) furi_event_flag_free(_lock); #define API_LOCK_UNLOCK(_lock) furi_event_flag_set(_lock, API_LOCK_EVENT); #define API_LOCK_WAIT_UNTIL_UNLOCK_AND_FREE(_lock) \ API_LOCK_WAIT_UNTIL_UNLOCK(_lock); \ API_LOCK_FREE(_lock);