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.

cie设备没有回复enroll response

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并没有回复,会是什么原因呢?

  • 你的測試中有修改任何的原始碼嗎?
  • 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;
  • CIE向IAS Zone设备写CIE地址 如果设备支持IAS Zone Cluster,则向安防设备写入IAS_CIE_Address,這個写入是CIE的IEEE Andress ,所以發出enroll request 的zclCIE_Addr.addrMode 應該要是Addr64Bit不能夠用Addr16Bit

  • 抓包数据看到了write response,说明写入 cie address是成功的,但是zclCIE_Addr.addrMode设备为Addr64Bit
    时,没有enroll request 信息发出,只有使用Addr16Bit时才能发出enroll request 信息;
    zclCIE_Addr.endPoint = AF_BROADCAST_ENDPOINT;这里的设置正确吗?
  • 看到write response後設個斷點檢查zclSampleFireDetector_IAS_CIE_Address是否是正確值
x 出现错误。请重试或与管理员联系。