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

ZDP_BindUnbindReq的使用

我只有两个设备,想让协调器和终端设备进行绑定,绑定表存储在协调器中。

1、用ZDP_BindUnbindReq是否可以实现?

2、如果可以实现,能否讲解一下使用流程,我写了一个代码,发现无法绑定。

我代码的流程如下,请问有什么问题么?

1、定义、注册了绑定端口的描述符

2、定义ZDO_BIND_UNBIND_REQUEST、ZDO_BIND_UNBIND_RESPONSE

3、注册请求和响应

  ZDO_RegisterForZDOMsg(ZDAppTaskID, Bind_rsp );//注册绑定响应
  ZDO_RegisterForZDOMsg(ZDAppTaskID, Bind_req );//注册绑定请求

4、调用函数发起绑定

         ZDP_BindUnbindReq(Bind_req,

MyApp_BindMSGAddr,      //我赋值为协调器的地址0x0000
 NLME_GetExtAddr(),        //协调器的64位地址

MYAPP_BIND_ENDPOINT,  //协调器的绑定端口

(cId_t)MYAPP_BIND_OUTCLUSTERS, //输出簇
 (zAddrType_t*)MyApp_BindDstAddr,     //终端64位地址

MYAPP_BIND_ENDPOINT,                    //终端的绑定端口
                      FALSE );

YiKai Chen:

應該是透過ZDP_BindReq做綁定,可以參考Z-Stack API.pdf

Alvin Chen:

你可以用ZDP_BindReq

在 mesh1.0中提供了两种常见的绑定方式match 和bind req:

if ( keys & HAL_KEY_SW_2 ){HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );
// Initiate an End Device Bind Request for the mandatory endpointdstAddr.addrMode = Addr16Bit;dstAddr.addr.shortAddr = 0x0000; // CoordinatorZDP_EndDeviceBindReq( &dstAddr, NLME_GetShortAddr(),GenericApp_epDesc.endPoint,GENERICAPP_PROFID,GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList,GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList,FALSE );}
if ( keys & HAL_KEY_SW_3 ){}
if ( keys & HAL_KEY_SW_4 ){HalLedSet ( HAL_LED_4, HAL_LED_MODE_OFF );// Initiate a Match Description Request (Service Discovery)dstAddr.addrMode = AddrBroadcast;dstAddr.addr.shortAddr = NWK_BROADCAST_SHORTADDR;ZDP_MatchDescReq( &dstAddr, NWK_BROADCAST_SHORTADDR,GENERICAPP_PROFID,GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList,GENERICAPP_MAX_CLUSTERS, (cId_t *)GenericApp_ClusterList,FALSE );

user4711142:

回复 YiKai Chen:

ZDP_BindReq就是ZDP_BindUnbindReq,
#define ZDP_BindReq( dstAddr, SourceAddr, SrcEP, \ClusterID, DestinationAddr, DstEP, SecurityEnable ) \ZDP_BindUnbindReq( Bind_req, dstAddr, \SourceAddr, SrcEP, ClusterID, \DestinationAddr, DstEP, SecurityEnable )
在Z-Stack API.pdf中没有找到具体的讲解。
比如我协调器发起绑定,要和终端1进行绑定,调用ZDP_BindReq,每个参数应该怎么赋值呢?
下面赋值对么?
ZDP_BindReq( 协调器16位地址, 协调器64位地址, 协调器绑定端口, 输出ID, 终端164位地址, 终端1绑定端口, 不是能) 。

user4711142:

回复 Alvin Chen:

1、ZDP_EndDeviceBindReq是否至少需要三个设备。
2、ZDP_MatchDescReq需要几个设备?

user4711142:

回复 Alvin Chen:

用ZDP_BindReq怎么实现?能否讲解一下?

YiKai Chen:

回复 user4711142:

你的赋值是对的

YiKai Chen:

回复 user4711142:

1、ZDP_EndDeviceBindReq是否至少需要三个设备。只要有兩个就行,其中一個要是協調器
2、ZDP_MatchDescReq需要几个设备?兩个

user4711142:

回复 YiKai Chen:

1、手册上说,ZDP_EndDeviceBindReq,终端A和终端B要实现绑定,需要经过协调器,也就是需要三个设备。
我如果让协调器和终端进行绑定,协调器直接调用ZDP_EndDeviceBindReq,只需要两个设备。是这样么?

Alvin Chen:

回复 user4711142:

ZDP_EndDeviceBindReq最少2个即绑定双方必须包含ZC
ZDP_MatchDescReq 绑定双方即可。

user4711142:

回复 YiKai Chen:

我确实是这么赋值的,可是发现无法使用绑定通信。

赞(0)
未经允许不得转载:TI中文支持网 » ZDP_BindUnbindReq的使用
分享到: 更多 (0)