在做藍(lán)牙掃描時(shí),我在gapDeviceInfoEvent_t這個(gè)結(jié)構(gòu)體中最多只能獲得31位數(shù)據(jù),怎么獲取剩下的數(shù)據(jù)呢
BLE的廣播的內(nèi)容格式普通廣播
廣播包 (Advertising Data)
響應(yīng)包 (Scan Response),需要掃描設(shè)備,發(fā)起scan_request 才會(huì)被回應(yīng).
傳統(tǒng)廣播模式無論廣播包,還是掃描響應(yīng)包都是31 Byte 最長
擴(kuò)展廣播(>=藍(lán)牙5.0)
廣播包長度可以設(shè)置到255甚至更長
CH57* 系列的芯片都是BLE 4.2 的,這意味著不能實(shí)現(xiàn)5.0以后引入的擴(kuò)展廣播包,當(dāng)然這跟本帖問題關(guān)系不太大.
像很多ble soc 一樣,wch的藍(lán)牙協(xié)議棧,主機(jī)掃描時(shí)候,為保持靈活性, 協(xié)議棧向應(yīng)用層送的只是原始的廣播數(shù)據(jù), 同時(shí)廣播包和掃描響應(yīng)包 也是分開的.
在掃描時(shí)候,通過GAP_DEVICE_INFO_EVENT 事件,在下面結(jié)構(gòu)體里面的eventype指示該包的類型
eventType的有下面類型:
其中紫色框即意味著,當(dāng)前的包為 掃描回復(fù)包,其他的都是廣播包
上面,還有個(gè)前提,即: 主動(dòng)掃描
下面函數(shù)的第二個(gè)參數(shù),必須為true ,才有可能拿到 掃描回復(fù)包.
??????GAPRole_CentralStartDiscovery(?DEFAULT_DISCOVERY_MODE, ???????????????????????????????DEFAULT_DISCOVERY_ACTIVE_SCAN, ???????????????????????????????DEFAULT_DISCOVERY_WHITE_LIST?);
掃描回復(fù)包,在中心設(shè)備中怎么讀取、調(diào)用?
此結(jié)構(gòu)體成員包含廣播包和掃描應(yīng)答包
如果需要區(qū)分廣播包和掃描應(yīng)答包可以根據(jù)eventtype進(jìn)行區(qū)分。即上述工程師提供的講解。