TI中文支持网
TI专业的中文技术问题搜集分享网站

节点发送 ZCL 广播命令 无效

请问

想实现一个节点设备(路由或终端)对网络所有设备发送 ZCL 命令广播,比如 zclGeneral_SendOnOff_CmdOn, 调用此命令时配置地址如下

afAddrType_t zclSampleSw_BDstAddr;
zclSampleSw_BDstAddr.addrMode = (afAddrMode_t)Addr16Bit;
zclSampleSw_BDstAddr.endPoint = SAMPLESW_ENDPOINT;
zclSampleSw_BDstAddr.addr.shortAddr = 0xFFFC;  (或者 0XFFFF)

但是命令总是发送不出去

发现  zcl_SendCommand -> AF_DataRequest()

if ( (req.dstAddr.addrMode == Addr16Bit) &&
(req.dstAddr.addr.shortAddr == NLME_GetShortAddr()) )
{
afDataConfirm( srcEP->endPoint, *transID, stat );
}

条件不满足, 后来修改 zclSampleSw_BDstAddr.addrMode = Addr16Bit 还是不行,应该是NLME_GetShortAddr() 错误,

希望不要修改底层函数,有什么其他方式可以 发送 ZCL 广播命令吗?

谢谢!

MT:

最开始配置是

zclSampleSw_BDstAddr.addrMode = (afAddrMode_t)AddrBroadcast;

后来修改为

zclSampleSw_BDstAddr.addrMode = (afAddrMode_t)Addr16Bit;

MT:

回复 MT:

又做了分组测试,

协调器可以对网络内各个组 发命令控制,

但是节点向自己组内其他节点发 组控制命令,还是没有反应。

VV:

if ( (req.dstAddr.addrMode == Addr16Bit) &&(req.dstAddr.addr.shortAddr == NLME_GetShortAddr()) ){afDataConfirm( srcEP->endPoint, *transID, stat );}

上面这个条件不应该进去的,因为这个进去的话,只是适用于同一个设备两个endpoint之间的通信,相当于自己发送数据给自己。

你是看抓包数据没有发到空中吗? ZCL命令的参数都对吗?cluster注册都对吧?

赞(0)
未经允许不得转载:TI中文支持网 » 节点发送 ZCL 广播命令 无效
分享到: 更多 (0)