协议栈版本: ZHA 1.2.1
方法1:
NLMEDE.h 中有相关的API可以获取到设备的MAC地址:
/*
* This function will return a pointer to the device's IEEE 64 bit address
*
* This function resides in nwk_util.c.
*/
extern byte *NLME_GetExtAddr( void );
该函数返回一个指针,这个指针是指向ZDApp.h 中的saveExtAddr[ ] 这个数组,在ZDApp.c中的函数ZDApp_Init中有一句代码可以证明:(void)NLME_GetExtAddr(); // Load the saveExtAddr pointer。这里需要注意的地方是千万不要释放返回的指针指向的空间!
方法2:
OnBoard.h 中有一个静态存储区的定义如下:
// 64-bit Extended Address of this device
extern uint8 aExtendedAddress[8];
可以直接把这个部分做一次内存拷贝使用即可,内存拷贝的作用在于防止误改。。
uint8 extAddr[8];
osal_memcpy(extAddr , aExtendedAddress , 8);