This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Z-Stack报文发送顺序



我在调试Z-CCa530-stack-2.5.1a中switcher和light的Demon程序时,遇到二个问题想请教下各位。
环境:二个1.8.1的EB板,一个作为灯(ZC),一个作为开关(ZED)
代码:灯:projects/zstack/homeautomation/samplelight
    开关:progjects/zstack/homeautomation/sampleswitch
 
为了让开关在发出匹配报文后收到匹配应答报文,在Zcl_samplesw.c匹配代码后加入NwkPollReq(false)函数,以便ZED主动从ZC处取得应答,代码修改如下:
   dstAddr.addrMode = AddrBroadcast;
   dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR;
   ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR,
                       ZCL_HA_PROFILE_ID,
                       ZCLSAMPLESW_BINDINGLIST, bindingOutClusters,
                       0, NULL,   // No incoming clusters to bind
                       FALSE );
 
  NwkPollReq(false);
 
  按以上代码逻辑,应该先发送匹配报文,再发送数据请求报文(Data Request),但是我通过USB dongle取到的设备间的传输报文与代码逻辑相反,dongle取到的详细报文见附件。
 
 我的问题有二个:
1)请问造成报文发送先后顺序变化的原因是什么?
2)将NwkPollReq(false)替换为如下代码后,ZED并没有主动、周期地向ZC请求数据报文,请问是设置不对还是有其他什么原因呢?
   dstAddr.addrMode = AddrBroadcast;
   dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR;
   ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR,
                       ZCL_HA_PROFILE_ID,
                       ZCLSAMPLESW_BINDINGLIST, bindingOutClusters,
                       0, NULL,   // No incoming clusters to bind
                       FALSE );
 
  char RxOnIdle = TRUE;
      ZMacSetReq( ZMacRxOnIdle, &RxOnIdle );
  NLME_SetPollRate( 1000 );
  NLME_SetQueuedPollRate( 1000 );
  NLME_SetResponseRate( 1000 );
  
dongle_data_request2.psd