在“Projects\zstack\Samples\ SampleApp\Source”目录下找到“SampleApp.c”文件,如图17-1所示。
图17-1 工程目录下的“SampleApp.c”文件
1.定义并加入一个组
组在zstack中用aps_Group_t类型进行描述,该类型定义如下:
在组的描述结构中包含了两个部分:一个是组ID,用来唯一标识一个组;另一个是组名,可以用一个字符串表示,方便阅读。
在应用层定义了一个全局组,在初始化函数中对组进行初始化,并将一个端点加入该组当中,其相应代码如下:
可以看到组ID为0x0001,组名为“Group1”,通过调用aps_AddGroup函数将应用层注册的一个端点(端点号为SAMPLEAPP_ENDPOINT宏定义)加入该组。
2.在组中进行通信
在Z-Stack中对地址的描述如下:
其中addrMode表示使用的地址模式,地址模式在Z-Stack中定义了如下几种:
以上代码包含了5种地址模式,第1种AddrNotPresent为不知道目标地址模式,用于绑定通信,接着是16位短地址模式、64位IEEE地址模式、组地址模式、广播地址模式。
要在组内进行通信,需要将目标地址模式设置为组地址模式,此时地址的短地址域需要设置为组ID。该实验中定义组播地址如下:
有了组地址后,就可以在组内进行数据通信了。将摇杆开关拨到上键,在上键的处理代码中将向各组中所有成员发送一个闪烁灯的命令:
发送数据是通过SampleApp_SendFlashMessage函数进行的:
3.组中成员接收组消息
组中成员接收组消息和接收其他无线消息一样,即向应用层发送AF_INCOMING_MSG_CMD消息,处理该消息调用了SampleApp_MessageMSGCB函数,该函数对闪烁灯命令的处理如下:(www.xing528.com)
从消息包中将闪烁周期提取出来,将LED设置为闪烁状态。
4.移除组项
将摇杆开关拨到右键,可以将实现组项移除。首先调用API函数aps_FindGroup在系统组表中查找相应组项是否在组表中已经存在。如果存在,则调用aps_RemoveGroup移除该组项,否则调用aps_AddGroup增加一个组项。其代码如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。