GenericApp实验
绑定是协调器与终端或者终端与终端之间相互传输数据一种方法。绑定之后,网络内设备之间就可以互相传递数据了。
1.协调器通过广播方式与网络内所有终端建立绑定
uint16 bind_req(uint8 task_id,uint16 events)//终端请求与协调器绑定
{
zAddrType_t dstAddr;
//********** 广播方式 终端 能够与网络内所有设备绑定,包括协调器和其它终端**
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 );
osal_start_timerEx(bind_TaskID,5,2000);
return 0;
}
这是我建立的一个任务,可以通过定时器触发此任务,绑定成功后可以停止该定时器。绑定成功后,协调器就可以通过广播方式发送数据给所有终端了。
2.终端与协调器绑定
只需要对上述函数稍作修改就可以啦
如下所示:
uint16 bind_req(uint8 task_id,uint16 events)//终端请求与协调器绑定
{
zAddrType_t dstAddr;
//******* 只与协调器绑定 *************
dstAddr.addrMode = Addr16Bit;
dstAddr.addr.shortAddr = 0x0000; // Coordinator
//*************************************
//********** 广播方式 终端 能够与网络内所有设备绑定,包括协调器和其它终端**
// 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 );
osal_start_timerEx(bind_TaskID,5,2000);
return 0;
}
以上介绍了两种绑定方法。实现绑定以后,互传数据就随心所欲啦。