请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:LP-CC2652RB 工具与软件:
你好。 我试图捕获一些报告时间配置以有效地采样传感器、我似乎在解析这些消息时遇到了问题。
我定义了 ZCL_REPORT 、为定义了一个函数 ZCL_CMD_CONFIG_REPORT 但无法到达断点 zclSampleTemperatskirtaku Sensor_Process ConfigReportCmd 并检查我的函数实现。 但是、即使我看不到消息、协调器也始终会发出报告已成功配置的消息。
static uint8_t zclSampleTemperatureSensor_ProcessIncomingMsg(
zclIncoming_t *pInMsg)
{
uint8_t handled = FALSE;
switch (pInMsg->hdr.commandID)
{
#ifdef ZCL_READ
case ZCL_CMD_READ_RSP:
zclSampleTemperatureSensor_ProcessInReadRspCmd(pInMsg);
handled = TRUE;
break;
#endif
#ifdef ZCL_WRITE
case ZCL_CMD_WRITE_RSP:
zclSampleTemperatureSensor_ProcessInWriteRspCmd(pInMsg);
handled = TRUE;
break;
#endif
#ifdef ZCL_REPORT
// See ZCL Test Applicaiton (zcl_testapp.c) for sample code on Attribute Reporting
case ZCL_CMD_CONFIG_REPORT:
zclSampleTemperatureSensor_ProcessInConfigReportCmd( pInMsg );
break;
case ZCL_CMD_READ_REPORT_CFG:
//zclSampleTemperatureSensor_ProcessInReadReportCfgCmd( pInMsg );
break;
case ZCL_CMD_CONFIG_REPORT_RSP:
//zclSampleTemperatureSensor_ProcessInConfigReportRspCmd( pInMsg );
break;
case ZCL_CMD_READ_REPORT_CFG_RSP:
//zclSampleTemperatureSensor_ProcessInReadReportCfgRspCmd( pInMsg );
break;
case ZCL_CMD_REPORT:
//zclSampleTemperatureSensor_ProcessInReportCmd( pInMsg );
break;
#endif
case ZCL_CMD_DEFAULT_RSP:
zclSampleTemperatureSensor_ProcessInDefaultRspCmd(pInMsg);
handled = TRUE;
break;
#ifdef ZCL_DISCOVER
case ZCL_CMD_DISCOVER_CMDS_RECEIVED_RSP:
zclSampleTemperatureSensor_ProcessInDiscCmdsRspCmd(pInMsg);
handled = TRUE;
break;
case ZCL_CMD_DISCOVER_CMDS_GEN_RSP:
zclSampleTemperatureSensor_ProcessInDiscCmdsRspCmd(pInMsg);
handled = TRUE;
break;
case ZCL_CMD_DISCOVER_ATTRS_RSP:
zclSampleTemperatureSensor_ProcessInDiscAttrsRspCmd(pInMsg);
handled = TRUE;
break;
case ZCL_CMD_DISCOVER_ATTRS_EXT_RSP:
zclSampleTemperatureSensor_ProcessInDiscAttrsExtRspCmd(pInMsg);
handled = TRUE;
break;
#endif
default:
break;
}
return handled;
}
我的功能是解析报告时间并获取采样时间
static uint8_t zclSampleTemperatureSensor_ProcessInConfigReportCmd(zclIncoming_t* pInMsg )
{
zclReportCmd_t *pReportCmd = pInMsg->attrCmd;
uint16_t minReportingTime = 1000;
for (int i = 0; i < pReportCmd->numAttr; i++)
{
if (minReportingTime > *(uint16_t*)pReportCmd->attrList[i].attrData)
{
minReportingTime = *(uint16_t*)pReportCmd->attrList[i].attrData;
}
}
if (minReportingTime)
{
gMeasurementSleepMS = minReportingTime * 1000;
}
return (TRUE);
}