#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