zigbee 怎么通过mac地址获得网络中节点的短地址
各位大神:
新年好,请问zigbee 怎么通过mac地址获得网络中挂在路由下的节点的短地址,用APSME_LookupNwkAddr得到短地址时,只能查找协调器儿子节点,对孙子节点不可访问,
afStatus_t ZDP_NwkAddrReq( byte *IEEEAddress, byte ReqType,
byte StartIndex, byte SecurityEnable )
根据已知网络地址查询远程设备物理地址,作为一个广播信息发送给网络中的所有设备:这个函数也是知道IEEE地址,对短地址进行寻找,这个不存在上面所说的限制,但是这个短地址放在那里呢,我怎么获得这个短地址呢?
。
@bo fu,
请使用
afStatus_t ZDP_NwkAddrReq( uint8 *IEEEAddress, byte ReqType,
byte StartIndex, byte SecurityEnable )
谢谢vv:
请问调用这个函数获得的地址放在那里呢?
会有callback函数上来的,对应的处理事件是
#define NWK_addr_rsp (NWK_addr_req | ZDO_RESPONSE_BIT)
void ZDApp_ProcessMsgCBs( zdoIncomingMsg_t *inMsg )
的switch case下面做添加就可以,然后去处理获得的地址
谢谢VV,真的很感谢
VV大神 我尝试了ZDP_NwkAddrReq()查询终端的短地址,可是没效果啊。
uint8 pDestination[] ={0x00,0x12,0x4B,0x00,0x04,0x3E,0xCB,0x41};
ZDP_NwkAddrReq(pDestination,ZDP_ADDR_REQTYPE_SINGLE,0,0);
void ZDApp_ProcessMsgCBs( zdoIncomingMsg_t *inMsg )
{
switch ( inMsg->clusterID )
{
#if defined ( ZDO_NWKADDR_REQUEST ) || defined ( ZDO_IEEEADDR_REQUEST ) || defined ( REFLECTOR )
case NWK_addr_rsp:
{
printf("inMsg = %s\n",inMsg);
ZDO_NwkIEEEAddrResp_t *My_pAddrRsp;
My_pAddrRsp = ZDO_ParseAddrRsp( inMsg );
Sure_nwkAddr = My_pAddrRsp->nwkAddr;
break;
}
}
1. Do you add the following?
ZDO_RegisterForZDOMsg( zclGateway_TaskID, NWK_addr_rsp );
2. byte order, little endian?
uint8 pDestination[] ={0x00,0x12,0x4B,0x00,0x04,0x3E,0xCB,0x41};