#pragma once #include #include namespace meshtastic { // Simple wrapper around FreeRTOS API for implementing a mutex lock. class Lock { public: Lock(); Lock(const Lock&) = delete; Lock& operator=(const Lock&) = delete; /// Locks the lock. // // Must not be called from an ISR. void lock(); // Unlocks the lock. // // Must not be called from an ISR. void unlock(); private: SemaphoreHandle_t handle; }; // RAII lock guard. class LockGuard { public: LockGuard(Lock *lock); ~LockGuard(); LockGuard(const LockGuard&) = delete; LockGuard& operator=(const LockGuard&) = delete; private: Lock* lock; }; } // namespace meshtastic