低功耗藍(lán)牙智能硬件開(kāi)發(fā)實(shí)戰(zhàn)
定 價(jià):99 元
- 作者:譚康喜
- 出版時(shí)間:2018/12/1
- ISBN:9787115494443
- 出 版 社:人民郵電出版社
- 中圖法分類:TN926
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開(kāi)本:16開(kāi)
低功耗藍(lán)牙技術(shù)憑借著低功耗、低帶寬、低成本、低復(fù)雜性、低時(shí)延、強(qiáng)抗干擾能力、強(qiáng)大的安全性、良好的拓?fù)浣Y(jié)構(gòu)等特點(diǎn),贏得了廣大開(kāi)發(fā)人員和用戶的認(rèn)可,已經(jīng)成為主流的低功耗、近距離無(wú)線通信技術(shù)。
《低功耗藍(lán)牙智能硬件開(kāi)發(fā)實(shí)戰(zhàn)》共分為25章,內(nèi)容分別涵蓋了藍(lán)牙的發(fā)展歷史、低功耗藍(lán)牙的核心系統(tǒng)架構(gòu)、幾種短距離無(wú)線通信技術(shù)的簡(jiǎn)單介紹和選擇方法、Bluedroid協(xié)議棧的架構(gòu)和功能模塊的分析、SMP的3個(gè)階段介紹、LE屬性協(xié)議、LE屬性數(shù)據(jù)庫(kù)的構(gòu)建和查詢方法及查詢代碼分析、BLE Hid設(shè)備的連接過(guò)程、Find me功能的實(shí)現(xiàn)、電池服務(wù)和電量的讀取、LE設(shè)備接近配對(duì)的實(shí)現(xiàn)、基于LE廣播的無(wú)線電子設(shè)備的喚醒方法、基于LE廣播的系統(tǒng)Recovery的操作實(shí)現(xiàn)、藍(lán)牙HID設(shè)備OTA升級(jí)的設(shè)計(jì)和實(shí)現(xiàn)、加速度傳感器在低功耗藍(lán)牙設(shè)備上的應(yīng)用、LE系統(tǒng)快速更新連接參數(shù)的設(shè)計(jì)和實(shí)現(xiàn)、LE語(yǔ)音編解碼和傳輸、開(kāi)發(fā)工具介紹、藍(lán)牙系統(tǒng)Bug分析。
《低功耗藍(lán)牙智能硬件開(kāi)發(fā)實(shí)戰(zhàn)》側(cè)重于實(shí)戰(zhàn),低功耗藍(lán)牙體系結(jié)構(gòu)及協(xié)議棧分析、開(kāi)發(fā)實(shí)例講解和藍(lán)牙調(diào)試3個(gè)方面的內(nèi)容詳細(xì)豐富,適合藍(lán)牙應(yīng)用工程師、藍(lán)牙協(xié)議棧工程師、藍(lán)牙固件工程師閱讀,也適合對(duì)BLE、人工智能、物聯(lián)網(wǎng)和智能硬件感興趣的讀者閱讀。
小米公司聯(lián)合創(chuàng)始人王川等人作序推薦
側(cè)重于工程項(xiàng)目和開(kāi)發(fā)實(shí)戰(zhàn),凸顯實(shí)用性和通用性
全面涵蓋小米公司電視部門低功耗藍(lán)牙技術(shù)的產(chǎn)品化細(xì)節(jié)
低功耗藍(lán)牙是藍(lán)牙技術(shù)聯(lián)盟設(shè)計(jì)和銷售的一種個(gè)人局域網(wǎng)技術(shù),旨在用于醫(yī)療保健、運(yùn)動(dòng)健身、信標(biāo)、安防、家庭娛樂(lè)等領(lǐng)域的新興應(yīng)用。低功耗藍(lán)牙技術(shù)憑借其具備的良好特性(比如低功耗、低成本、抗干擾能力強(qiáng)等)贏得了廣大的開(kāi)發(fā)人員和用戶的認(rèn)可,已經(jīng)成為主流的低功耗、近距離無(wú)線通信技術(shù)。
本書(shū)內(nèi)容源自作者多年的工作經(jīng)驗(yàn)總結(jié),側(cè)重于開(kāi)發(fā)實(shí)戰(zhàn),從低功耗藍(lán)牙體系結(jié)構(gòu)及協(xié)議棧分析、開(kāi)發(fā)實(shí)例講解和藍(lán)牙調(diào)試三個(gè)方面對(duì)低功耗藍(lán)牙進(jìn)行了全方位的介紹。本書(shū)適合藍(lán)牙應(yīng)用工程師、藍(lán)牙協(xié)議棧工程師、藍(lán)牙固件開(kāi)發(fā)工程師閱讀,也適合對(duì)物聯(lián)網(wǎng)和智能硬件感興趣的讀者閱讀。
系統(tǒng)篇
低功耗藍(lán)牙簡(jiǎn)介
Android藍(lán)牙系統(tǒng)框架和代碼結(jié)構(gòu)
GKI模塊簡(jiǎn)介
Bluedroid的消息傳遞機(jī)制
TASK簡(jiǎn)介
Bluedroid狀態(tài)機(jī)簡(jiǎn)介
HCI接口層簡(jiǎn)介
L2CAP簡(jiǎn)介
Bluedroid的初始化流程
藍(lán)牙設(shè)備的掃描流程
SMP簡(jiǎn)介
LE屬性協(xié)議簡(jiǎn)介
LE屬性數(shù)據(jù)庫(kù)掃描過(guò)程的代碼分析
低功耗藍(lán)牙HID設(shè)備的連接分析過(guò)程
開(kāi)發(fā)篇
Find Me功能的實(shí)現(xiàn)
LE設(shè)備接近配對(duì)的實(shí)現(xiàn)
基于LE廣播的無(wú)線電子設(shè)備的喚醒方法
基于LE廣播的系統(tǒng)Recovery的操作實(shí)現(xiàn)
藍(lán)牙HID設(shè)備OTA升級(jí)的設(shè)計(jì)和實(shí)現(xiàn)
加速度傳感器在低功耗藍(lán)牙設(shè)備上的應(yīng)用
LE系統(tǒng)快速更新連接參數(shù)的設(shè)計(jì)和實(shí)現(xiàn)
LE語(yǔ)音編解碼和傳輸
調(diào)試篇
開(kāi)發(fā)工具
藍(lán)牙系統(tǒng)Bug分析
譚康喜,小米公司高 級(jí)軟件工程師,從事Android應(yīng)用、Linux驅(qū)動(dòng)、藍(lán)牙、WiFi和藍(lán)牙外設(shè)的開(kāi)發(fā)工作,目前的主要工作方向是低功耗藍(lán)牙;是國(guó)內(nèi)較早從事低功耗藍(lán)牙研究和開(kāi)發(fā)的一批人之一;申請(qǐng)國(guó)內(nèi)外發(fā)明專利120余項(xiàng),目前國(guó)內(nèi)已授權(quán)12項(xiàng),美國(guó)已授權(quán)1項(xiàng)。
第 1章 低功耗藍(lán)牙簡(jiǎn)介1
1.1 概述 1
1.2 藍(lán)牙歷史版本介紹 1
1.2.1 藍(lán)牙1.1標(biāo)準(zhǔn)和1.2標(biāo)準(zhǔn) 1
1.2.2 藍(lán)牙2.0標(biāo)準(zhǔn) 2
1.2.3 藍(lán)牙2.1 EDR標(biāo)準(zhǔn) 2
1.2.4 藍(lán)牙3.0 HS標(biāo)準(zhǔn) 3
1.2.5 藍(lán)牙4.0標(biāo)準(zhǔn) 3
1.2.6 藍(lán)牙4.1標(biāo)準(zhǔn) 3
1.2.7 藍(lán)牙4.2標(biāo)準(zhǔn) 4
1.2.8 藍(lán)牙5.0標(biāo)準(zhǔn) 5
1.2.9 藍(lán)牙2016年技術(shù)藍(lán)圖 5
1.2.10 藍(lán)牙版本演進(jìn)編年史 6
1.3 藍(lán)牙4.0概述 7
1.3.1 什么是藍(lán)牙4.0 7
1.3.2 藍(lán)牙4.0的架構(gòu) 7
1.3.3 藍(lán)牙4.0協(xié)議增加的新特性 7
1.4 藍(lán)牙4.0核心架構(gòu)分析 8
1.4.1 低功耗藍(lán)牙概述 8
1.4.2 核心系統(tǒng)架構(gòu) 10
1.4.3 核心構(gòu)架模塊介紹 13
1.5 基于Bluetooth 4.0的新應(yīng)用 14
1.6 BLE、ZigBee和WiFi的介紹和選擇 16
1.6.1 ZigBee技術(shù)介紹 16
1.6.2 WiFi技術(shù)介紹 17
1.6.3 BLE、ZigBee和WiFi的選擇 17
第 2章 Android藍(lán)牙系統(tǒng)框架和代碼結(jié)構(gòu) 19
2.1 概述 19
2.2 Application Framework 20
2.3 Bluetooth Process 21
2.4 Bluetooth JNI 21
2.5 Bluetooth HAL 21
2.6 Bluedroid Stack 21
2.7 Bluedroid的代碼結(jié)構(gòu)分析 22
2.7.1 MAIN 22
2.7.2 BTA 23
2.7.3 BTIF 23
2.7.4 HCI 27
2.7.5 STACK 29
第3章 GKI模塊簡(jiǎn)介 31
3.1 概述 31
3.2 GKI事件的原理 31
3.3 GKI主要數(shù)據(jù)結(jié)構(gòu) 31
3.4 GKI管理的線程 35
3.5 線程相關(guān)主要函數(shù) 36
3.6 消息相關(guān)主要函數(shù)介紹 39
3.6.1 GKI_wait()函數(shù) 39
3.6.2 GKI_send_event()函數(shù) 41
3.6.3 GKI_send_msg()函數(shù) 42
3.6.4 GKI_read_mbox()函數(shù) 43
3.6.5 pthread_cond_wait()函數(shù) 43
3.7 動(dòng)態(tài)內(nèi)存池管理主要函數(shù) 44
第4章 Bluedroid的消息傳遞機(jī)制 45
4.1 概述 45
4.2 消息傳遞相關(guān)結(jié)構(gòu)體的定義 46
4.3 消息的動(dòng)態(tài)內(nèi)存的獲取 46
4.4 消息的初始化及發(fā)送 49
4.5 消息的讀取和處理 51
4.6 消息的完整數(shù)據(jù)結(jié)構(gòu)剖析 54
第5章 TASK簡(jiǎn)介 57
5.1 概述 57
5.1.1 TASK之間的消息傳遞 57
5.1.2 事件的類型 58
5.2 TASK處理消息的流程 58
第6章 Bluedroid狀態(tài)機(jī)簡(jiǎn)介 66
6.1 Profile狀態(tài)機(jī)介紹 66
6.2 Profile狀態(tài)機(jī)的結(jié)構(gòu)設(shè)計(jì) 67
6.3 狀態(tài)機(jī)的注冊(cè) 69
6.4 狀態(tài)機(jī)的驅(qū)動(dòng)力來(lái)源 70
6.5 Action函數(shù)列表 71
6.6 狀態(tài)機(jī)的狀態(tài)集合 72
6.7 Event處理函數(shù)介紹 74
第7章 HCI接口層簡(jiǎn)介 76
7.1 概述 76
7.2 接口間的函數(shù)調(diào)用關(guān)系 76
7.3 bt_hc_if接口的定義和獲取 77
7.3.1 bt_hc_if接口定義 77
7.3.2 bt_hc_if接口的獲取 78
7.4 hc_callbacks函數(shù)集合的定義和注冊(cè) 78
7.4.1 hc_callbacks函數(shù)集合的定義 78
7.4.2 hc_callbacks函數(shù)集合的注冊(cè) 79
7.5 bluetoothHCLibInterface的init()函數(shù)介紹 80
7.6 libbt-vendor接口的獲取、初始化和使用 81
7.6.1 libbt-vendor的接口函數(shù)集合 81
7.6.2 libbt-vendor接口的獲取和使用 82
7.6.3 libbt-vendor的初始化 83
7.7 命令和數(shù)據(jù)的發(fā)送與接收 84
7.7.1 命令和數(shù)據(jù)的發(fā)送接口 84
7.7.2 命令處理結(jié)果和數(shù)據(jù)的接收接口 86
7.7.3 H4層接收解析函數(shù)的分析 89
7.8 HCI裸數(shù)據(jù)的分析 95
7.9 本章總結(jié) 96
第8章 L2CAP簡(jiǎn)介 98
8.1 概述 98
8.2 L2CAP的組成部分和功能 99
8.2.1 L2CAP的兩個(gè)組成部分 99
8.2.2 L2CAP的功能 99
8.3 設(shè)備間的操作 100
8.3.1 操作模式 100
8.3.2 L2CAP連接類型 100
8.4 L2CAP數(shù)據(jù)包 100
8.4.1 L2CAP數(shù)據(jù)包格式 101
8.4.2 信號(hào)包格式 101
8.5 L2CAP的使用 102
8.6 LE數(shù)據(jù)包格式分析 102
8.7 L2CAP的CSM(Channel State Machine)介紹 104
8.7.1 子狀態(tài)機(jī)介紹 105
8.7.2 OPEN子狀態(tài)機(jī)處理函數(shù) 107
8.8 Profile在L2CAP的注冊(cè)和函數(shù)回調(diào)機(jī)制 111
8.8.1 Profile的注冊(cè) 111
8.8.2 Profile的注冊(cè)回調(diào)函數(shù)集合的回調(diào)機(jī)制 114
8.9 L2CAP的數(shù)據(jù)的發(fā)送和接收過(guò)程 115
8.9.1 數(shù)據(jù)的發(fā)送 115
8.9.2 數(shù)據(jù)的接收 116
第9章 Bluedroid的初始化流程 122
9.1 概述 122
9.2 協(xié)議棧的bluetoothInterface接口的獲取過(guò)程 122
9.3 打開(kāi)藍(lán)牙的接口的調(diào)用 123
9.4 第 一階段:前期準(zhǔn)備階段 124
9.5 第二階段:藍(lán)牙Firmware的加載階段 127
9.5.1 Firmware加載的總體思想 127
9.5.2 發(fā)起Firmware加載的入口 128
9.5.3 Firmware加載的過(guò)程 128
9.6 第三階段:后期初始化階段 131
9.6.1 底層協(xié)議棧的初始化 132
9.6.2 上層協(xié)議棧的初始化 136
第 10章 藍(lán)牙設(shè)備的掃描流程 145
10.1 概述 145
10.2 JNI層掃描入口和協(xié)議棧回調(diào)機(jī)制 145
10.2.1 掃描入口 145
10.2.2 回調(diào)機(jī)制 147
10.3 藍(lán)牙掃描流程的啟動(dòng)過(guò)程 147
10.4 藍(lán)牙設(shè)備的Inquiry過(guò)程 152
10.5 藍(lán)牙設(shè)備的Discover過(guò)程 156
10.6 本章總結(jié) 158
第 11章 SMP簡(jiǎn)介 160
11.1 什么是SMP 160
11.2 SM在Host側(cè)的位置 161
11.3 SMP的流程介紹 161
11.3.1 SM第 1階段配對(duì)特征的交換 162
11.3.2 第 2階段根據(jù)特征信息配對(duì) 165
11.3.3 第3階段Key的分發(fā)過(guò)程 173
11.4 SMP協(xié)議包分析 173
11.5 問(wèn)和答 175
第 12章 LE屬性協(xié)議簡(jiǎn)介 177
12.1 概述 177
12.2 屬性的構(gòu)成 177
12.3 屬性值的介紹 179
12.4 屬性數(shù)據(jù)庫(kù)的構(gòu)建過(guò)程 180
12.4.1 Gatt Profile分層設(shè)計(jì) 180
12.4.2 Gatt Service的構(gòu)建 181
12.4.3 特性的構(gòu)建 182
12.5 獲取屬性數(shù)據(jù)庫(kù)的過(guò)程 183
12.5.1 GATT服務(wù)的獲取和設(shè)置過(guò)程 183
12.5.2 服務(wù)的查詢過(guò)程 188
12.5.3 包含服務(wù)、特性和特性描述的查詢過(guò)程 191
第 13章 LE屬性數(shù)據(jù)庫(kù)掃描過(guò)程的代碼分析 195
13.1 Discover過(guò)程的發(fā)起 195
13.2 主要服務(wù)的Discover過(guò)程 197
13.3 Discover過(guò)程回調(diào)函數(shù)的注冊(cè)過(guò)程 210
13.4 包含服務(wù)的Discover過(guò)程 211
13.5 特性的Discover過(guò)程 216
13.6 特性描述的Discover過(guò)程 218
13.7 Discover過(guò)程的結(jié)束 224
13.8 服務(wù)的上報(bào)過(guò)程 226
13.8.1 服務(wù)的查詢和發(fā)起上報(bào)過(guò)程 226
13.8.2 上報(bào)服務(wù)的回調(diào)函數(shù)的注冊(cè)過(guò)程 227
13.8.3 服務(wù)的上報(bào)過(guò)程 230
13.8.4 服務(wù)上報(bào)過(guò)程的日志分析 237
第 14章 低功耗藍(lán)牙HID設(shè)備的連接過(guò)程分析 242
14.1 概述 242
14.2 連接過(guò)程的發(fā)起 242
14.3 Hid服務(wù)的特性、特性描述的讀取和存儲(chǔ) 248
14.3.1 查詢和存儲(chǔ)過(guò)程 248
14.3.2 查詢結(jié)果列表和分析 252
14.4 連接過(guò)程的完成和輸入設(shè)備的創(chuàng)建 254
14.4.1 連接過(guò)程的完成和創(chuàng)建輸入設(shè)備 254
14.4.2 Hid按鍵的上報(bào) 257
第 15章 Find Me功能的實(shí)現(xiàn) 260
15.1 概述 260
15.2 Find Me功能的技術(shù)原理 260
15.3 Find Me功能的代碼實(shí)現(xiàn) 261
15.3.1 Find Me功能的觸發(fā)函數(shù) 261
15.3.2 BluetoothGatt接口的獲取 262
15.3.3 Hid設(shè)備列表的獲取 262
第 16章 低功耗藍(lán)牙電池服務(wù)和電量的讀取 264
16.1 概述 264
16.2 電量讀取和電量變化回調(diào)函數(shù)的注冊(cè) 264
16.3 電量讀取的發(fā)起和電量變化特性配置描述的設(shè)置 266
16.4 電池電量讀取的btsnoop數(shù)據(jù)解析 267
第 17章 LE設(shè)備接近配對(duì)的實(shí)現(xiàn) 269
17.1 概述 269
17.2 RSSI與LQI、接收距離之間的關(guān)系 270
17.3 接近配對(duì)的簡(jiǎn)化實(shí)現(xiàn) 271
17.4 接近配對(duì)代碼示例 272
第 18章 基于LE廣播的無(wú)線電子設(shè)備的喚醒方法 275
18.1 概述 275
18.2 無(wú)線電子設(shè)備的喚醒的硬件原理 276
18.3 無(wú)線電子設(shè)備的喚醒的軟件實(shí)現(xiàn) 276
18.3.1 無(wú)線電子設(shè)備關(guān)機(jī)后喚醒的軟件邏輯實(shí)現(xiàn) 276
18.3.2 無(wú)線電子設(shè)備通電后喚醒的軟件邏輯實(shí)現(xiàn) 278
18.4 傳輸喚醒白名單列表和啟動(dòng)喚醒功能的命令的定義 278
18.5 喚醒廣播包的數(shù)據(jù)格式 279
18.6 喚醒廣播包的處理邏輯 281
18.6.1 主機(jī)的處理邏輯 281
18.6.2 設(shè)備的廣播邏輯 282
18.7 喚醒廣播包的數(shù)據(jù)分析 283
第 19章 基于LE廣播的系統(tǒng)Recovery的操作實(shí)現(xiàn) 284
19.1 概述 284
19.2 小米電視和盒子的系統(tǒng)恢復(fù)模式的介紹 284
19.3 基于接收廣播按鍵信息的Recovery系統(tǒng)框架 285
19.4 廣播包按鍵信息的定義 286
19.5 進(jìn)入Recovery的方法 286
19.6 按鍵廣播包的接收、解析和上報(bào)的代碼分析 287
第 20章 藍(lán)牙HID設(shè)備OTA升級(jí)的設(shè)計(jì)和實(shí)現(xiàn) 297
20.1 概述 297
20.2 Hid設(shè)備OTA升級(jí)總體流程設(shè)計(jì) 297
20.3 Hid設(shè)備OTA升級(jí)命令定義 298
20.4 Hid設(shè)備OTA升級(jí)的總體程序設(shè)計(jì) 305
20.4.1 總體設(shè)計(jì) 305
20.4.2 Kernel層Hidraw getReport()的實(shí)現(xiàn)過(guò)程 306
20.4.3 Kernel層Hidraw setReport()的實(shí)現(xiàn)過(guò)程 307
20.4.4 JNI層Hidraw getReport函數(shù)的實(shí)現(xiàn) 308
20.4.5 JNI層Hidraw setReport函數(shù)的實(shí)現(xiàn) 310
20.5 Java層OTA升級(jí)程序示例 312
20.6 Hidraw setReport、getReport命令的數(shù)據(jù)分析 320
第 21章 加速度傳感器在低功耗藍(lán)牙設(shè)備上的應(yīng)用 325
21.1 概述 325
21.2 藍(lán)牙輸入相關(guān)子系統(tǒng)、G-Sensor子系統(tǒng)簡(jiǎn)介 325
21.3 加速度傳感器設(shè)備的創(chuàng)建過(guò)程 326
21.3.1 Bluedroid發(fā)起的設(shè)備注冊(cè)過(guò)程 326
21.3.2 Kernel中Hid設(shè)備的創(chuàng)建過(guò)程 327
21.4 加速度傳感器的驅(qū)動(dòng)注冊(cè)過(guò)程 330
21.5 Sensor數(shù)據(jù)從Bluedroid到傳感器驅(qū)動(dòng)的傳輸過(guò)程 336
第 22章 LE系統(tǒng)快速更新連接參數(shù)的設(shè)計(jì)和實(shí)現(xiàn) 340
22.1 概述 340
22.2 更新連接參數(shù)的常規(guī)方法、快速更新連接參數(shù)碰到的困難及解決思路 343
22.2.1 更新連接參數(shù)的常規(guī)方法介紹 343
22.2.2 快速更新連接參數(shù)碰到的困難及解決思路 345
22.3 快速更新連接參數(shù)的實(shí)現(xiàn)及應(yīng)用 345
22.3.1 快速更新連接參數(shù)的實(shí)現(xiàn)方法 345
22.3.2 快速更新連接參數(shù)在語(yǔ)音傳輸中的應(yīng)用 348
第 23章 LE語(yǔ)音編解碼和傳輸 350
23.1 概述 350
23.2 音頻采集、處理和藍(lán)牙傳輸?shù)能浻布^(guò)程 351
23.3 ADPCM介紹 353
23.3.1 ADPCM的概念 353
23.3.2 ADPCM編碼框圖 354
23.4 遙控器語(yǔ)音傳輸?shù)目傮w流程 354
23.5 主機(jī)端的語(yǔ)音數(shù)據(jù)的接收處理流程 356
23.5.1 傳統(tǒng)語(yǔ)音數(shù)據(jù)的接收處理流程 356
23.5.2 基于Hidraw接口的語(yǔ)音數(shù)據(jù)的接收處理流程 356
23.6 基于ADPCM的一種語(yǔ)音壓縮編碼數(shù)據(jù)的傳輸格式定義 357
23.6.1 語(yǔ)音壓縮編碼數(shù)據(jù)起始幀的定義 357
23.6.2 語(yǔ)音壓縮編碼數(shù)據(jù)楨的第 1部分定義 358
23.6.3 語(yǔ)音壓縮編碼數(shù)據(jù)楨其他部分定義 358
23.6.4 語(yǔ)音壓縮編碼數(shù)據(jù)結(jié)束幀的定義 358
23.6.5 完整語(yǔ)音壓縮編碼數(shù)據(jù)楨的格式定義 359
23.7 基于ADPCM的一種語(yǔ)音壓縮編碼數(shù)據(jù)的接收數(shù)據(jù)的格式解析 359
23.7.1 語(yǔ)音壓縮編碼數(shù)據(jù)起始幀的接收數(shù)據(jù)格式解析 359
23.7.2 語(yǔ)音壓縮編碼數(shù)據(jù)的數(shù)據(jù)幀的第 1幀的第 1部分的接收數(shù)據(jù)格式解析 360
23.7.3 語(yǔ)音壓縮編碼數(shù)據(jù)的數(shù)據(jù)幀第 2幀的第 1部分的接收數(shù)據(jù)格式解析 361
23.7.4 語(yǔ)音壓縮編碼數(shù)據(jù)結(jié)束幀的接收數(shù)據(jù)格式解析 362
23.8 基于Hidraw的語(yǔ)音壓縮編碼數(shù)據(jù)的接收和處理的代碼示例 362
23.8.1 /dev/hidrawX設(shè)備的尋找過(guò)程 362
23.8.2 ADPCM語(yǔ)音壓縮編碼數(shù)據(jù)的讀取和解碼的代碼示例 364
第 24章 開(kāi)發(fā)工具 372
24.1 概述 372
24.2 Ellisys藍(lán)牙協(xié)議分析儀 372
24.3 Ellisys HCI分析 375
24.4 Ellisys頻譜分析 376
24.5 Ellisys時(shí)序和邏輯分析 377
24.6 Ellisys空中抓包 378
24.7 Ellisys組網(wǎng)分析 380
24.8 Ellisys集成化音頻分析 380
24.9 其他 381
第 25章 藍(lán)牙系統(tǒng)Bug分析 383
25.1 概述 383
25.2 內(nèi)存操作越界引發(fā)藍(lán)牙重啟的一個(gè)Bug分析 384
25.2.1 內(nèi)存操作越界Bug描述 384
25.2.2 內(nèi)存操作越界引發(fā)藍(lán)牙重啟的Bug分析過(guò)程 385
25.3 系統(tǒng)IO繁忙時(shí)寫btsnoop日志效率低導(dǎo)致藍(lán)牙通信卡頓的Bug分析 389
25.3.1 寫btsnoop日志效率低的Bug描述 389
25.3.2 寫btsnoop日志效率低的Bug分析 389
25.3.3 Bug的解決方法 390
25.4 藍(lán)牙數(shù)據(jù)總線丟失數(shù)據(jù)導(dǎo)致藍(lán)牙重啟 391
25.4.1 導(dǎo)致藍(lán)牙重啟的Bug描述 391
25.4.2 導(dǎo)致藍(lán)牙重啟的日志分析 391
25.4.3 解決問(wèn)題的方法 394
25.5 藍(lán)牙核心協(xié)議規(guī)范關(guān)于斷連接流程的設(shè)計(jì)缺陷 39
25.5.1 斷連接流程的設(shè)計(jì)缺陷引發(fā)的Bug描述 395
25.5.2 問(wèn)題背景介紹 395
25.5.3 Bug分析過(guò)程 396
25.5.4 解決問(wèn)題的方法 398