茂名建站公司模板秦潔婷seo博客
概述
fluoride 協(xié)議棧在整個軟件框架中作為一個中間件的角色,向上對接APP,向下對接藍(lán)牙芯片。fluoride采用C++語言實現(xiàn),與APP(Jave)通信采用JNI機制;與藍(lán)牙芯片通信使用HCI硬件接口(HCI軟件協(xié)議參考藍(lán)牙核心規(guī)范),同時fluoride還實現(xiàn)了藍(lán)牙協(xié)議棧中的Host層,藍(lán)牙應(yīng)用的profile,設(shè)備管理等等。
構(gòu)建角度
android 7.0之前采用make(Android.mk)方式構(gòu)建,因效率太低引入了ninja和kati來編譯,Ninja的配置文件就是Android.bp,Android系統(tǒng)使用Blueprint和Soong工具來解析Android.bp轉(zhuǎn)換生成ninja文件,在當(dāng)前的Android構(gòu)建系統(tǒng)中一部分采用了ninja,一部分采用了make的方式。因ninja網(wǎng)上資料較多,此處不做過多介紹,可自行查閱資料。
通過查看源碼中的Android.bp梳理出框架如下:
軟件角度
軟件上fluoride 分為4層:bt interface、bt application、bt host、hci。bt interface 是fluoride最上層,向framework中的bt service 提供接口,中間通過JNI實現(xiàn)java和c++的轉(zhuǎn)換,bt interface 的實現(xiàn)主要在btif文件夾中,接口聲明在include/hardware文件夾中,這一層中沒有復(fù)雜的處理邏輯。application層中實現(xiàn)藍(lán)牙的各個應(yīng)用/profile,常見的a2dp、avrcp、hfp、gatt等等,bt host層中實現(xiàn)host中各模塊,如l2cap、sdp、rfcomm、gap等等。hci層實現(xiàn)hci 包的拆包/組包,數(shù)據(jù)接收/發(fā)送。fluoride軟件架構(gòu)大致如下:
在每個模塊內(nèi)部,大多采用API+狀態(tài)機+事件處理+數(shù)據(jù)收發(fā)的框架,在后續(xù)各個模塊中將做詳細(xì)描述
接下來的一系列文章將從上至下的詳細(xì)介紹各個模塊。