APS層提供了一系列快速轉換地址(查詢)的功能。如果查詢已經完成并保存在地
址管理器(參見網絡層)中,或者它是你自己的地址,這些函數(shù)能使你把短地址轉換為IEEE 地址(或把IEEE地址轉換為短地址)。 APSME_LookupExtAddr() API函數(shù) 如果網絡(短)地址已經存儲在地址管理器中,這個函數(shù)根據(jù)它查詢擴展(IEEE) 地址。它沒有啟動一個網絡(無線)IEEE 查詢,只是從內存記錄中查找 函數(shù)原型 uint8APSME_LookupExtAddr(uint16nwkAddr,uint8*extAddr); 參數(shù)描述 nwkAddr—這是你現(xiàn)有的地址,希望這個函數(shù)使用它來查詢擴展地址。 extAddr—這是你想要找到的地址。這是一個指向內存的指針,找到IEEE地址時 這個函數(shù)將把它復制到該內存中。 返回值 找到返回true,找不到返回false。 3.3.4.2APSME_LookupNwkAddr() 如果擴展(IEEE)地址已經存儲在地址管理器中,這個函數(shù)根據(jù)它查詢網絡(短) 地址。它沒有啟動一個網絡(無線)IEEE查詢。 函數(shù)原型 uint8APSME_LookupNwkAddr(uint8*extAddr,uint16*nwkAddr); 參數(shù)描述 nwkAddr—這是你想要找的地址。這是一個指向內存的指針,找到短地址時這個 函數(shù)將把它復制該內存中。 extAddr—這是你現(xiàn)有的地址,希望這個函數(shù)使用它來查詢擴展地址。這是一個 指向內存的指針,找到IEEE 地址時這個函數(shù)將把它復制到該內存中。 返回值 找到返回true,找不到返回false。 舉例: 通過登記的IEEE地址,查詢到設備入網的短地址,從而單播點對點發(fā)送數(shù)據(jù)。 廣播盡量少用。 afAddrType_t dstAddr; switch (clusterID) //串口命令 { case 0x0055: if(APSME_LookupNwkAddr(Pwk,&Sadd)) //Pwk是IEEE地址的數(shù)組,通過IEEE查詢到短地址,用于確定單播發(fā)送的目的短地址 {
dstAddr.addrMode = afAddr16Bit; //單播 dstAddr.addr.shortAddr = Sadd; //短地址 dstAddr.endPoint = LOCATION_BLINDNODE_ENDPOINT; //目的設備類型 ShortAdd[0]=Sadd&0x00ff; ShortAdd[1]=Sadd>>8; HalUARTWrite( SPI_MGR_DEFAULT_PORT, ShortAdd, 2 ); //短地址發(fā)到串口 HalUARTWrite( SPI_MGR_DEFAULT_PORT, "888888", 6 );
}
break;
|