2015年1月26日 星期一

Android藍芽協議棧BlueDroid分析(2)-stack結構介紹 (轉)

歡迎轉載opendevkit文章, 更好排版和效果, 請關注文章原始地址: http://www.opendevkit.com/?e=112

瞭解源碼結構,方便快速閲讀學習!

external/bluetooth/bluedroid目錄

  ---------------- audio_a2dp_hw/ 
  a2dp的audio hal,使用藍芽輸出音頻時候,調用這個hal的out_write接口,這裡的輸出並不直接寫串口,而是傳給了stack裡的 task來做的,因為編碼pcm到sbc。跟它通信的是後邊的udrv的內容!
  ---------------- bta/
相對於stack的概念,在stack上抽出一層application用的接口,取名bta,其實並不直接給app調用的,app層調用的是btif,bta是使用stack的接口。也就是被btif調用,當然邏輯並不是唯一確定的,也可能越過bta調用下層接口。主要手段是發送消息,處理事件!
ag/
Android.mk
ar/
av/
dm/
fs/
gatt/
hh/
hl/
include/
jv/
pan/
pb/
sys/  --- 這個是bta控制的和行,其他都是具體實現!
 ---------------- btif/
與android的Bluetooth apk的jni層通信的接口,真正的為app提供interface的接口。
co/ - callout,bt interface 調用 bta,bta調用co的內容,實際就是承接stack的接口。
include/
src/ - 各種profile的interface,給jni使用,並且調用jni回調
  ---------------- conf/
bt配置文件!
  ---------------- embdrv/
不清楚emb取什麼意思,實際的代碼作用是進行sbc編碼和處理,可能embdrv的意思是針對嵌入式環境的編碼驅動?
---------------- gki/
general kernel interface?不知道什麼意思,不過看代碼是針對os的移植層,包括多任務和timer實現,實際就是為stack代碼提供一個抽象的多任務和時間控制環境,達到可移植的目的!
---------------- hci/
host control interface,實現hci的功能!
---------------- include/
頭文件!
---------------- main/
main意味着入口,包括對各個模組的整合,最終目標的定義,各個模組的初始化等!
---------------- stack/
協議棧代碼,
a2dp/
avct/
avdt/                                                                                                                                        
avrc/
bnep/
btm/
btu/
gatt/
hcic/
hid/
include/
l2cap/
mcap/
pan/
rfcomm/
sdp/
smp/
各種profile!
---------------- test/
測試程序目錄,實際上是調用bt interface的接口,實現回調,測試測試!
---------------- tools/
忽略!
---------------- udrv/
userspace driver?實際的代碼作用是跟a2dp端進行socket通信,處理命令和a2dp數據pcm流!media task調用這裡的接口!實際就是跟audio_a2dp_hw 的audio hal通信!

---------------- utils/
just utils!

沒有留言:

張貼留言