大家好,我最近在做一个用silicon lab的zigbee芯片做网关,用cc2530作设备端灯泡的测试。我发现灯泡能够正常的入网分配地址,在网关下查看能看到灯泡子设备,但是给灯泡发zcl on-off的指令时,灯泡接受不到这个指令。
我调试发现GenericApp_ProcessEvent()函数里下面这个case一直进入不了
case AF_INCOMING_MSG_CMD:
GenericApp_MessageMSGCB( MSGpkt );
通过抓包看到,cc2530在mac层已经对zcl指令帧回复了ACK,但是在应用层上一只获取不到这个指令,这种可能是什么方面的原因呢?
YiKai Chen:
如果是要支持HA on/off cluster為什麼不用SampleLight 來作燈泡?
gaoyang9992006:
应该是你发送的这个指令,因为两家协议不同,没有识别出来,而不是没有收到。。
Alvin Chen:
你的endpoint 对吗?
user5242421:
回复 YiKai Chen:
因为要给客户做演示demo,表示我们可以也可以兼容多家的芯片,所以网关用silicon lab的,终端设备用TI的。
user5242421:
回复 gaoyang9992006:
最坏的就是这种可能了,但是感觉不太像这个原因。发出的ZCL指令应该是通用的吧,wireshark上都能直接识别出这是zcl on-off指令,我待会把抓包文件贴一下。
user5242421:
回复 Alvin Chen:
我把GENERICAPP_ENDPOINT设置为10,然后发送的时候也指定了端点10. 我后来在GenericApp_ProcessEvent()函数下直接这么写:case AF_INCOMING_MSG_CMD:GenericApp_MessageMSGCB( MSGpkt );HalLedSet(HAL_LED_2,HAL_LED_MODE_ON);break;
也是没什么反应,这个case根本进不来。 我贴一下wireshark抓包的文件。
Alvin Chen:
回复 user5242421:
如果符合规范不会出现不通的情况,你最好上传你的包看一下,上传sniffer抓包的或者ubiqua都可以,你协议栈版本?
user5242421:
cc2530抓包.rarsilicon lab.rar
user5242421:
回复 user5242421:
添加的两个压缩文件第一个是cc2530入网以及向他发送zcl指令时的wireshark抓包结果;
第二个是能够正常接受指令的silicon终端设备的抓包结果,对比能看到后面silicon接受到zcl指令之后会回复zcl response,而前面的没有
user5242421:
我上传了两个压缩包,都是wireshark的抓包结果。第一个是cc2530入网以及接受zcl指令时的抓包过程;第二个是作为对比的,用siliconlab的终端能够正常接收指令的抓包结果。两个比较能看出来,最后接收zcl指令时,silicon终端回复了zcl response,而cc2530没有回复。