Skip to content

BoneEngine OSAL API 说明

wuzhun.wz edited this page Jun 12, 2018 · 1 revision

#API概览

下面列表为目前api的支持情况,'Y'代码支持,'N'代表不支持。

api AliosThings FreeRTOS
be_osal_init_yloop Y Y
be_osal_start_yloop Y Y
be_osal_schedule_call Y Y
be_osal_post_delayed_action Y Y
be_osal_post_event Y Y
be_osal_register_event_filter Y Y
be_osal_new_task Y Y
be_osal_free_task Y Y
be_osal_delay Y Y

#API说明

typedef struct {
    uint32_t time;
    uint16_t type;
    uint16_t code;
    size_t value;
    size_t extra;
} be_osal_input_event_t;

typedef void (*be_osal_event_cb)(be_osal_input_event_t *event, void *data);
typedef void (*be_osal_call_cb)(void *data);
typedef void (*be_osal_task)(void * data);

#be_osal_init_yloop

函数名称:int32_t be_osal_init_yloop(void)
功能描述:初始化yloop事件调度系统
参数说明:void
函数返回:0=success -1=fail
注意事项:无

#be_osal_start_yloop

函数名称:void  be_osal_start_yloop(void)
功能描述:启动yloop事件调度系统
参数说明:void
函数返回:无
注意事项:无

#be_osal_schedule_call

函数名称:int32_t be_osal_schedule_call(be_osal_call_cb action, void *data)
功能描述:异步执行某回调函数
参数说明:
  • action:需要被执行的回调函数
  • data:传递给action的私有数据
函数返回:0=success  -1=fail
注意事项:无

#be_osal_post_delayed_action

函数名称:int32_t be_osal_post_delayed_action(int32_t ms, be_osal_call_cb action, void *data)
功能描述:延迟异步执行某回调函数
参数说明:
  • ms:延迟执行的时间,单位是毫秒
  • action:需要被执行的函数
  • data:传递给action的私有数据
函数返回:0=success  -1=fail
注意事项:无

#be_osal_post_event

函数名称:int32_t be_osal_post_event(uint16_t type, uint16_t code, size_t value)
功能描述:触发事件
参数说明:
  • type:事件类型
  • code:事件编号
  • value:事件私有数据
函数返回:0=success  -1=fail
注意事项:无

#be_osal_register_event_filter

函数名称:int32_t be_osal_register_event_filter(uint16_t type, be_osal_event_cb cb, void *data)
功能描述:注册事件
参数说明:
  • type:事件类型
  • cb:事件回调执行函数
  • data:传递给cb的私有数据
函数返回:0=success  -1=fail
注意事项:无

#be_osal_new_task

函数名称:int32_t be_osal_new_task(const char * name,be_osal_task task,void * data,int32_t size);
功能描述:创建新task
参数说明:
  • name:任务名称
  • task:task执行函数
  • data:传递给task的私有数据
  • size:栈大小
函数返回:0=success  -1=fail
注意事项:无

#be_osal_free_task

函数名称:int32_t be_osal_free_task(void * handle);
功能描述:释放task
参数说明:
  • handle:task句柄
函数返回:0=success  -1=fail
注意事项:无

#be_osal_delay

函数名称:void be_osal_delay(uint32_t ms);
功能描述:毫秒级延时
参数说明:
  • ms:延时大小,单位毫秒
函数返回:void
注意事项:无

#实现原理

1.AliosThings

AliosThings中实现了一套异步框架yloop(https://github.com/alibaba/AliOS-Things/wiki/Yloop-Event-Framework),能对IO、Timer、callback、event进行调度,所以针对AliosThings系统,只需要对原生API进行封装即可。

2.FreeRTOS

FreeRTOS中实现架构如下: 1.png | left | 684x333 这里把callback、timer、event全部抽象成worker模型,利用最小堆来处理timer任务,当任务队列中没有可执行任务时,线程(或task)会进行阻塞。代码实现位于:链接

#使用示范

使用示范请参考仓库sample/os/vcall

Clone this wiki locally