實(shí)時(shí)更新外設(shè)RSSI

昨天在藍(lán)牙技術(shù)交流群中有人提出了這樣一個(gè)需求:
需要實(shí)時(shí)更新曾經(jīng)搜索過并緩存下來的設(shè)備的RSSI, 不論連接與否

我當(dāng)時(shí)隨便想了下給出的建議是:

場景一: 沒有連接過設(shè)備
1. 通過首次搜索, 能夠獲取到臨近手機(jī)的外設(shè), 拿到并更新一次RSSI
2. 定時(shí)調(diào)用`readRSSI`方法, 通過`peripheral: didReadRSSI:(NSNumber *)RSSI error:`回調(diào)來獲取RSSI, 如果在身邊的應(yīng)當(dāng)可以獲取到RSSI并更新, 不在附近的會(huì)返回error, 將其置為離線狀態(tài)(如果基于GAP協(xié)議的設(shè)備, 被其他設(shè)備連接后, 也將不再進(jìn)行廣播)
3. 至于時(shí)效性, 看定時(shí)器的間隔時(shí)間
場景二: 綁定過設(shè)備
這種情況可能不存在手動(dòng)搜索這個(gè)環(huán)節(jié), 直接按照場景一步驟2來

今天有空試了一下, 其實(shí)是滿足不了這個(gè)需求的, 而我也想到了另外的實(shí)現(xiàn)方式, 先來分析下這種思路的問題在哪里

關(guān)鍵點(diǎn)就在與需要通過外設(shè)調(diào)用readRSSI, 然后 通過peripheral: didReadRSSI:(NSNumber *)RSSI error:回調(diào)來獲取RSSI, 而我正是忽略了這兩個(gè)API

按照這種思路直接遍歷數(shù)組, 通過外設(shè)調(diào)用readRSSI, 那么控制臺(tái)下你將看到如下報(bào)錯(cuò):

 [CoreBluetooth] API MISUSE: Reading RSSI for peripheral <CBPeripheral: 0x1015b7c40, identifier = 3B8FA357-8E62-45CE-A8DB-ACE3962B5599, name = 河蟹-和諧, state = disconnected> while delegate is either nil or does not implement peripheral:didReadRSSI:error:

如果你以為設(shè)置了delegate就可以了, 那么你將遇到下面的報(bào)錯(cuò):

[CoreBluetooth] API MISUSE: <CBPeripheral: 0x1016862d0, identifier = 80D55926-D1B7-0875-F70B-50ACD7BF5889, name = 河蟹-和諧, state = disconnected> can only accept commands while in the connected state

我猜想將所有在周邊的設(shè)備都連接上然后去更新RSSi的方式, 不是每個(gè)項(xiàng)目都滿足的, 所以這個(gè)方法不太實(shí)際 , 僅適用于連接中的設(shè)備.

我想到的另外一種方式是:
通過設(shè)置搜索選項(xiàng), 調(diào)用搜索外設(shè)API來拿到RSSI值信息
設(shè)置KEY: CBCentralManagerScanOptionAllowDuplicatesKey

這個(gè)KEY的官方介紹:

A Boolean value that specifies whether the scan should run without duplicate filtering.

The value for this key is an NSNumber object. 
If `YES`, filtering is disabled and a discovery event is generated each time the central receives an advertising packet from the peripheral. 
Disabling this filtering can have an adverse effect on battery life and should be used only if necessary.
If `NO`, multiple discoveries of the same peripheral are coalesced into a single discovery event.
If the key is not specified, the default value is `NO`.

過濾默認(rèn)是開啟的, 如果搜索選項(xiàng)設(shè)置為YES, 那么將會(huì)收到每次設(shè)備廣播的信息, 外設(shè)廣播一次會(huì)在37,38,39三個(gè)信號(hào)分別發(fā)送一次廣播, 算是一次廣播事件, 而廣播事件間隔時(shí)間完全取決于嵌入式設(shè)置 (Link Layer允許Host在這三個(gè)物理信道中斩披,任意選取一個(gè)或者多個(gè)屉符,用于廣播)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拢肆,隨后出現(xiàn)的幾起案子闻葵,更是在濱河造成了極大的恐慌没讲,老刑警劉巖蹲坷,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件溃列,死亡現(xiàn)場離奇詭異换途,居然都是意外死亡懊渡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門军拟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剃执,“玉大人,你說我怎么就攤上這事懈息∩龅担” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵辫继,是天一觀的道長怒见。 經(jīng)常有香客問我,道長姑宽,這世上最難降的妖魔是什么遣耍? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮炮车,結(jié)果婚禮上舵变,老公的妹妹穿的比我還像新娘。我一直安慰自己瘦穆,他們只是感情好纪隙,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著扛或,像睡著了一般绵咱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熙兔,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天悲伶,我揣著相機(jī)與錄音艾恼,去河邊找鬼。 笑死拢切,一個(gè)胖子當(dāng)著我的面吹牛蒂萎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播淮椰,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼五慈,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了主穗?” 一聲冷哼從身側(cè)響起泻拦,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忽媒,沒想到半個(gè)月后争拐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晦雨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年架曹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闹瞧。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绑雄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奥邮,到底是詐尸還是另有隱情万牺,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布洽腺,位于F島的核電站脚粟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蘸朋。R本人自食惡果不足惜核无,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藕坯。 院中可真熱鬧团南,春花似錦、人聲如沸堕担。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霹购。三九已至,卻和暖如春朋腋,著一層夾襖步出監(jiān)牢的瞬間齐疙,已是汗流浹背膜楷。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留贞奋,地道東北人赌厅。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像轿塔,于是被迫代替她去往敵國和親特愿。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容