网站大量收购独家精品文档,联系QQ:2885784924

ZigBee学习之7——OSAL(操作系统抽象层)API解读.pdf

ZigBee学习之7——OSAL(操作系统抽象层)API解读.pdf

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ZigBee学习之7——OSAL(操作系统抽象层)API解读

ZigBee 7——OSAL( )API ZigBee 7——OSAL( )API ZZiiggBBeeee学习之77————OOSSAALL((操作系统抽象层))AAPPII解读 Z-Stack1.4.3 及以后的版本中引入了一个OS的概念,把应用层和堆栈层进行了 分离,但是这个操作系统并不是时实的操作系统,所以有兴趣的话还可以将其改 为时实的操作系统,或者用其他开源的实时操作系统取代,比如USOS,呵呵。 我将这个OS的API 文档进行了一定的翻译,当然所谓一定,就是说有的地方没 有翻译出来罗,要么是我不会的,要么就是我觉得没必要翻译的东西,总之,提 供给各位一个参考,最好是对照原文档来阅读拉。 没接触过操作系统,也是第一次搞Zigbee,错误的地方还请各位多多指正。 OSAL(操作系统抽象层) API[OSAL API_F8W-2003-0002_.pdf] 这个层次主要是将Z-Stack软件组件从特殊的处理过程相分离,将其保护起来。一般来说提供如 下几个功能: • 任务的注册、初始化、开始 • 任务间的消息交换 • 任务同步 • 中断处理 • 时间管理 • 内存分配 消息管理API 消息管理API提供任务(或处理单元)间的消息交换(比如中断服务事务,控制循环中的函数调 用)。这些API能用来允许任务分配和取消分配的消息缓存,发送对其他任务的命令消息,接受 应答消息。 byte *osal_msg_allocate(uint16 len) 分配一个消息缓存,随后调用它的任务/函数将填充消息并调用osal_msg_send()将消息发送给 其他任务。 参数:消息长度; 返回值:指向消息缓存的指针,失败则为NULL。 byte osal_msg_deallocate(byte *msg_ptr) 任务接收完消息后用来释放分配的消息缓存。 参数:要释放的消息缓存; 返回值:ZSUCCESS - 成功 INVALID_MSG_POINTER - 无效的消息指针 MSG_BUFFER_NOT_AVAIL - 缓存正在队列(queued) byte osal_msg_send(byte destination_task,byte *msg_ptr) 向其他任务或处理单元发送命令或数据消息。目标任务ID域必须有效的系统任务。任务ID由开 始任务时的osal_creat_task()分配。此函数将在目标任务事件列表中设置SYS_EVENT_MSG事件。 参数: destination_task - 目标任务ID; msg_ptr - 指向包含消息的消息缓存的指针; 返回值:ZSUCCESS - 成功 INVALID_MSG_POINTER - 无效的消息指针 INVALID_TASK - 目标任务不正确 byte *osal_msg_receive(byte task_id) 提取接收到的命令消息,在处理完消息后必须用osal_msg_deallocate()释放消息缓存。 参数: task_id - 调用者的任务ID(即消息发往的目标任务); 返回值:指向包含消息的一段缓存,若没有接收到消息则为NULL。 任务同步API 允许任务等待事件发生并在等待时返回控制信息。用来为任务设置事件 byte osal_set_event( byte task_id, UINT16 event_flag ) 为任务设置事件标志。 参数: task_id - 将设置事件的任务ID; event_flag - 2字节的位图,其中每位指定了一个事件。只有一个系统事件(SYSTE M_EVENT_MSG),其余的事件/位由接收任务指定; 返回值:ZSUCCESS - 成功 INVALID_TASK - 任务不正确 时钟管理API 这些API允许内部(Z-Stack)任务和外部(应用层)任务用时钟。API提供启动,停止时钟的 函数。时钟能被设置成1ms的增量。 byte osal_start_timer(UINT16 event_id, UINT16 timeout_value) 启动时钟。当时钟超时,相关的事件位将设置。事件将设置

您可能关注的文档

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档