微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 关于zstack 的 zcl_SendRead

关于zstack 的 zcl_SendRead

时间:10-02 整理:3721RD 点击:

TI的各位大家好,在使用ZCL的时候产生了一个问题,希望能解答。

程序如下,我个人认为这样的程序是没有问题的,但是用sniffer抓不到这个包,其他发包收包都正常。

 zclReadCmd_t BasicAttrsList;

BasicAttrsList.numAttr = 2;

BasicAttrsList.attrID[0] = ATTRID_BASIC_ZCL_VERSION;
BasicAttrsList.attrID[1] = ATTRID_BASIC_APPL_VERSION;

zcl_SendRead( HA_COOR_ENDPOINT, &HA_Coordinator_DstAddr, ZCL_CLUSTER_ID_GEN_BASIC, &BasicAttrsList,
ZCL_FRAME_CLIENT_SERVER_DIR, 0, 0 );

如果把 numAttr 设为0,那么是有包发出的。一旦带上数据,就没有包了。

请各位帮忙看看是我的程序有问题,还是stack本身有bug,谢谢了!

你的endpoint有注册吗?

注册了,

其他指令,比如 

zcl_SendDiscoverCmd( HA_COOR_ENDPOINT, &HA_Coordinator_DstAddr, ZCL_CLUSTER_ID_GEN_BASIC, &DiscoverAttrs, ZCL_FRAME_CLIENT_SERVER_DIR, 0, 0 );

是正常发送的

问题我自己解决了, 是ztack的结构体定义没有完成,需要用户自己定义attribute数

typedef struct
{
uint8 numAttr; 
uint16 attrID[]; 
} zclReadCmd_t;

给attiID定义一个Maximum Attributes Number 就好了,如下

#define ZCLRead_Max_Attrs_Num  20

typedef struct
{
uint8 numAttr; 
uint16 attrID[ZCLRead_Max_Attrs_Num]; 
} zclReadCmd_t;

已测试,发包无误。

看来我C语言功力不够啊!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top