zigbee协议栈学习(三)-阿里云开发者社区

开发者社区> linux_drv> 正文

zigbee协议栈学习(三)

简介:
+关注继续查看

这几章我们主要讲下思路和基本概念,在下一章中将具体分析代码。


下面的代码是一个设备怎样加入到一个 ID为1 的组当中:
aps_Group_t group; 
// Assign yourself to group 1 
group.ID = 0x0001; 
group.name[0] = 0; // This could be a human readable string 
aps_AddGroup( SAMPLEAPP_ENDPOINT, &group ); 


NLME_GetShortAddr()——返回本设备的 16 位网络地址
NLME_GetExtAddr()——  返回本设备的 64 位扩展地址
NLME_GetCoordShortAddr()——返回本设备的父亲设备的 16 位网络地址
NLME_GetCoordExtAddr()——  返回本设备的父亲设备的 64 位扩展地址


要实现绑定操作,端点必须向协调器发送绑定请求,协调器在有限的时间间隔内接收到两
个端点的绑定请求后,便通过建立端点之间的绑定表在这两个不同的端点之间形成了一个逻辑
链路。因此,在绑定后的两个端点之间进行消息传送的过程属于消息的间接传送。其中一个端
点首先会将信息发送到 ZigBee 协调器中,ZigBee 协调器在接收到消息后会通过查找绑定表,
将消息发送到与这个端点相绑定的所有端点中,从而实现了绑定端点之间的通信


ZigBee 协议栈的实时性要求并不高,因此在设计任务调度程序时,OSAL 只采用了轮询任
务调度队列的方法来进行任务调度管理。 


设置事件发生标志 
当协议栈中有任何事件发生时,我们可以通过设臵 event_flag 来标记有事件发生,以便主
循环函数能够及时加以处理。其函数说明如下: 
uint8 osal_set_event( uint8 task_id, uint16 event_flag ) 


时间管理
对事件进行时间管理, OSAL 也采用了链表的方式进行,每当发生一个要被处理的事件后,
就启动一个逻辑上的定时器,并将此定时器添加到链表之中。利用硬件定时器作为时间操作的
基本单元。设臵时间操作的最小精度为 lms,每 lms 硬件定时器便产生一个时间中断,在时间
中断处理程序中去更新定时器链表。每次更新,就将链表中的每一项时间计数减 l,如果发现
定时器链表中有某一表项时间计数已经减到 0,则将这个定时器从链表中删除,并设臵相应的
事件标志。这样任务调度程序便可以根据事件标志进行相应的事件处理。
uint8 osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value ) 


向目标任务发送消息的函数
uint8 osal_msg_send( uint8 destination_task, uint8 *msg_ptr ) 
其中参数 destination-task 是目标任务的任务号,参数指针 msg_ptr 指向要被发送的消息,参数len为消息的长度。 


消息提取函数
uint8 *osal_msg_receive( uint8 task_id ) //这个函数返回一个指向所需提取信息的指针

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
10062 0
BLE协议学习总结
最近因工作需要,投入到BLE项目中,故而花了不少时间翻看标准,钻研原理,以求知其所以然。结合平头哥BLE产品,实践验证理论,还是有了不少心得。一直想记录下来,奈何一直忙(给自己找了个理由),哈哈,今天终于下笔,来个小结。当然,如有不准确之处,还望各位同学批评指正。
1963 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2959 0
BLE协议学习总结
(作者:LG)
561 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13875 0
2013-8-5学习练习 协议
1浅拷贝和深拷贝的区别和相同点; 浅拷贝就比如像引用类型,而深拷贝就比如值类型。浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。
857 0
+关注
201
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载