藍(lán)牙白名單多設(shè)備配對(duì)

我想通過白名單實(shí)現(xiàn)只允許特定手機(jī)設(shè)備掃描和連接,用的是從機(jī)例程,由于手機(jī)直接連接的話是3類mac地址,不能直接通過LL_AddWhiteListDevice將手機(jī)設(shè)備加入白名單,我發(fā)現(xiàn)有這么個(gè)參數(shù)

image.png

按照解釋,我的理解是每次有設(shè)備綁定后就清空解析名單,將該設(shè)備加入解析名單,而解析名單包含在白名單中,當(dāng)我使能該參數(shù)后,當(dāng)有手機(jī)和芯片配對(duì)綁定,之后修改廣播策略為只允許白名單中的設(shè)備掃描和連接,白名單的功能正常。但是默認(rèn)只允許綁定一個(gè)設(shè)備,白名單中就只能有一個(gè)設(shè)備,但我希望白名單設(shè)備數(shù)量可以大于1,我看了config.h中的說明

image.png

修改了SNVnum和Lib_Write_Flash

image.png

image.png

但是依然不能綁定兩個(gè)設(shè)備,如果綁定了一個(gè)設(shè)備,第二個(gè)設(shè)備再綁定時(shí)就會(huì)失敗。

另外我想知道

  1. GAPBOND_AUTO_SYNC_RL和GAPBOND_AUTO_SYNC_WL開啟了到底有什么功能,解析名單和白名單是什么關(guān)系

  2. 有沒有獲取白名單設(shè)備數(shù)量和設(shè)備地址的函數(shù),我看那個(gè)藍(lán)牙庫里面似乎沒有

    謝謝

二編:

  1. 前面的問題基本解決了,我現(xiàn)在想實(shí)現(xiàn)當(dāng)綁定設(shè)備數(shù)量達(dá)到最大值后,后續(xù)設(shè)備的綁定遵循先入先出的規(guī)則,但是我看了這個(gè)參數(shù)

    image.png

    當(dāng)我開啟了,達(dá)到最大設(shè)備后再有設(shè)備配對(duì)的話就會(huì)把之前的設(shè)備都刪除,設(shè)備數(shù)量就變成了1.如果我關(guān)閉,則新設(shè)備雖然會(huì)顯示配對(duì)綁定成功,但是并不會(huì)存到flash中,實(shí)際上沒有綁定。

  2. 我看了綁定用到的擦寫flash的函數(shù),

    image.png


    因?yàn)榫唧w的實(shí)現(xiàn)都被封裝了,但我猜測(cè),每次新設(shè)備綁定時(shí),先把原來的綁定信息從flash中讀出,再將新設(shè)備的信息插到后面,然后再擦寫flash。如果想實(shí)現(xiàn)先入先出,我的想法是在Lib_Read_Flash中判斷如果達(dá)到了最大數(shù)量,地址就+0x100,這樣就會(huì)從第二個(gè)設(shè)備開始讀取,但這樣也有問題,因?yàn)槲也恢喇?dāng)我關(guān)閉了GAPBOND_ERASE_AUTO,還會(huì)不會(huì)執(zhí)行綁定操作,而且其他情況也可能會(huì)調(diào)用該函數(shù),比如GAPBOND_AUTO_SYNC_RL,這樣就會(huì)導(dǎo)致遺漏第一個(gè)設(shè)備。所以如果我想實(shí)現(xiàn)先入先出的話能怎么做呢

綁定2個(gè)設(shè)備將該參數(shù)配置為2即可。

image.png

默認(rèn)給綁定信息分配的地址是512B,可以存放2個(gè)綁定(1個(gè)綁定占用256B FLASH)。


手機(jī)連接從機(jī)進(jìn)行白名單是需要將IRK生成可解析地址,因此需要綁定。

在添加了白名單設(shè)備之后,需要添加更多白名單,可以重新廣播(通用可連接廣播),否則只有特定手機(jī)才可以掃描連接。添加完成后再只允許白名單設(shè)備掃描和連接。

1.png


參考博客:

藍(lán)牙BLE從機(jī)Peripheral講解四(白名單/BLE_WhiteList) - SweetTea_lllpc - 博客園 (cnblogs.com)

BLE配對(duì)與綁定三(雜談) - SweetTea_lllpc - 博客園 (cnblogs.com)


或者留個(gè)郵箱,提供一份參考。


我用的芯片是ch573,config.h不太一樣,問題是修改了snvnum后還是沒法綁定兩個(gè)手機(jī),但是可以綁定一個(gè)電腦和一個(gè)手機(jī),郵箱是個(gè)人信息保護(hù),已隱藏


白名單參考代碼已發(fā)送至郵箱,請(qǐng)查收。解壓到BLE文件夾下運(yùn)行。


后面我又做了一些測(cè)試,我發(fā)現(xiàn),當(dāng)有一個(gè)手機(jī)設(shè)備配對(duì)和綁定后,如果開著GAPBOND_AUTO_SYNC_RL,那么第二個(gè)設(shè)備無法配對(duì)綁定,但是關(guān)了它就可以配對(duì)成功。我修改了snvnum為2,但是BLE_SNV_ADDR默認(rèn)是0X77E00,而數(shù)據(jù)FLASH的空間是0X70000-0X7FFFF,而保存一個(gè)綁定信息就需要256byte,所以默認(rèn)地址空間最大只支持2個(gè)綁定設(shè)備,所以即使我修改snvnum為大于2的數(shù),第三個(gè)設(shè)備也不能配對(duì)和綁定。所以我嘗試修改了BLE_SNV_ADDR,比如為0X77000,理論上講最大可以容納16個(gè)綁定信息,然而實(shí)際情況是,第一個(gè)設(shè)備可以正常配對(duì)和綁定,斷開連接再連接,查詢綁定數(shù)量也是1,但是第二個(gè)設(shè)備配對(duì)和綁定時(shí),雖然可以正常通過,在PairStateCB這個(gè)回調(diào)函數(shù)中也有調(diào)試信息打印,查到的綁定設(shè)備數(shù)量也是2,手機(jī)也會(huì)保存該設(shè)備,

image.png

然而斷開連接后,查詢綁定數(shù)量就變成了1,再連接可以連上,手機(jī)也不會(huì)再次配對(duì),連接用的是3類地址,而如果綁定了,應(yīng)該是1類地址,所以說修改了BLE_SNV_ADDR后就只能綁定一個(gè)設(shè)備了,我想知道是不是BLE_SNV_ADDR不能修改,不能修改的話,最大綁定設(shè)備數(shù)量是不是只支持2個(gè)了。


增加配對(duì)綁定數(shù)量:

image.png


我知道之前修改了綁定數(shù)量為什么行了,因?yàn)槲以诮壎顟B(tài)的回調(diào)函數(shù)里,當(dāng)綁定已保存,就開啟了GAPBOND_AUTO_SYNC_RL,而實(shí)際上這時(shí)候綁定數(shù)據(jù)還并沒有存到FLASH中,大概是因?yàn)镕LASH的擦寫比較花時(shí)間,而GAPBOND_AUTO_SYNC_RL已開啟,這個(gè)功能應(yīng)該是讀FLASH,兩者沖突導(dǎo)致寫FLASH失敗,而當(dāng)綁定數(shù)量即snvnum比較小,要擦的flash較小就不會(huì)有這樣的問題。所以我通過延時(shí)或者在連接斷開的時(shí)候再開GAPBOND_AUTO_SYNC_RL,就可以正常綁定多個(gè)設(shè)備,白名單也能正常工作了。感謝官方幫忙!



有沒有官方大大幫我解答一下我二編中關(guān)于先入先出的問題呢


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

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