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 id

  • message: [in] Message ID

  • param1: [in] Parameter 1

  • param2: [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

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

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

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 ID

  • event_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 id

  • event_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 ID

  • req_flags: [in] Requested flags

  • op: [in] Operation type ev_flags

  • out_flags: [out] Actual event flags available

  • timeout: [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_f

  • arg: [in] Argument to task function

  • suspend: [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_f

  • stack: [in] Task stack size in bytes

  • arg: [in] Argument to task function

  • suspend: [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

Structures

struct osmsg_t

OS message structure for external Queue

Public Members

uint32_t message

Message ID

uint32_t param1

First parameter

uint32_t param2

Second parameter

int source_taskid

Filled automatically by os_get_message()

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

Enumerations

enum sleeptype_e

Sleep Type

Values:

enumerator SLEEP_TYPE_NONE

Sleep disable

enumerator SLEEP_TYPE_LIGHT

Light sleep mode

enumerator SLEEP_TYPE_DEEP

Deep sleep mode