OS API¶
API Reference¶
Header File¶
Functions¶
-
void
sys_reset(void)¶ Reset System
-
int
sys_get_coreversion(char *verbuf, int len)¶ Get Core system version
- Return
Returns length of data stored in verbuf
- Parameters
verbuf: [in,out] Buffer to store version (minimum 30)len: [in] Length of verbuf
-
void
sys_setsleep_timeout(uint32_t ms)¶ Set sleep timeout. System will wake up as soon as timeout finishes or an any event occurs.
- Note
only available on NBIoT Platforms
- Parameters
ms: [in] Sleep timeout in miliseconds
-
void
sys_setsleep(int type)¶ Enter sleep mode
- Note
only available on NBIoT Platforms
- Parameters
type: [in] Type of sleep sleeptype_e
-
void
os_sleep(unsigned int ms)¶ Task sleep API
- Parameters
ms: [in] time in milliseconds
-
int
os_get_message(struct osmsg_t *msg)¶ Get message from task external queue
- Return
0 on success, negative value on error
- Parameters
msg: [in] Pointer to OS message structure osmsg_t
-
int
os_send_message(int dest_taskid, uint32_t message, uint32_t param1, uint32_t param2)¶ Send message to a task external queue, Maximum number of messages are 30 OS will raise an assert if more than 30 messages are sent to task queue.
- Return
0 on success, negative value on error
- Parameters
dest_taskid: [in] Destination task idmessage: [in] Message IDparam1: [in] Parameter 1param2: [in] Parameter 2
-
uint32_t
os_create_mutex(const char *name)¶ Create a mutex Mutex created once cannot be destroyed.
- Return
Mutex ID
- Parameters
name: [in] Name for mutex (cannot be null)
-
int
os_take_mutex(uint32_t mutex)¶ Take a mutex. If mutex is not available, Task will be suspended until mutex is available.
- Return
0 on success, negative value on error
- Parameters
mutex: [in] Mutex ID created by os_create_mutex()
-
int
os_give_mutex(uint32_t mutex)¶ Release a mutex. Once a mutex is released, OS does not yield on waiting task. Task switch happens when executing task is suspended by sleep or waiting on external queue message.
- Return
0 on success, negative value on error
- Parameters
mutex: [in] Mutex ID created by os_create_mutex()
-
uint32_t
os_create_semaphore(const char *name, int val)¶ Create a semaphore
- Return
Semaphore ID
- Parameters
name: [in] Name of semaphore (cannot be null), for debugging only.val: [in] Initial value of semaphore
-
int
os_take_semaphore(uint32_t sem, int wait)¶ Take a semaphore. When semaphore is not available and wait is requested, task will be suspended until semaphore is available
- Return
0 on success, negative value on error
- Parameters
sem: [in] Semaphore ID created by os_create_semaphore()wait: [in] TRUE if wait for semaphore to be available, FALSE to return immediately
-
int
os_give_semaphore(uint32_t sem)¶ Give a semaphore.
- Return
0 on success, negative value on error
- Parameters
sem: [in] Semaphore ID created by os_create_semaphore()
-
uint32_t
os_create_eventgroup(const char *name)¶ Create event group. Event group has 32 flags represented by each bit of a 32-bit word.
- Return
event group ID
- Parameters
name: [in] Name of event group (cannot be null).
-
int
os_eg_setevent(uint32_t egid, uint32_t event_flags)¶ Set event in event group
- Return
- Parameters
egid: [in] Event group IDevent_flags: [in] Event flags to set. Each bit represents an event flags
-
int
os_eg_waitevent(uint32_t egid, uint32_t event_flags)¶ Wait for event flag to set
- Return
0 on success, negative value on error
- Parameters
egid: [in] Event group idevent_flags: [in] Requeted flags
-
int
os_eg_waiteventex(uint32_t egid, uint32_t req_flags, int op, uint32_t *out_flags, uint32_t timeout)¶ Extended function for event flag wait
- Return
0 on success, negative value on error
- Parameters
egid: [in] Event group IDreq_flags: [in] Requested flagsop: [in] Operation type ev_flagsout_flags: [out] Actual event flags availabletimeout: [in] Timeout in milliseconds or one of the ev_wait flags
-
uint32_t
os_task_getavailstack(void)¶ Get available stack size of running task
- Return
Returns size in bytes
-
uint32_t
os_get_currtaskid(void)¶ Get task id of running task
- Return
Returns task id
-
int
os_create_task(os_taskfn_f fn, void *arg, int suspend)¶ Create a new OS task, Maximum 10 tasks can be created
- Return
On success task ID is returned, -1 on error.
- Parameters
fn: [in] Task function of type os_taskfn_farg: [in] Argument to task functionsuspend: [in] TRUE will suspend the task on creation, FALSE otherwise. Suspended task can be started later by calling os_start_task()
-
int
os_create_taskex(os_taskfn_f fn, uint32_t stack, void *arg, int suspend)¶ Create a new OS task, with extended parameters
- Note
only available on NBIoT Platforms
- Return
On success task ID is returned, -1 on error.
- Parameters
fn: [in] Task function of type os_taskfn_fstack: [in] Task stack size in bytesarg: [in] Argument to task functionsuspend: [in] TRUE will suspend the task on creation, FALSE otherwise. Suspended task can be started later by calling os_start_task()
-
int
os_task_delete(int taskid)¶ Start a task created by os_create_task()/os_create_taskex()
- Note
only available on NBIoT Platforms
- Return
0 on success, negative value on error
- Parameters
taskid: [in] Task ID
-
uint64_t
os_get_tickms(void)¶ Get OS tick/uptime in milliseconds
- Return
tick counter in milliseconds
-
uint64_t
os_get_tickus(void)¶ Get OS tick/uptime in microseconds
- Return
tick counter in microseonds
-
int
os_start_task(int taskid)¶ Start a task created by os_create_task()
- Return
0 on success, negative value on error
- Parameters
taskid: [in] Task ID
-
uint32_t
os_enter_critical(void)¶ Enter critical section
- Return
IRQ flags
-
void
os_exit_critical(uint32_t flags)¶ Exit critical section
- Parameters
flags: [in] IRQ flags from os_enter_critical()
Structures¶
Macros¶
-
EVENT_OP_AND¶
-
EVENT_OP_OR¶
-
EVENT_WAIT_SUSPEND¶
-
EVENT_NO_WAIT¶
-
main_taskid¶ Main Task ID
Type Definitions¶
-
typedef void (*
os_taskfn_f)(void *arg)¶ OS Task Function typedef
- Parameters
arg: User data argument to function
