ZigBee协调器部分
协调器作为本项目的一个中转站,不需要像终端样采集数据,控制设备,只需将终端发送过来的数据转播给8266,同样将8266发过来的命令转播给终端即可。
我们还是先进入SampleApp_Init
// 网蜂点对点通讯定义
Point_To_Point_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;//点播
Point_To_Point_DstAddr.endPoint = SAMPLEAPP_ENDPOINT;
//Point_To_Point_DstAddr.addr.shortAddr = 0x0000; //发给协调器
由于要发给终端,所以短地址就不一样了,我们这里先注释,之后来获取终端的短地址。
接下来看到case ZDO_STATE_CHANGE:
case ZDO_STATE_CHANGE:
SampleApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
if ( //(SampleApp_NwkState == DEV_ZB_COORD)|| //协调器不给自己点播
(SampleApp_NwkState == DEV_ROUTER)
|| (SampleApp_NwkState == DEV_END_DEVICE) )
去掉第三行的注释,打开点播功能。
然后我们跳到void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )这个函数中
这个函数在收到终端发过来的点播数据时会进入,在这里我们需要获取发过来终端的短地址
case SAMPLEAPP_POINT_TO_POINT_CLUSTERID:
if ((pkt->