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.

[参考译文] WEBENCH®︎工具/CC2652R:执行 ZCL 配置报告命令时出现问题

Guru**** 2538950 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/835016/webench-tools-cc2652r-there-is-an-issue-of-execute-zcl-config-report-command

器件型号:CC2652R

工具/软件:WEBENCHRegistered设计工具

在 ZCL .c 中的函数"zclParseInConfigReportCmd"中、在计算 Attr 编号的第一个循环中、如果数据类型不是模拟类型、 则可报告的更改字段的长度为0字节、因此应删除"pBuf++"。

void *zclParseInConfigReportCmd ( zclParseCmd_t *pCmd )
{.....



//计算请求命令的长度
while (pBuf <(pcmd->pData + pcmd->dataLen)
{
uint8方向;

numAttr++;
方向=*pBuf++;
pBuf += 2;//移动传递属性 ID

//是否有可报告更改字段?
如果(Direction =ZCL_SEND_ATTR_REPORTS)
{
数据类型=*pBuf++;
pBuf += 4;//移动传递最小和最大报告间隔

//对于“离散”数据类型的属性,忽略此字段
if ( zclAnalogDataType( datatype ))
{
reportChangeLen = zclGetDataTypeLength (数据类型);
pBuf +=报告 ChangeLen;

//根据需要添加填充
if (padding_need( reportChangeLen ))
{
报告 ChangeLen++;
}

dataLen += reportChangeLen;
}
/*删除此代码
其他
{
pBuf++;//移过可报告更改字段
}
*/
}
其他
{
pBuf += 2;//移动通过超时周期
}
}// while 循环


......



}





  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Aries、

    如果方向设置为 ZCL_SEND_ATTR_REPORT、则假定存在可报告的更改字段、如果不是模拟、则可以是具有1字节布尔值的数字/二进制。  您能否提供一个清晰的测试用例、在此示例中、此代码会给 ZCL 通信/处理带来问题?

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 ZStack 中、函数"zcl_SendConfigReportCmd"、如果 可报告的更改字段 不是模拟字段、传输的帧将不会包含此字段的任何字节。

    ZStatus_t zcl_SendConfigReportCmd (uint8_t srcEP、afAddrType_t * dstAddr、uint16_t clusterID、
    zclCfgReportCmd_t * cfgReportCmd、uint8_t 方向、
    uint8_t disableDefaultRsp、uint16_t manuCode、uint8_t seqnum)
    {
    
    
    //找出
    (i = 0;i < cfgReportCmd->numAttr;i++)
    {的数据长度
    zclCfgReportRec_t *报告记录=&(cfgReportCmd->attitList[i]);
    
    dataLen += 1 + 2;//方向+属性 ID
    
    if (reportRec->Direction =ZCL_SEND_ATTR_REPORTS)
    {
    dataLen += 1 + 2 + 2;//数据类型+最小+最大报告间隔
    
    //查找可报告更改字段的大小(对于模拟数据类型)
    if ( zclAnalogDataType( reportRec->datatype ))
    {
    dataLen += zclGetDataTypeLength (reportRec->datatype);
    }
    //非模拟的 dataLen 为0字节
    。}
    其他
    {
    dataLen += 2;//超时周期
    }
    }
    
    …
    
    status = zcl_SendCommand (srcEP、dstAddr、clusterID、ZCL_CMD_CONFIG_REPORT、false、
    Direction、disableDefaultRsp、manuCode、seqnum、dataLen、 buf );
    
    
    return ( status );
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在 ZCL-Config-Report-Command 中、非模拟数据类型实际上不会花费任何字节。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您澄清 Aries、我现在看到了问题、并将其传递给软件开发团队。

    此致、
    Ryan