TI论坛
直播中

尹聪

7年用户 153经验值
私信 关注
[问答]

CC2530,z-stack协议栈中API接口ZDP_IEEEAddrReq()参数宏没有定义,请问是什么原因?

/*********************************************************************
* @fn          ZDP_IEEEAddrReq
*
* @brief       This builds and send a IEEE_addr_req message.  This
*              function sends a unicast message looking for a 64
*              bit IEEE address with a 16 bit address as bait.
*
* @param       ReqType - ZDP_IEEEADDR_REQTYPE_SINGLE or
*                        ZDP_IEEEADDR_REQTYPE_EXTENDED
* @param       SecurityEnable - Security Options
*
* @return      afStatus_t
*/
afStatus_t ZDP_IEEEAddrReq( uint16 shortAddr, byte ReqType,
                            byte StartIndex, byte SecurityEnable )
[
  uint8 *pBuf = ZDP_TmpBuf;
  byte len = 2 + 1 + 1;  // shortAddr + ReqType + StartIndex.
  zAddrType_t dstAddr;
  (void)SecurityEnable;  // Intentionally unreferenced parameter
  dstAddr.addrMode = (afAddrMode_t)Addr16Bit;
  dstAddr.addr.shortAddr = shortAddr;
  *pBuf++ = LO_UINT16( shortAddr );
  *pBuf++ = HI_UINT16( shortAddr );
  *pBuf++ = ReqType;
  *pBuf++ = StartIndex;
  return fillAndSend( &ZDP_TransID, &dstAddr, IEEE_addr_req, len );
]
在这个API函数中参数ReqType 的取值为 ZDP_IEEEADDR_REQTYPE_SINGLE 和 ZDP_IEEEADDR_REQTYPE_EXTENDED,但是在使用的时候编译不能通过,提示没有定义。望尽快解决。

回帖(5)

李子月

2018-8-13 07:20:10
引用: 60user20 发表于 2018-8-13 07:07
Hi Yuyang,
请问您是怎么调用这个API的呢?请问您是用什么版本的Zstack?
ZDP_ADDR_REQTYPE_SINGLE 和 ZDP_ADDR_REQTYPE_EXTENDED 的定义均在 ZDProfile.h 文件里面。

对了,或许你可以参考一下ZStack-CC2530-2.5.1a的SimpleApp工程,目录为:ZStack-CC2530-2.5.1aProjectszstackSamplesSimpleApp
该工程的sapi.c文件的第919行有调用  ZDP_IEEEAddrReq( pRsp->nwkAddr, ZDP_ADDR_REQTYPE_SINGLE, 0, 0 );
可以参考一下这个工程里面是怎么调用的。
举报

尹聪

2018-8-13 07:32:27
引用: 60user20 发表于 2018-8-13 07:07
Hi Yuyang,
请问您是怎么调用这个API的呢?请问您是用什么版本的Zstack?
ZDP_ADDR_REQTYPE_SINGLE 和 ZDP_ADDR_REQTYPE_EXTENDED 的定义均在 ZDProfile.h 文件里面。

问题是解决了,主要是你们提供的API文档上面和代码中的这两个宏的定义不一致造成的,不过还是谢谢!
另外还想问一下,我用这个API主要是在发现网络拓扑结构的逻辑上,有没有发现网络拓扑结构更好的方法呢?可不可以给一个发现网络拓扑结构的示例代码?
举报

李果

2018-8-13 07:38:40
引用: andyseu 发表于 2018-8-13 07:32
问题是解决了,主要是你们提供的API文档上面和代码中的这两个宏的定义不一致造成的,不过还是谢谢!
另外还想问一下,我用这个API主要是在发现网络拓扑结构的逻辑上,有没有发现网络拓扑结构更好的方法呢?可不可以给一个发现网络拓扑结构的示例代码? ...

想要知道网络的拓扑结构,对于任何一个节点来说,就是要搞清楚他的父节点是谁,他有哪些字节点的,如果需要进一部知道相邻节点间的相对位置,那还要知道每个节点的neighbor。
关于父节点:extern byte AssocIsParent( uint16 shortAddr );
关于子节点:AssocGetNextChildNode( uint16 shortAddr );
这些函数都在AssocList.h文件里面,可以好好研究下。
举报

尹聪

2018-8-13 07:47:12
引用: wenlonghbo 发表于 2018-8-13 07:38
想要知道网络的拓扑结构,对于任何一个节点来说,就是要搞清楚他的父节点是谁,他有哪些字节点的,如果需要进一部知道相邻节点间的相对位置,那还要知道每个节点的neighbor。
关于父节点:extern byte AssocIsParent( uint16 shortAddr );
关于子节点:AssocGetNextChildNode( uint16 shortAddr );

现在遇到一个新的问题就是,我这样调用ZDP_IEEEAddrReq(0x00, ZDP_ADDR_REQTYPE_EXTENDED, 0, 0); 这个函数,通过抓包发现,它是将请求发到了协调器,并且协调器也通过射频将他的IEEE地址和与它相关设备的短地址返回给了请求节点。问题就是,协调器将数据返回给了请求节点的端点0。在请求节点端,我通过SYS_MSG_EVENT事件去取协调器返回的数据,发现根本取不到。
现在我想知道的就是怎样去取ZDP_IEEEAddr_Req()这个函数请求返回的数据?有专门的API可以用吗?如果不是,那么又该怎样编成去取返回到端点0的数据呢?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分