CC2530 多个节点绑定问题
使用CC2530,一个作为协调器,需要和多个节点绑定进行数据收发。如何才能实现上电就自行绑定啊?ZStack的例程有关于这方面的吗?谢谢大家解答。
另外问,协调器和节点相互收发数据,都需要先绑定吗?
要实现上电自动绑定,需要在应用层的处理中加入service discovery的功能。
如在Coordinator的device announce callback处理函数中发送match request,指定你需要绑定的cluster列表,在处理match response中把符合要求的节点地址记录下来,就能在后续的应用中使用这些地址进行发送接收了。
是的,绑定是为了确定彼此2个节点都具备相同的功能,并且通过绑定协调器能知道路由器或终端节点的地址。
谢谢答复。我基于SimpleApp做了自动绑定的功能。思路是这样的:
ZDO设备初始化成功->zb_StartConfirm( ZB_SUCCESS )->协调器调用afSetMatch(ep, TRUE),终端设备调用ZDP_MatchDescReq()->SimpleApp_ProcessZDOMsgs中处理Match_Desc_rsp->绑定成功。
按照这个思路,多台终端设备上电时可以和协调器绑定。但是,发现数据通信是单向的,只能由终端设备往协调器发送数据。我想双向都能收发收据,该如何修改呢?
你说的单向是指协调器不知道终端的地址所以不能回发吧?有两种方法可以试试。
1. 在协调器中注册Match_Desc_req的处理,即在SimpleApp_ProcessZDOMsgs中处理Match_Desc_req。在处理函数中把发起请求方的源地址记下来。
2. 在协调器收到终端设备数据时,把发送方的源地址记录下来。
是我搞错了,本来就可以相互收发数据的,是我目标地址参数没设好。
zb_SendDataRequest ( uint16 destination, cmd, len, *pData, handle, txOptions, radius ), 当destination为0xFFFE为绑定地址发送,0xFFFF才是广播发送。