Zsack3.0协议栈 cie设备使用的是TI的IAS例程中的SampleCIE
enddevice enrollrequest enddevice使用的例程是SampleFireDetector
if ( keys & HAL_KEY_SW_2 )
{
// zone enrollment request to CIE, only perform after writing cie address attribute value
HalLedSet ( HAL_LED_1, HAL_LED_MODE_OFF );
afAddrType_t zclCIE_Addr;
zclCIE_Addr.addrMode = (afAddrMode_t)(Addr16Bit); zclCIE_Addr.endPoint = AF_BROADCAST_ENDPOINT;
zclSS_IAS_Send_ZoneStatusEnrollRequestCmd( SAMPLEFIREDETECTOR_ENDPOINT,
&zclCIE_Addr,
zclSampleFireDetector_ZoneType,
22, 0, 1);
使用ubiqua抓包看到enroll request信息,cie并没有回复,会是什么原因呢?
YiKai Chen:
你的測試中有修改任何的原始碼嗎?
user5111697:
回复 YiKai Chen:
end device只使用了原始例程的
OSAL_SampleFireDetector.c
zcl_samplefiredetector.c
zcl_samplefiredetector_data.c
zcl_samplefiredetector.h
使用的是Switch模板 替换掉APP下的文件,打开了相应的宏定义
cie设备也是如此;没有任何修改
其中end device原始为:zclCIE_Addr.addrMode = (afAddrMode_t)(Addr64Bit);osal_memcpy(zclCIE_Addr.addr.extAddr, zclSampleFireDetector_IAS_CIE_Address, Z_EXTADDR_LEN);zclCIE_Addr.endPoint = AF_BROADCAST_ENDPOINT;
但是这样enroll request并没有发出,所以将其改为
zclCIE_Addr.addrMode = (afAddrMode_t)(Addr16Bit);
zclCIE_Addr.endPoint = AF_BROADCAST_ENDPOINT;
YiKai Chen:
回复 user5111697:
CIE向IAS Zone设备写CIE地址 如果设备支持IAS Zone Cluster,则向安防设备写入IAS_CIE_Address,這個写入是CIE的IEEE Andress ,所以發出enroll request 的zclCIE_Addr.addrMode 應該要是Addr64Bit不能夠用Addr16Bit
user5111697:
回复 YiKai Chen:
抓包数据看到了write response,说明写入 cie address是成功的,但是zclCIE_Addr.addrMode设备为Addr64Bit
时,没有enroll request 信息发出,只有使用Addr16Bit时才能发出enroll request 信息;
zclCIE_Addr.endPoint = AF_BROADCAST_ENDPOINT;这里的设置正确吗?
user5111697:
回复 user5111697:
enroll.zip
YiKai Chen:
回复 user5111697:
看到write response後設個斷點檢查zclSampleFireDetector_IAS_CIE_Address是否是正確值