#ifndef FRAMEWORK_OSAL_FREERTOS_COUNTINGSEMAPHORE_H_ #define FRAMEWORK_OSAL_FREERTOS_COUNTINGSEMAPHORE_H_ #include /** * @brief Counting semaphores, which can be acquire more than once. * @details * See: https://www.freertos.org/CreateCounting.html * API of counting semaphores is almost identical to binary semaphores, * so we just inherit from binary semaphore and provide the respective * constructors. */ class CountingSemaphore: public BinarySemaphore { public: CountingSemaphore(uint8_t count, uint8_t initCount); //! @brief Copy ctor, disabled CountingSemaphore(const CountingSemaphore&) = delete; //! @brief Copy assignment, disabled CountingSemaphore& operator=(const CountingSemaphore&) = delete; //! @brief Move ctor CountingSemaphore (CountingSemaphore &&); //! @brief Move assignment CountingSemaphore & operator=(CountingSemaphore &&); private: uint8_t count = 0; uint8_t initCount = 0; }; #endif /* FRAMEWORK_OSAL_FREERTOS_COUNTINGSEMAPHORE_H_ */