久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

android 藍(lán)牙ble app開(kāi)發(fā)(二) -- 關(guān)鍵概念,,連接參數(shù),連接請(qǐng)求

 堆泄露棧溢出 2016-12-31

Android  藍(lán)牙ble app開(kāi)發(fā)中 經(jīng)常會(huì)遇到很多問(wèn)題,,這個(gè)時(shí)候就需要用到抓包軟件進(jìn)行分析,,單單從現(xiàn)象上很難鑒定是設(shè)備固件端的問(wèn)題,,還是我們自己app寫(xiě)的不對(duì)的問(wèn)題。這一點(diǎn)是做android的是比較糾結(jié)的,,因?yàn)楣碳私?jīng)常是和iOS通信沒(méi)毛問(wèn)題,,android問(wèn)題偶爾,這個(gè)偶爾很經(jīng)常出現(xiàn),。(固件基于cc2540 2541)

這篇記錄的內(nèi)容是android app開(kāi)發(fā)時(shí)遇到的,,但是本身的內(nèi)容卻是ble協(xié)議的一些內(nèi)容,ios 也是一樣的下一篇會(huì)記錄下抓包過(guò)程與分析,。

1,、知識(shí)儲(chǔ)備:

要分析ble藍(lán)牙包 需要懂一些ble藍(lán)牙協(xié)議棧的內(nèi)容,和一些核心概念,。

最關(guān)鍵的幾個(gè)概念

Connection Events:連接事件

這個(gè)概念比較抽象,,之前看了很多解釋不明白,ti 宣講會(huì)上講ppt講的很清楚

簡(jiǎn)單的說(shuō)就是通信建立在連接事件上,,每次連接事件時(shí)才是真正的通信事件,,其余時(shí)間時(shí)休眠的(低功耗)

對(duì)應(yīng)在程序上就是如果連接間隔的時(shí)間設(shè)置的大于 通信間隔,就會(huì)出現(xiàn)數(shù)據(jù)通信不流暢,,沒(méi)有接收到周期性數(shù)據(jù),,數(shù)據(jù)一卡頓一卡頓時(shí)而沒(méi)有時(shí)而很多


Supervision Timeout:超時(shí)時(shí)間(在這個(gè)時(shí)間內(nèi)沒(méi)有接收到響應(yīng)就會(huì)斷開(kāi))

Slave Latency:這個(gè)不好翻譯,看圖最實(shí)在了

理解成可以忽略的空白響應(yīng)數(shù)吧


Connection Interval:連接間隔


簡(jiǎn)單的理解成連兩個(gè)連接事件之間的間隔時(shí)間唄


另外還有:Advertisement InterVals 廣播間隔,,和名字一個(gè)意思


2,、關(guān)于更新連接參數(shù)

ConnectionParameter Update Request

有閱讀藍(lán)牙協(xié)議棧和一些材料,簡(jiǎn)單的說(shuō)就是主機(jī)決定連接參數(shù)的值( connection interval, slave latency, timeout),,從機(jī)可以請(qǐng)求更新這些參數(shù),,主機(jī)決定是不是接受,接受的值是多少,。所以是會(huì)出現(xiàn)手機(jī)接受參數(shù)后和從機(jī)請(qǐng)求的參數(shù)有偏差,,或者甚至是拒絕(ios)。

這里不得不提到:android 和 ios  的ble開(kāi)發(fā)與兼容不是一個(gè)等級(jí),。

相同點(diǎn):android 和 ios 都是在手機(jī)和設(shè)備建立連接時(shí)就會(huì)默認(rèn)設(shè)置這些參數(shù),,app開(kāi)發(fā)是無(wú)法修改這些參數(shù)的,這些默認(rèn)參數(shù)由手機(jī)廠商決定,。

不同點(diǎn):當(dāng)產(chǎn)品基于功耗等的考慮是應(yīng)該要修改這些參數(shù)的,,都是由從機(jī)提出更新申請(qǐng),ios 有保護(hù)機(jī)制當(dāng)從機(jī)給的參數(shù)超過(guò)它的范圍它會(huì)拒絕這些不合理參數(shù),,然后使用默認(rèn)值,。而android 目前(4.3 4.4)是都會(huì)接受從機(jī)的更新參數(shù),即使不合理,。這里就會(huì)照成一種 設(shè)備通信 ios可以  android出問(wèn)題 而且android即使接受參數(shù)并且使用這些參數(shù)更新后還會(huì)出現(xiàn)和參數(shù)不和的現(xiàn)象,,典型的就在這個(gè)timeOut上,,是會(huì)比更新請(qǐng)求里的timeOut長(zhǎng)而且不同手機(jī)長(zhǎng)的時(shí)間不一樣。ios 好像是長(zhǎng)5秒


ios 的參數(shù)范圍還是很有參考價(jià)值的,,不然在這個(gè)范圍外,,ios拒絕了 ,android接受了問(wèn)題就蛋疼了,。

Ti 問(wèn)題網(wǎng)站上是這么回復(fù)的ios ble參數(shù)范圍:http://www./question_answer/wireless_connectivity/bluetooth/default.aspx 這上面找具體哪個(gè)帖子沒(méi)記錄

The connection parameter request may be rejected if it does not comply with all of these rules:

Interval Max * (Slave Latency + 1) ≤ 2 seconds

Interval Min ≥ 20 ms   

Interval Min + 20 ms ≤ Interval Max

Slave Latency ≤ 4

connSupervisionTimeout ≤ 6 seconds

Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout

注:ble協(xié)議里interVal   的范圍是7.5ms - 32s 


3,、android連接參數(shù)的補(bǔ)充

ble 協(xié)議里主機(jī)是對(duì)連接參數(shù)的絕對(duì)設(shè)置權(quán),從機(jī)只能提出更新請(qǐng)求是否被接受是主機(jī)決定,。

手機(jī)app開(kāi)發(fā)里是不存在修改這個(gè)值的api的,,至少4.3 4.4 沒(méi)見(jiàn)到,5.0不知道,。BlueDroid的android ble棧源碼是驅(qū)動(dòng)級(jí)的,,即使改了,也沒(méi)用,,要重新改手機(jī)的驅(qū)動(dòng)文件,,我是這么理解的,也不知道對(duì)不對(duì)


另外在做android ble OAD 在線更新固件時(shí),,閱讀TI的sensorTag 的源碼時(shí)發(fā)現(xiàn)它里面有個(gè) CC_SERVICE_UUID 服務(wù)可以設(shè)置OAD連接參數(shù),。而這個(gè)連接參數(shù)修改了也就修改了我們的固件的連接參數(shù)。參看ti 的回答:

The connection control service is a separate service, and can be added by adding ccservice.c/h from Profiles/SensorProfile/. Have a look in the SensorTag project to see how it's added to the GATT server and otherwise used.

ti 的demo里有這個(gè)cc服務(wù)的添加方法,,雖然和他們的回答方法不大一樣,添加后確實(shí)能實(shí)現(xiàn)app更改更新參數(shù)的目的,。


cc服務(wù)的流程也比較清晰,,android主機(jī)告訴ble固件我要更新參數(shù)參數(shù)是什么什么,然后固件拿著這個(gè)參數(shù)來(lái)進(jìn)行更新參請(qǐng)求,,adnroid設(shè)備再把這個(gè)請(qǐng)求設(shè)成此次通信的連接參數(shù),。這個(gè)和前面所描述的android手機(jī)app開(kāi)發(fā)沒(méi)有主動(dòng)設(shè)置連接參數(shù)的api沒(méi)有矛盾,它是通過(guò)高數(shù)ble從機(jī),,從機(jī)提出更新,,再完成更新確認(rèn)


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多