终端入网后,协调器要向网关上报加入的终端的信息,此时需要获得终端的IEEE地址。网上查了不少资料,大概意思是终端入网过程中发自身数据给协调器时,含有自身的IEEE地址,协调器会把终端的信息存储在“设备表”中,但怎么从设备表中读取对应短地址终端的IEEE地址数据呢?ZDO_ParseAddrReq()函数返回值好像只是信息标识符,应用层调用ZDO_ParseAddrRsp()对数据包解析也不清楚怎么使用,请指教哈
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
终端入网后,协调器要向网关上报加入的终端的信息,此时需要获得终端的IEEE地址。网上查了不少资料,大概意思是终端入网过程中发自身数据给协调器时,含有自身的IEEE地址,协调器会把终端的信息存储在“设备表”中,但怎么从设备表中读取对应短地址终端的IEEE地址数据呢?ZDO_ParseAddrReq()函数返回值好像只是信息标识符,应用层调用ZDO_ParseAddrRsp()对数据包解析也不清楚怎么使用,请指教哈
1 您可以利用NLME.h里面定义的专门API来让终端设备获取自身的IEEE地址再发送给协调器
获取设备自身IEEE地址
extern byte *NLME_GetExtAddr( void );
2 您也可以利用OnBoard.c里定义的全局变量aExtendedAddress获取IEEE地址,如下:
uint8 * pValue[Z_EXTADDR_LEN];
osal_memcpy(pValue, &aExtendedAddress, Z_EXTADDR_LEN);
3 您也可以利用利用zb_GetDeviceInfo()函数
希望对您有所帮助!
谢谢您的答复,我在协调器上使用APSME_LookupExtAddr(shortaddr,extaddr)根据已知短地址也获取到了终端的IEEE地址