Thread 中讨论的其他器件:Z-stack、
工具与软件:
您好!
我使用的是来自 SimpleLink CC13xx/CC26xx SDK 版本7.40.00.77的 Z-Stack 的 CC2674P10微控制器。
在我的项目中、我将尝试实现从终端设备向协调器的报告。 我添加了 ZCL_cluster_ID_MS_electric_measurement = 0x0b04集群、具有几个可报告的属性。 我在终端设备和协调器之间创建了绑定、但我看不到协调器上发生了任何报告。
。 bdb_event_loop、特别是在 bdb_RepReport(从 bdb_reporting.c)、我注意到我通过以下函数定期发送报告命令:
zcl_StackSendReportCmd(clusterEndpointItem->endpoint, &dstAddr,
clusterEndpointItem->cluster, pReportCmd,
ZCL_FRAME_SERVER_CLIENT_DIR,
BDB_REPORTING_DISABLE_DEFAULT_RSP,
zcl_getFrameCounter());
但是、协调器侧不接收任何内容。
进一步深入了解 AF_DataRequest传递函数(IN af.c)、我看到以下代码:
if (len > afDataReqMTU(&mtu)) {
if (apsfSendFragmented) {
stat = (*apsfSendFragmented)(&req);
} else {
stat = afStatus_INVALID_PARAMETER;
}
} else {
stat = APSDE_DataReq(&req);
}
当我计算电气测量仪表组的报告有效载荷大小(ZCL_cluster_ID_MS_electric_measurement)时、(即 ∑(所有可报告的属性数据类型的长度) +
(2 bytes for attribute ID + 1 byte for data type) * number of reportable attributes) 它达到大约90字节。 。 afDataReqMTU(&mtu)该函数返回的最大大小为82字节、因此它始终调用 (*apsfSendFragmented)(&req)函数(其源代码我无法访问)、返回。 stat = 0x02 (ZInvalidParameter)我怀疑这个问题可能与碎片有关。 我尝试了添加 ZIGBEE_FRAGMENTATION但遗憾的是、问题仍然存在。
并减少可报告属性的数量、以保持以下大小 afDataReqMTU(&mtu)、它通过 APSDE_DataReq(&req)功能、一切都按预期工作、协调器成功收到报告消息。
我正在寻找一种解决方案、即使在邮件大小较大的情况下也能实现报告功能。 如何解决此分段问题或允许发送更大的报告消息?
非常感谢您提供任何帮助或建议!