微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 请问Zigbee协调器如何获知加入网络的device支持哪些profile?

请问Zigbee协调器如何获知加入网络的device支持哪些profile?

时间:12-22 整理:3721RD 点击:

请问Zigbee协调器如何获知加入网络的device支持哪些profile?

这个问题我也很纳闷。节点应该可以主动把支持的profile发给协调器吧?

我理解应该是获得哪些Endpoint吧,一个设备可以支持多个endpoint.每个endpoint对应一个simpledescripter.

typedef struct
{
  uint8          EndPoint;
  uint16         AppProfId;
  uint16         AppDeviceId;
  uint8          AppDevVer:4;
  uint8          Reserved:4;             // AF_V1_SUPPORT uses for AppFlags:4.
  uint8          AppNumInClusters;
  cId_t         *pAppInClusterList;
  uint8          AppNumOutClusters;
  cId_t         *pAppOutClusterList;
} SimpleDescriptionFormat_t;

可以考虑使用ZDP_SimpleDescReq(),并注册处理函数

谢谢你的答复,

进一步问,如果device不支持simple descripter怎么办?如一个device,用ZDP_SimpleDescReq()查询simple descripter,返回的status是0x83(ZDP_NOT_ACTIVE)。

协调器主动向节点发起ZDP_SimpleDescReq么?之前还要发一条ZDP_ActiveEPReq确定节点的Endpoint吧?而且ZDP_SimpleDescReq要一个节点一个节点的查询?

那你就使用 afRegister( )注册描述符。另外,你可以参考HA profile或其他例子,你可以发现大部分是使用ZDP_MatchDescReq()的方式来发现匹配的描述符。前提是你知道profileID(通常一个应用场景,这个是大家都知道的,可以是自己定义的profileID)

你可以这样做,但一般是使用Match_Desc_req,建议参考HA的例子

谢谢你。

我试一下,协调器发ZDP_ActiveEPReq命令,抓包发现节点响应有0x14和0x0C 共2个endpiont,然后用ZDP_SimpleDescReq命令查询0x14 EP响应为0x83(ZDP_NOT_ACTIVE),而查询0x0C,则能得到EP的profile ID,Cluster ID等,这是什么原因?为什么0x14 EP是 Not active的?

你用的哪个例子?使用afRegister注册了哪些端点描述符?0x14是sampleapp的,0x0c是samplesw的,当然这不是确定的。

用的sample switch。

搞清楚了,0x14端口是test endpiont,没有 Simple description。

谢谢!

使用Match_Desc_req,就是根据profileID查询Endpoint的方法吧?但是clusterID呢?至少要知道对方的clusterID才行啊?在match的时候,不知道对方支持的全部clusterID,只知道部分clusterID,可以match成功么?

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

网站地图

Top