首页 理论教育 代码分析:如何在应用层定义全局组并加入端点?

代码分析:如何在应用层定义全局组并加入端点?

时间:2023-06-29 理论教育 版权反馈
【摘要】:在应用层定义了一个全局组,在初始化函数中对组进行初始化,并将一个端点加入该组当中,其相应代码如下:可以看到组ID为0x0001,组名为“Group1”,通过调用aps_AddGroup函数将应用层注册的一个端点加入该组。首先调用API函数aps_FindGroup在系统组表中查找相应组项是否在组表中已经存在。如果存在,则调用aps_RemoveGroup移除该组项,否则调用aps_AddGroup增加一个组项。

代码分析:如何在应用层定义全局组并加入端点?

在“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增加一个组项。其代码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈