成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

簡析開源鴻蒙藍牙能力

系統(tǒng) OpenHarmony
在開源鴻蒙的源碼里和系統(tǒng)功能相關的部分大多都放在Foundation這個文件夾里,而通訊相關的部分則是在Communication這個文件夾內(nèi)。


??想了解更多關于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎軟件社區(qū)??

??https://ost.51cto.com??

藍牙功能是無線短距的重要能力,在工作、生活中有很多藍牙設備,比如車載藍牙設備,藍牙耳機,藍牙鍵盤。1994年由電信商愛立信發(fā)展出這個技術,最初藍牙的設計是系統(tǒng)創(chuàng)建出一個RS-232數(shù)據(jù)線的無線通信技術替代版,能夠鏈接多個設備并克服同步問題。目前藍牙技術由藍牙技術聯(lián)盟(SIG Special Interest Group)來負責維護其技術標準,IEEE曾經(jīng)將藍牙技術標準化為IEEE 802.15.1,但是這個標準已經(jīng)不再繼續(xù)使用。接下來我們就深入分析下開源鴻蒙的藍牙結構和各層作用及工作內(nèi)容。

概述

在開源鴻蒙的源碼里和系統(tǒng)功能相關的部分大多都放在foundation這個文件夾里,而通訊相關的部分則是在communication這個文件夾內(nèi)。我們本篇要分析的藍牙功能就是在foundation/communication/bluetooth路徑下,具體目錄結構如下:

.
├── bundle.json
├── frameworks //框架層
├── inner
└── js
├── hisysevent.yaml
├── interfaces //接口層
├── inner_api
└── kits
├── LICENSE
├── README.md
├── README_zh.md
├── sa_profile //系統(tǒng)能力配置
├── 1130.xml
└── BUILD.gn
├── services //服務層
├── bluetooth
└── bluetooth_lite
└── test 測試代碼
├── example
├── fuzztest
├── moduletest
└── unittest

架構簡析

  • 根據(jù)目錄結構和內(nèi)部文件及編譯框架總結架構如下:
  • 接口層:對外提供js接口,采用d.ts定義,藍牙文件夾內(nèi)位置interfaces/kits/js具體存放路徑在interface/sdk-js/api/@ohos.bluetooth.d.ts;對內(nèi)提供c接口,可以供softbus,netmanager,audioframework三個子系統(tǒng)調用,藍牙文件夾內(nèi)位置interfaces/inner_api/include。
  • 框架層:分兩個子層,NAPI框架實現(xiàn)層,藍牙文件夾內(nèi)位置foundation/communication/bluetooth/frameworks/js/napi,實現(xiàn)所有js層代碼接口適配并調用innerapi的實現(xiàn);藍牙接口實現(xiàn)層,使用IPC架構同藍牙服務層通信,將從NAPI收到的命令,或者別的子系統(tǒng)收到的命令經(jīng)由IPC架構發(fā)送給服務層,并注冊服務層observer,收聽由服務層上報的事件。
  • 服務層:分三個子層,系統(tǒng)能力層,藍牙文件夾內(nèi)位置foundation/communication/bluetooth/services/bluetooth/server,實現(xiàn)藍牙系統(tǒng)能力服務,接收從框架層經(jīng)由IPC發(fā)送下來的命令,并收聽藍牙service傳上來的消息并回傳給藍牙框架層;藍牙服務層,藍牙文件夾內(nèi)位置foundation/communication/bluetooth/services/bluetooth/service,實現(xiàn)不同藍牙能力的adapter(包括classic_adapter和ble_adapter),通過調用藍牙協(xié)議棧實現(xiàn)藍牙業(yè)務的邏輯能力;藍牙協(xié)議棧,藍牙文件夾內(nèi)位置foundation/communication/bluetooth/services/bluetooth/stack,實現(xiàn)藍牙協(xié)議包解析,打包以及藍牙協(xié)議流程的處理,實現(xiàn)藍牙host,藍牙profile以及藍牙鏈路和hci接口,最后通過使用藍牙硬件驅動收發(fā)藍牙原始數(shù)據(jù)。
  • 硬件驅動:預編譯包,通過dlopen提供hci的底層接口,注冊回調以及發(fā)送數(shù)據(jù)。

功能簡析

簡析開源鴻蒙藍牙能力-開源基礎軟件社區(qū)

  1. NAPI功能
  • HAP應用層通過@ohos.bluetooth.d.ts引用調用藍牙接口,藍牙接口包括bluetooth接口,BLE接口,profile接口。bluetooth接口包括經(jīng)典藍牙接口,BLE接口接口,和profile接口;目前支持的profile有A2dpSourceProfile,HandsFreeAudioGatewayProfile,HidHostProfile和PanProfile。
  • NAPI框架接口均通過DECLARE_NAPI_FUNCTION,js的回調也通過此接口經(jīng)由傳入回調函數(shù)指針實現(xiàn)。
  • NAPI層通過調用藍牙框架層的BluetoothHost實現(xiàn)功能,通過將g_bluetoothHostObserver注冊到框架層內(nèi)部實現(xiàn)來獲得消息回調;同時NAPI層提供g_Observer存儲js層的回調函數(shù),在收到框架層的回調后在g_Observer里查找對應的回調函數(shù)來實現(xiàn)應用通知;此對象因為是map結構體,所以一個應用只能注冊一個并在應用內(nèi)部自己處理。
  1. 藍牙框架功能
  • 藍牙框架提供cadapter接口和藍牙框架具體實現(xiàn)(藍牙NAPI層調用的BluetoothHost即在具體實現(xiàn)層)。
  • cadapter實現(xiàn)c接口,通過BluetoothHost實現(xiàn)功能,其他外部模塊均通過cadapter提供的c接口調用藍牙能力。
  • 藍牙框架內(nèi)部實現(xiàn)層提供接口一一對應cadapter和NAPI接口。BluettoothHost內(nèi)部通過SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager()接口得到samgr,然后通過BLUETOOTH_HOST_SYS_ABILITY_ID標識獲取藍牙服務對象,然后通過藍牙服務對象通過IPC接口調用藍牙服務功能。
  • 藍牙框架內(nèi)部提供RegisterObserver方式,允許其他層應用(比如軟總線層通過調用cadapter接口GapRegisterCallbacks收聽藍牙的回調事件)收聽藍牙回調事件。
  • 藍牙框架因為是動態(tài)庫實現(xiàn),所以如果有多處依賴則會生成多份實例,如NAPI和軟總線都依賴藍牙框架庫,所以在系統(tǒng)里會有兩份實例同時若產(chǎn)生藍牙通知也會有兩個進程同時收到消息。
  1. 藍牙系統(tǒng)能力
  • 藍牙系統(tǒng)能力通過繼承SystemAbility,BluetoothHostStub兩個類實現(xiàn)藍牙服務能力并實現(xiàn)IPC進行通信;IPC通信部分的代碼在藍牙文件夾foundation/communication/bluetooth/services/bluetooth/ipc內(nèi),提供proxy和stub實現(xiàn),即btipc_static.a靜態(tài)庫。
  • 藍牙系統(tǒng)能力可視作藍牙服務進程,提供包括藍牙狀態(tài)機,藍牙adapter(classic,ble),藍牙profile服務實例。
  • 藍牙系統(tǒng)配置在foundation/communication/bluetooth/services/bluetooth/etc/init目錄內(nèi),此部分內(nèi)容會在制作鏡像包時打包到系統(tǒng)文件內(nèi)去;在藍牙服務啟動的時候會讀取藍牙配置(AdapterConfig::GetInstance()->Load(),ProfileConfig::GetInstance()->Load())并確定藍牙的snooplog(協(xié)議棧輸出文件)。
  • 藍牙系統(tǒng)能力內(nèi)部使用Dispatcher模型執(zhí)行任務事務,在Dispatcher對象內(nèi)部它通過線程加任務隊列的方式處理多條任務命令,目前實現(xiàn)方法為但線程依次處理隊列內(nèi)的事務。
  • 藍牙系統(tǒng)能力層通過permission_utils提供應用權限保護能力,服務調用功能時首先調用PermissionUtils::VerifyXXXBluetoothPermission(XXX包括,Use,Discover,Manage,Location),然后調用AuthCenter對應功能,最后調用PermissionHelper對應接口確認權限;在AuthCenter里內(nèi)部定義了g_permissionAlwaysGrant全局變量,可以方便調試時擁有所有權限。
  1. 藍牙協(xié)議棧
  • 藍牙協(xié)議棧通過c接口對藍牙服務層提供接口。
  • 藍牙協(xié)議棧內(nèi)部他提供任務隊列方式處理藍牙命令(GapRunTaskBlockProcess, GapRunTaskUnBlockProcess),分別對于藍牙協(xié)議棧同步接口和異步接口。
  • 藍牙協(xié)議棧內(nèi)部也有層級,對上的是gap,中間是btm,對下的是hci,中間部分和其他藍牙協(xié)議站定義的內(nèi)容一致,如:att,avctp,avdtp,l2cap,rfcomm,sdp,smp。
  • HCI層它通過g_hdiLib加載藍牙驅動庫libbluetooth_hdi_adapter.so,并通過加載藍牙驅動接口(HdiInit,HdiSendHciPacket,HdiClose)實現(xiàn)藍牙數(shù)據(jù)發(fā)送,藍牙數(shù)據(jù)接收(g_hdiCallacks)。

總結

  1. 藍牙服務的結構也是所有開源鴻蒙的結構能力,大致流程均為:NAPI框架,系統(tǒng)服務框架,IPC框架,Observer框架,原生driver框架(其實可以采用HDF框架)。
  2. 目前開源鴻蒙用的藍牙協(xié)議站不是android,bluez,btstack這三種主流藍牙協(xié)議棧,根據(jù)注釋可得其參考《BLUETOOTH SPECIFICATION Version 5.0》實現(xiàn);目前官方最新的協(xié)議棧是v5.3,參考鏈接如下:https://www.bluetooth.com/specifications/specs/core-specification-5-3/。

??想了解更多關于開源的內(nèi)容,請訪問:??

??51CTO 開源基礎軟件社區(qū)??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區(qū)
相關推薦

2010-09-10 09:52:44

開源協(xié)議棧

2022-11-22 15:15:46

Wi-Fi鴻蒙

2022-11-28 15:42:39

分布式軟總線鴻蒙

2022-11-08 15:43:45

開源鴻蒙藍牙協(xié)議棧

2012-05-29 13:43:36

紫光清華掃描儀

2024-06-20 13:00:26

2011-07-12 14:04:58

2023-06-25 12:17:44

2009-06-08 21:25:29

Java聲音技術

2010-09-08 16:25:39

SIP協(xié)議棧

2010-09-13 16:58:13

2009-08-13 15:48:57

C#指針

2022-06-04 16:11:14

勒索軟件加密Nokoyawa

2011-07-22 11:05:15

光纖通信

2010-05-07 12:39:05

SQL Server負載均衡

2011-07-20 10:20:04

2010-06-21 14:05:08

Linux APM

2010-04-12 15:39:37

無線接入技術應用

2013-12-05 10:13:25

iOS圖標

2010-04-19 12:28:57

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久草新视频 | 在线免费观看日本视频 | 欧美区在线 | 欧美1页 | xxxxxx国产 | 91av亚洲| 欧州一区二区三区 | 久久久亚洲一区 | 一级片视频免费 | 在线视频亚洲 | 久久精品亚洲一区二区三区浴池 | 久久久久久99| av天天操 | 久草成人 | 在线看一区二区三区 | 久久精品亚洲精品 | 日韩 国产 在线 | 国产在线精品一区二区 | 日韩在线中文 | 亚洲综合在线视频 | 中文字幕av网站 | 精品国产一区三区 | 91在线视频播放 | 青青久久久| 久久国产精品72免费观看 | 久久成人一区 | 91色视频在线 | 日本福利一区 | 狠狠干天天干 | 可以在线看的黄色网址 | 久久久蜜桃 | 黄色av大片 | 精品亚洲一区二区三区四区五区 | 欧美性网 | 伊人无码高清 | 日韩一区二区在线播放 | 秋霞电影一区二区 | 精品免费国产一区二区三区四区 | 日韩欧美综合 | 欧美大片在线观看 | 在线精品国产 |