TI中文支持网
TI专业的中文技术问题搜集分享网站

急!!!怎么Report 一个数据类型的为Structure 的Attribute?

没有找到Structure数据是怎样定义的,我自己定义成如下结构

typedef struct
{
  uint8 u8DataType0;//= ZCL_DATATYPE_BOOLEAN;
  bool bData0;
  uint8 u8DataType1;// = ZCL_DATATYPE_UINT16;
  uint16 u16Data1;
  uint8 u8DataType2;// = ZCL_DATATYPE_UINT16;
  uint16 u16Data2;
  uint8 u8DataType3;// = ZCL_DATATYPE_UINT40;
  uint8 uDataBuff[5];    
  uint8 u8DataType4;// = ZCL_DATATYPE_UINT16;
  uint16 u16Data4;
  uint8 u8DataType5;// = ZCL_DATATYPE_UINT8;
  uint8 u8Data5;
}Identification_t;

然后用zcl_SendReportCmd()函数report到Coor,但抓包发现数据并没有发出去,如下图

YiKai Chen:

你應該是要用zclReportCmd_t這個structure來填入多個attrList來report多個attribute

one Man:

回复 YiKai Chen:

我是这样做的啊,其他attribute可以report成功,但是Report一个数据类型为Structure的attribute就不成功。

YiKai Chen:

回复 one Man:

Zigbee spec沒有定義這樣的数据类型吧,你得要把你想要這樣的Structure数据类型分拆成數個attribute來report

one Man:

回复 YiKai Chen:

Zigbee spec v6 有定义,Z-Stack没有做完整

YiKai Chen:

回复 one Man:

Zigbee spec v6 有定义?方便指出你說的是那一個章節嗎?就算Z-Stack没有做完整應該也可以透過我說的方式達成

one Man:

回复 YiKai Chen:

07-5123-06-zigbee-cluster-library-specification的2.6.2,在87/869页有说到

YiKai Chen:

回复 one Man:

所以你的attrList[].dataType要設定成 ZCL_DATATYPE_STRUCT,attrList[].attrData 要指到Identification_t的結構體,長度要算對應該就要送出去了

Alvin Chen:

回复 one Man:

Hi YK and shuming mo // Attribute Report

typedef struct { uint16 attrID; // atrribute ID uint8 dataType; // attribute data type uint8 *attrData; // this structure is allocated, so the data is HERE // – the size depends on the data type of attrID } zclReport_t;

// Report Attributes Command formattypedef struct{ uint8 numAttr; // number of reports in the list zclReport_t attrList[]; // attribute report list} zclReportCmd_t;

我的建议是分为attrList[]; // attribute report list这个attrlist上进行分别report你结构体上的值。

one Man:

回复 YiKai Chen:

是啊,但是Z-Stack的zclGetAttrDataLength()和zclGetDataTypeLength()这两个函数都没有对ZCL_DATATYPE_STRUCT数据类型进行处理,要自己写。

赞(0)
未经允许不得转载:TI中文支持网 » 急!!!怎么Report 一个数据类型的为Structure 的Attribute?
分享到: 更多 (0)