在写ZigBee协议栈程序时,可利用ZigBee协议栈的 Device_annce 获取网络地址。
在XXX_Init()函数中注册 ZDO_RegisterForZDOMsg( zclSampleLight_TaskID, Device_annce );然后在XXX_eventLoop函数的SYS_EVENT_MSG中加入ZDO_CB_MSG消息的处理:
	
	if ( events & SYS_EVENT_MSG )
	{
	    while ( (MSGpkt =    
	(afIncomingMSGPacket_t*)osal_msg_receive( zclSampleLight_TaskID )) )
	   {
	      switch ( MSGpkt->hdr.event )
	      {
	        case ZCL_INCOMING_MSG:
	          // Incoming ZCL Foundation command/response messages
	          zclSampleLight_ProcessIncomingMsg( (zclIncomingMsg_t*)MSGpk
	t );
	          break;
	          
	        case KEY_CHANGE:
	          zclSampleLight_HandleKeys( ((keyChange_t*)MSGpkt)->state((k
	eyChange_t *)MSGpkt)->keys );
	          break;
	
	        case ZDO_CB_MSG:
	          zclSampleLight_ProcessZDOMsgs( (zdoIncomingMsg_t *)MSGpkt );
	          break;
	
	        default:
	          break;
	      }
	
	      // Release the memory
	      osal_msg_deallocate( (uint8 *)MSGpkt );
	}
	
	最后在这个函数中对Device Annce处理时显示。
	void zclSampleLight_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg )
	{
	  switch ( inMsg->clusterID )
	  {
	    case Device_annce:
	    // 显示新加入的节点信息,inMsg->asdu 中第一二个字节是新节点的网络
	地址,第3个开始的8个字节是新节点的长地址。
	      break;
	
	    default:
	      break;
	  }
	}