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.
