Other Parts Discussed in Thread: CC2630, CC2531
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
主题中讨论的其他器件:CC2630、 CC2531我将 cc2630的 SampleSwitch 示例转换为 SampleSwitch、方法是将其 ID 和支流更改为 SampleLight:
//简单描述符 静态 uint16_t inputClusters[switch_MAX_INCLUSTERS]的群集列表= { ZCL_CLUSTER_ID_GEN_BASIC、 ZCL_CLUSTER_ID_GEN_ON_OFF、 ZCL_CLUSTER_ID_GEN_Identify }; 静态 uint16_t outputClusters[SWITCH_MAX_OUTCLUSTERS]= { ZCL_CLUSTER_ID_GEN_BASIC };
和
afSimpleDesc.AppDeviceId = ZCL_HA_DEVICEID_ON_OFF_LIGHT;//ZCL_HA_DEVICEID_ON_OFF_SWITCH;
我可以使用 CC2531从 Linux 网关控制它的开/关、但当我从终端设备打开/关闭并向网关发送报告时、它不发送、我有监听器、但看不到任何数据包。
我使用这些代码根据样本温度进行调整以发送报告:
zclReportCmd_t *pReportCmd; //生成并发送开/关状态到网关 pReportCmd = iCall_malloc (sizeof (zclReportCmd_t)+ sizeof (zclReport_t)); if (pReportCmd!= NULL) { afAddrType_t dstAddr; //填写目的地址 dstAddr.addrMode =(afAddrMode_t) Zstack_AFAddrMode_broadcast;//(afAddrMode_t) Addr16Bit with CC2530; dstAddr.addr.shortAddr = 0; dstAddr.endpoint = switch_EP; //填写温度读数的单个属性信息 pReportCmd->numAttr = 1; pReportCmd->attrList[0].attrID = ATTRID_ON_OFF; pReportCmd->atList[0].datatype = ZCL_datatype_Boolean; pReportCmd->attrList[0].attrData =(void *)(&zswOnOff); //调用 ZCL 函数发送报告 zcl_SendReportCmd (switch_ep、&dstAddr、 ZCL_CLUSTER_ID_GEN_ON_OFF、 pReportCmd、 ZCL_FRAME_SERVER_CLIENT_DIR、 对、 zswTransI iCall_free (pReportCmd); }