藍(lán)牙從機(jī)獲取主機(jī)mac地址每次都有變動

static void HeartRateGapStateCB(gapRole_States_t newState, gapRoleEvent_t *pEvent)

{

? ? // if connected 如果連接

? ? if(newState == GAPROLE_CONNECTED)

? ? {

? ? ? ? if(pEvent->gap.opcode == GAP_LINK_ESTABLISHED_EVENT)

? ? ? ? {

? ? ? ? ? ? // Get connection handle 獲取連接句柄

? ? ? ? ? ? gapConnHandle = pEvent->linkCmpl.connectionHandle;

? ? ? ? ? ? // Set timer to update connection parameters

? ? ? ? ? ? // 設(shè)置計(jì)時(shí)器以更新連接參數(shù)

? ? ? ? ? ? tmos_start_task(heartRate_TaskID, HEART_CONN_PARAM_UPDATE_EVT, DEFAULT_CONN_PARAM_UPDATE_DELAY);

? ? ? ? ? ? //Peripheral_LinkEstablished( pEvent );

? ? ? ? ? ? PRINT( "Connected..\n" );

? ? ? ? ? ? int i,j;

? ? ? ? ? ? // Increment index of current result (with wraparound)

? ? ? ? ? ? ? ? ? ?PRINT ( "directAddressType=%x ",pEvent->linkCmpl.devAddrType );? //獲取地址類型

? ? ? ? ? ? ? ? ? ?PRINT ( "Device %d : ", j );

? ? ? ? ? ? ? ? ? for( i=0; i<6; i++)

? ? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? ? ?PRINT ( "%x ",pEvent->linkCmpl.devAddr[i]);//打印地址

? ? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ? ?PRINT ("\n");

? ? ? ? ? ? }

? ? ? ? ? ? //break;

? ? ? ? }

心率傳感器案例中加入讀取主機(jī)mac地址,打印mac地址代碼,隔一段時(shí)間后斷開再來連接,主機(jī)的mac地址就會變化。

1649722327(1).jpg

主機(jī)用的是同一臺手機(jī)。

問題,應(yīng)該怎樣獲取主機(jī)正確的mac地址,我需要將正確的主機(jī)mac地址加入白名單,只對綁定了白名單的主機(jī)發(fā)送數(shù)據(jù)。

獲取到的mac地址是解析地址,是會變化的,加上下面函數(shù):

uint8 sync_white_list = TRUE;

GAPBondMgr_SetParameter(GAPBOND_AUTO_SYNC_RL,sizeof(sync_white_list),&sync_white_list);

若使用的是573例程,之后應(yīng)該會更新,可以持續(xù)關(guān)注,目前里面放的是解析地址,更新后加上這函數(shù),可以將綁定的設(shè)備加入白名單,且里面存放的是身份地址,不會改變。



謝謝回復(fù),用的是573的例程,芯片是571的。


看了上面所說每次解悉都變化,想問下,從機(jī)可綁定配對模式,若想廣播的MAC地址不發(fā)生變化,究竟是GAPBOND_AUTO_SYNC_RL,GAPBOND_AUTO_SYNC_WL是按默認(rèn)false,還是要true?? 實(shí)際這兩個(gè)都為true時(shí),一段時(shí)間后,廣播的MAC地址偶然就發(fā)生了變化。手機(jī)沒法自動連接HID了。


上面提到的MAC會變化,是芯片作為從機(jī)連接手機(jī),手機(jī)作為主機(jī)的MAC地址會變化,可以通過接口函數(shù)獲取到手機(jī)的靜態(tài)MAC。

白名單用到GAPBOND_AUTO_SYNC_RL,可以參考:藍(lán)牙BLE從機(jī)Peripheral講解四(白名單/BLE_WhiteList) - SweetTea_lllpc - 博客園

僅獲取靜態(tài)MAC參考:BLE配對與綁定三(雜談) - SweetTea_lllpc - 博客園

GAPBOND_AUTO_SYNC_WL無需使用。


我理解了,我們的芯片作為從端綁定配對模式,要想獲取主機(jī)(手機(jī))的MAC不變,GAPBOND_AUTO_SYNC_RL這個(gè)要設(shè)成true,那么GAPBOND_AUTO_SYNC_WL無需使用,也就是默認(rèn)成FLASE. 現(xiàn)在有個(gè)問題我們芯片(從機(jī))的廣播MAC會偶然發(fā)生變化的(換多個(gè)安卓手機(jī)觀察到的MAC都是變的)(重啟還是芯片原來的MAC),這是什么原因呢?


每顆芯片的MAC地址是唯一的,不存在變化,需要用手機(jī)APP獲取到從機(jī)的MAC地址。

你這里描述不同手機(jī)搜索到MAC地址有區(qū)別,這種情況不會發(fā)生,可能是你看成了其他的信息。

可以直接燒錄peripheral例程,然后用BLE調(diào)試助手進(jìn)行搜索查看。


如圖,這里只是一臺設(shè)備,現(xiàn)在不同的時(shí)間,出現(xiàn)兩個(gè)不同的MAC地址,廣播名內(nèi)是我添加與MAC相同的。為什么工作一段時(shí)間后,會變MAC地址,真沒想不明白,麻煩幫我看下什么原因?mac.png


如圖,這里只是一臺設(shè)備,現(xiàn)在不同的時(shí)間,出現(xiàn)兩個(gè)不同的MAC地址,廣播名內(nèi)是我添加與MAC相同的。為什么工作一段時(shí)間后,會變MAC地址,真沒想不明白,麻煩幫我看下什么原因?mac.png


你這里是兩臺設(shè)備,名稱相同,MAC地址不同吧,而且還是同時(shí)能夠搜索到的。

將其中一臺燒錄peripheral例程,然后帶著這個(gè)設(shè)備換一個(gè)環(huán)境,看看能搜索到幾臺設(shè)備。


只是一臺設(shè)備,這個(gè)是前天綁定配對的了。前天那個(gè)顯示是BONDED(只是顯示在列表內(nèi),廣播間隔是灰色的),現(xiàn)在因?yàn)樵O(shè)備的MAC地址變了,就出現(xiàn)了個(gè)新的,NOT BONDED ,其實(shí)今天只是掃描出這個(gè)新的(舊的MAC只是列表在里面罷了)。


好煩啊,這么怪的,這些都是SDK底層的,應(yīng)用層究竟是什么能觸發(fā)這么怪的MAC地址出來?


按照你的描述,如果不方便燒錄代碼,確認(rèn)是否是市面上成品。如是成品,可以跟制造商聯(lián)系看看廣播MAC他們是否有自定義使用。

如果你們進(jìn)行開發(fā)芯片,我建議是燒錄官方的例程。因?yàn)槲覀儫o法排除是否代碼做了這方面的操作,至少可以確定的是芯片具備本身的唯一的MAC,所以自己開發(fā)是不會出現(xiàn)自動更換MAC地址的行為。


設(shè)備NV內(nèi)的MAC地址是沒有變的,重啟就恢復(fù)了。藍(lán)牙相關(guān)代碼已發(fā)給你,麻煩幫查看下,謝謝!


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频