最近在学习zigbee协议栈,对于zigbee的数据传输方式和流程不是很清楚,因此就狠花了几天功夫去研究zigbee组网流程!首先,下面的分析是基于TI公司zstack自带的例子程序——SampleApp。对SampleApp的应用层程序:SampleApp.c文件进行观察,发现不管选中SampleApp例子程序的哪种设备(coordinator router 还是enddevice),SampleApp.c文件的内容基本上都相同,即每个设备都可以发送和接受两种信息:周期信息(为何coordinator、router、ednDevice都会周期发送信息,我们随后会给出解释,这里先留个悬念)和闪烁信息。由于zstack组网过程不是讲述的重点,因此就不过多的介绍SampleApp例程的组网流程,如果用到的话再讲。
这里直接进入SampleApp_Init()函数,该函数是SampleApp例程的应用层初始化的入口。语句:
if ( readCoordinatorJumper() )
zgDeviceLogicalType = ZG_DEVICETYPE_COORDINATOR;
else
zgDeviceLogicalType = ZG_DEVICETYPE_ROUTER;
的意思是:通过判断传感器节点的跳线来判断该节点是coordinator还是router。
继续往下走看到下面的语句:
这个是节点发送周期信息的配置,其中第一行的addrMode = (afAddrMode_t)AddrBroadcast表示设备发送信息的方式是广播。而第三行的shortAddr=0xFFFF表示设备会将信息广播到网络上的所有设备。至于为何是shortAddr为0xFFFF表示广播到网络上的所有设备,这不解释了!