RTOS Class
Page last updated 13 Mar 2012, by
0
replies
.
class Mail { public: Mail(){ _mail_id = osMailCreate(&_mail_def, NULL); } T* alloc(uint32_t millisec=0) { return (T*)osMailAlloc(_mail_id, millisec); } T* calloc(uint32_t millisec=0) { return (T*)osMailCAlloc(_mail_id, millisec); } osStatus put(T *mptr) { return osMailPut(_mail_id, (void*)mptr); } osEvent get(uint32_t millisec=osWaitForever) { return osMailGet(_mail_id, millisec); } osStatus free(T *mptr) { return osMailFree(_mail_id, (void*)mptr); } class MemoryPool { public: MemoryPool() { _pool_id = osPoolCreate(&_pool_def); } T* alloc(void) { return (T*)osPoolAlloc(_pool_id); } T* calloc(void) { return (T*)osPoolCAlloc(_pool_id); } osStatus free(T *block) { return osPoolFree(_pool_id, (void*)block); } class Mutex { public: Mutex(); osStatus lock(uint32_t millisec=osWaitForever); bool trylock(); osStatus unlock(); } class Queue { public: Queue(){ _queue_id = osMessageCreate(&_queue_def, NULL); } osStatus put(T* data, uint32_t millisec=0) { return osMessagePut(_queue_id, (uint32_t)data, millisec); } osEvent get(uint32_t millisec=osWaitForever) { return osMessageGet(_queue_id, millisec); } class RtosTimer { public: RtosTimer(void (*task)(void const *argument), os_timer_type type=osTimerPeriodic, void *argument=NULL); osStatus stop(void); osStatus start(uint32_t millisec); } class Semaphore { public: Semaphore(int32_t count); int32_t wait(uint32_t millisec=osWaitForever); osStatus release(void); } class Thread { public: Thread(void (*task)(void const *argument), void *argument=NULL, osPriority priority=osPriorityNormal, uint32_t stacksize=DEFAULT_STACK_SIZE); osStatus terminate(); osStatus set_priority(osPriority priority); osPriority get_priority(); int32_t signal_set(int32_t signals); static osEvent signal_wait(int32_t signals, uint32_t millisec=osWaitForever); static osStatus wait(uint32_t millisec); static osStatus yield(); static osThreadId gettid(); }
Please log in to post comments.