diff options
Diffstat (limited to 'src/FreeRTOS.h')
-rw-r--r-- | src/FreeRTOS.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/FreeRTOS.h b/src/FreeRTOS.h new file mode 100644 index 0000000..320f4cc --- /dev/null +++ b/src/FreeRTOS.h @@ -0,0 +1,49 @@ +/* + * FreeRTOS.h + * + * Created on: Feb 24, 2017 + * Author: kolban + */ + +#ifndef MAIN_FREERTOS_H_ +#define MAIN_FREERTOS_H_ +#include <stdint.h> +#include <string> + +#include <freertos/FreeRTOS.h> +#include <freertos/task.h> +#include <freertos/semphr.h> + + +/** + * @brief Interface to %FreeRTOS functions. + */ +class FreeRTOS { +public: + static void sleep(uint32_t ms); + static void startTask(void task(void *), std::string taskName, void *param=nullptr, int stackSize = 2048); + static void deleteTask(TaskHandle_t pTask = nullptr); + + static uint32_t getTimeSinceStart(); + + class Semaphore { + public: + Semaphore(std::string owner = "<Unknown>"); + ~Semaphore(); + void give(); + void giveFromISR(); + void give(uint32_t value); + void setName(std::string name); + void take(std::string owner="<Unknown>"); + void take(uint32_t timeoutMs, std::string owner="<Unknown>"); + uint32_t wait(std::string owner="<Unknown>"); + std::string toString(); + private: + SemaphoreHandle_t m_semaphore; + std::string m_name; + std::string m_owner; + uint32_t m_value; + }; +}; + +#endif /* MAIN_FREERTOS_H_ */ |