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

从零开始学习Zstack之3.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
从零开始学Z-Stack之3 -----------------Sample Application分析(上) 1、Z-Stack CC2430DB and CC2430EB Sample Application 1.1、介绍 该文档时介绍TI协议入门的一个例子SampleApp的,适用EM和DB开发板。 1.1.1、描述 这个例子是非常简单的演示,每个设备都可以发送和接收两个信息 ??周期信息-----加入该网络的所有设备每隔10S(可能会加上一个随机数的mS)都发送一个周期信息,该信息的数据载荷为发送信息次数的计数。 ??闪烁控制信息---------通过按下SW1可以发送一个控制灯闪烁的广播信息,该广播信息只针对组1的所有设备。 所有设备初始化为加入组1,所以网络一旦成功建立/加入就可以进行闪烁控制。可以通过按下设备的SW2退出组1,所以可以通过退出组1可以不接受闪灯信息。通过按下SW2也可以让不在组1的设备加入近组1,从而又可以接受闪灯信息了。 这个理解应该不困难的,反正我理解没有什么障碍! 1.1.1.1、按键 ??SW1:发送闪烁信息到组1所有设备 ??SW2:转换推出/加入组1状态 1.1.2、用户应用开发 这里我基本上能看明白是什么,但是我不打算写出来,因为涉及到一些ZIGBEE的关键术语,不是很明白。 大概就是简单介绍了下用户怎么利用例子做自己的应用,但是实用价值不高,说的太笼统,全是概念性的说明。 1.2、OSAL任务 1.2.1、初始化 因为Z-Stack是在OS下运行的,所以在之前必须调用osalAddTasks()初始化任务。 1.2.2、组织 关于OS的API函数介绍请看文档:Z-Stack OSAL API (F8W-2003-0002),应该说协议栈的每层或者说每部分都有相关的API说明文档。osalAddTasks()初始化任务, osalTaskAdd()函数添加任务,都可以到API文档或程序中详细分析函数功能。 1.2.3、系统服务 OSAL和APL系统服务是唯一的,因为比如按键和串口类似事件处罚就只能用唯一的一个任务标识。这两个硬件都留给了用户自己定义使用。 1.2.4、应用设计 用户可能为每一个应用对象都创建一个任务,或者为所有的应用对象只创建一个任务。当选择上述的设计的时候,下面是一些设计思路: 1.2.4.1、为许多应用对象创建一个OSAL任务 下面是正面和反面(pros cons)的一些叙述: - Pro:接受一个互斥任务事件(开关按下或串口)时,动作是单一的。 - Pro:需要堆栈空间保存一些OSAL任务结构。 - Con:接收一个AF信息或一个AF数据确认时,动作是复杂的-----在一个用户任务上,分支多路处理应用对象的信息事件。 - Con:通过匹配描述符(如:自动匹配)去发现服务的处理过程更复杂-----为了适当的对ZDO_NEW_DSTADDR信息起作用,一个静态标志必须被维持。 1.2.4.2、为一个应用对象创建一个OSAL任务 :一对一设计的反面和正面(pros cons)是与上面一对多设计相反的: - Pro:在应用对象试图自动匹配时,仅仅一个ZDO_NEW_DSTADDR被接收。 - Pro:已经被协议栈下层多元处理后的一个AF输入信息或一个AF数据确认。 - Con:需要堆栈空间保存一些OSAL任务结构。 - Con:如果两个或更多应用对象用同一个唯一的资源,接收一个互斥任务事件的动作就更复杂。 1.2.5、强制方法 任何一个OSAL任务必须用两种方法执行:一个是初始化,另一个是处理任务事件。 1.2.5.1、任务初始化 在例子中调用如下函数执行任务初始化: “Application Name”_Init(如SAPI_Init)。该任务初始化函数应该完成如下功能: 变量或相应应用对象特征初始化,为了使OSAL内存管理更有效,在这里应该分配永久堆栈存储区。 在AF层登记相应应用对象(如:afRegister())。 登记可用的OSAL或HAL系统服务(如:RegisterForKeys()) 1.2.5.2、任务事件处理 调用如下函数处理任务事件: “Application Name”_ProcessEvent (e.g. SAPI_ProcessEvent()).除了强制的事件之外,任一OSAL任务能被定义多达15个任务事件。 1.2.6、强制事件 一个任务事件SYS_EVENT_MSG (0x8000), 被保留必须通过OSAL任务设计。 2.2.6.1、SYS_EVENT_MSG (0x8000) 任务事件管理者应该处理如下的系统信息子集,下面只列出了部分信息,但是是最常用的几个信息处理,推荐根据例子复制到自己项目中使用。 1.2.6.1.1、AF_

文档评论(0)

KhcFqXrwEu + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档