Line data Source code
1 : #ifndef I_RTOS_HPP
2 : #define I_RTOS_HPP
3 :
4 : #include <stdint.h>
5 :
6 : namespace FreeRTOS_Cpp {
7 : class IRTOS {
8 : public:
9 10 : virtual ~IRTOS() = default;
10 :
11 : // delay, tick
12 : virtual void delay(uint32_t ms) = 0;
13 : virtual uint32_t getTickCount(void) = 0;
14 :
15 : //for Task Monitoring
16 : virtual void registerTask(void* handle, const char* name) = 0;
17 : virtual uint32_t getRegisteredTaskCount() = 0;
18 : virtual bool getRegisteredTaskInfo(uint32_t index, const char** outName, void** outHandle) = 0;
19 : virtual uint32_t getStackHighWaterMark(void* handle) = 0;
20 :
21 : //Events
22 : virtual uint32_t getEventBits(void* handle) = 0;
23 : virtual void setEventBits(void* handle, uint32_t bits) = 0;
24 : virtual void clearEventBits(void* handle, uint32_t bits) = 0;
25 : virtual uint32_t WaitBits(void* handle, uint32_t bits, bool clearOnExit, bool waitForAllBits, uint32_t tickTowait) = 0;
26 :
27 : // --- Mutex / Semaphore Interface ---
28 : virtual bool takeMutex(void* handle, uint32_t timeoutMs) = 0;
29 : virtual bool giveMutex(void* handle) = 0;
30 : virtual bool giveSemaphoreFromISR(void* handle, bool* higherPriorityTaskWoken) = 0;
31 :
32 : // --- Queue Interface ---
33 : virtual bool queueSend(void* handle, const void* item, uint32_t timeoutMs) = 0;
34 : virtual bool queueSendFromISR(void* handle, const void* item, bool* higherPriorityTaskWoken) = 0;
35 : virtual bool queueReceive(void* handle, void* buffer, uint32_t timeoutMs) = 0;
36 : };
37 : }
38 : #endif
|