第1篇藍牙參數(shù)及安全
第1章藍牙MAC地址2
1.1藍牙BLE設備的MAC地址分類2
1.2公共設備地址(Public Device Address)3
1.3隨機設備地址(Random Device Address)3
1.3.1靜態(tài)設備地址(Static Device Address)4
1.3.2私有設備地址(Private Device Address)4
1.4nRF52832地址配置5
1.4.1MAC地址配置原理5
1.4.2API編程8
1.5本章小結(jié)9
第2章接收信號強度和藍牙發(fā)射功率10
2.1nRF52832藍牙BLE的RSSI獲取10
2.1.1BLE定時器配置11
2.1.2主函數(shù)編寫13
2.1.3應用與調(diào)試13
2.2藍牙BLE的發(fā)射功率設置14
2.2.1發(fā)射功率控制14
2.2.2應用與調(diào)試16
2.3本章小結(jié)17
第3章藍牙靜態(tài)密鑰和動態(tài)密鑰配對18
3.1藍牙配對與綁定的概念18
3.2藍牙的配對19
3.2.1配對信息交換19
3.2.2鏈路認證23
3.2.3密鑰分配23
3.3靜態(tài)密鑰設置24
3.3.1設置靜態(tài)密鑰24
3.3.2配對事件配置26
3.3.3下載與測試27
3.3.4任務安全設置28
3.4隨機密鑰設置31
第4章藍牙綁定配對35
4.1藍牙的綁定35
4.2設備管理與FDS文件添加35
4.2.1設備管理需要使能的選項35
4.2.2Peer綁定功能支持文件的添加35
4.2.3FDS和CRC支持文件的添加38
4.3設備管理代碼的實現(xiàn)39
4.3.1頭文件的添加39
4.3.2配對管理函數(shù)的添加39
4.3.3安全定時器的添加44
4.3.4藍牙事件處理函數(shù)與剔除綁定函數(shù)45
4.3.5藍牙任務安全等級設置48
4.4配對綁定實現(xiàn)原理分析50
4.4.1設備管理初始化50
4.4.2發(fā)起連接51
4.4.3申請安全認證55
4.4.4配對與配對信息綁定57
4.4.5第二次連接64
4.5應用與調(diào)試66
第5章自定義廣播與動態(tài)廣播70
5.1nRF52xx藍牙BLE廣播內(nèi)容參數(shù)70
5.2自定義廣播的實現(xiàn)72
5.2.1廣播包中包含UUID的值72
5.2.2廣播包中包含從機的連接間隔參數(shù)76
5.2.3廣播包中包含制造商的自定義參數(shù)78
5.2.4廣播包中包含藍牙設備地址79
5.3動態(tài)廣播的切換80
5.3.1廣播包中包含服務數(shù)據(jù)80
5.3.2服務數(shù)據(jù)的更新82
5.4本章小結(jié)83
第6章藍牙iBeacon的應用85
6.1藍牙iBeacon的基本介紹85
6.2藍牙iBeacon代碼解析86
6.2.1iBeacon廣播編碼86
6.2.2廣播中添加信息90
6.3藍牙iBeacon的應用92
6.3.1藍牙iBeacon的微信搖一搖92
6.3.2藍牙測距96
6.4本章小結(jié)100
第7章藍牙防丟器詳解101
7.1藍牙防丟器原理分析101
7.2藍牙防丟器程序解析102
7.2.1即時報警服務(從機報警)105
7.2.2鏈接丟失服務113
7.2.3雙向報警之主機報警120
7.3藍牙防丟器調(diào)試123
7.4本章小結(jié)126
第8章DFU升級實現(xiàn)詳解127
8.1DFU的功能介紹127
8.1.1DFU的原理127
8.1.2DFU升級工具132
8.2DFU文件制作步驟133
8.2.1GCC編譯環(huán)境的安裝133
8.2.2MinGW平臺的安裝135
8.2.3microeccmaster源碼的添加140
8.2.4micro_ecc_lib_nrf52.lib文件的生成141
8.2.5python軟件的安裝143
8.2.6pcnrfutil的安裝與密鑰的生成146
8.2.7boot工程和應用工程的hex生成149
8.3程序燒錄與升級152
8.3.1程序的燒錄與升級152
8.3.2hex的燒錄與合并155
8.4串口DFU升級158
8.4.1boot工程的hex生成158
8.4.2應用工程的hex生成159
8.4.3應用工程的ZIP生成159
8.4.4程序的燒錄步驟160
8.5本章小結(jié)161
第9章空中升級DFU程序的移植162
9.1配置文件使能162
9.1.1配置文件使能方法162
9.1.2DFU需要使能的選項162
9.2工程文件的添加166
9.2.1DFU功能支持文件的添加166
9.2.2Peer綁定功能支持文件的添加167
9.2.3FDS和CRC支持文件的添加169
9.3主函數(shù)代碼的添加171
9.3.1頭文件的添加171
9.3.2服務初始化DFU服務的聲明172
9.3.3配對函數(shù)的添加175
9.3.4主函數(shù)的修改和宏的聲明179
第3篇藍牙主機搭建
第10章主機工程的搭建182
10.1樣例工程的搭建182
10.1.1工程文件目錄的分配182
10.1.2工程選項卡的設置183
10.2樣例工程文件的添加190
10.3主函數(shù)的搭建196
第11章藍牙主機掃描詳解198
11.1主機掃描的概念198
11.1.1被動掃描狀態(tài)198
11.1.2主動掃描狀態(tài)198
11.1.3掃描參數(shù)配置命令200
11.2主機掃描器設計201
11.2.1掃描參數(shù)配置202
11.2.2掃描報告事件208
11.3被動掃描和主動掃描實驗213
11.3.1掃描參數(shù)的設置213
11.3.2啟動與關(guān)閉掃描214
11.3.3掃描報告215
第12章主機解析廣播數(shù)據(jù)218
12.1廣播數(shù)據(jù)包格式218
12.2廣播數(shù)據(jù)包內(nèi)容解析219
12.2.1UUID解析219
12.2.2廣播名稱解析222
12.2.3信號強度解析224
12.2.4其他數(shù)據(jù)225
第13章白名單過濾策略226
13.1過濾策略的概念226
13.2白名單的配置227
13.3白名單掃描實驗228
13.3.1白名單的添加228
13.3.2多個白名單的添加230
第14章主機掃描過濾器233
14.1掃描過濾器原理233
14.1.1過濾策略對比233
14.1.2掃描事件派發(fā)233
14.2過濾器的配置過程236
14.3過濾器的編寫239
14.3.1名稱過濾器239
14.3.2設備地址過濾器241
14.3.3UUID過濾器243
14.3.4外觀過濾器245
14.3.5過濾器組合模式247
第15章主機發(fā)起連接250
15.1連接發(fā)起250
15.1.1發(fā)起連接函數(shù)介紹250
15.1.2調(diào)用連接函數(shù)251
15.2連接事件處理254
15.3主機靜態(tài)密鑰的連接256
15.4本章小結(jié)262
第16章主機MTU參數(shù)協(xié)商263
16.1MTU參數(shù)協(xié)商原理263
16.2MTU參數(shù)協(xié)商編程264
16.2.1MTU協(xié)商協(xié)議棧接口264
16.2.2GATT初始化265
16.2.3GATT事件派發(fā)266
16.3本章小結(jié)269
第17章主機連接參數(shù)更新271
17.1連接參數(shù)更新原理271
17.2主機參數(shù)更新編程273
17.2.1連接參數(shù)更新函數(shù)273
17.2.2連接參數(shù)更新應答274
17.3本章小結(jié)276
第18章主機PHY物理層配置278
18.1PHY物理層的概念278
18.2PHY參數(shù)更新原理279
18.2.1PHY參數(shù)更新指令279
18.2.2PHY參數(shù)更新過程280
18.3PHY更新的編程282
18.3.1PHY更新協(xié)議棧接口282
18.3.2PHY更新配置283
18.4本章小結(jié)287
第4篇主機服務及組網(wǎng)
第19章主機服務發(fā)現(xiàn)289
19.1主機對服務的發(fā)現(xiàn)啟動289
19.1.1主服務的發(fā)現(xiàn)289
19.1.2服務特性(特征)的發(fā)現(xiàn)293
19.1.3服務描述符的發(fā)現(xiàn)294
19.2主機客戶端配置文件的搭建297
19.2.1客戶端初始化配置297
19.2.2數(shù)據(jù)發(fā)現(xiàn)初始化及回調(diào)299
19.3本章小結(jié)301
第20章主機藍牙串口數(shù)據(jù)交換302
20.1藍牙串口數(shù)據(jù)交換原理302
20.2從機到主機的數(shù)據(jù)流向303
20.2.1使能從機通知304
20.2.2接收從機數(shù)據(jù)306
20.2.3接收數(shù)據(jù)串口打印308
20.3主機發(fā)送到從機的數(shù)據(jù)流向310
20.3.1串口中斷處理311
20.3.2數(shù)據(jù)寫入從機312
20.4測試與小結(jié)313
第21章藍牙主機1拖8組網(wǎng)詳解315
21.1連接句柄概念315
21.1.1連接句柄的分配315
21.1.2從機設備的識別317
21.2多從機設備的區(qū)分320
21.2.1觀察者函數(shù)的添加320
21.2.2多服務發(fā)現(xiàn)和句柄分配321
21.3主從通信信道的搭建323
21.3.1主機到從機通信信道323
21.3.2從機到主機通信信道325
21.4測試與小結(jié)326
第22章藍牙主從一體327
22.1設計目標的分析327
22.2nRF52832藍牙主從一體工程的搭建327
22.2.1工程服務文件的添加327
22.2.2工程文件路徑的添加329
22.3從機服務和主機服務的共存331
22.3.1協(xié)議棧參數(shù)的配置335
22.3.2服務的使能和RAM空間的設置337
22.4主從一體數(shù)據(jù)傳輸流向339
22.4.1從機設備傳輸數(shù)據(jù)到主從一體設備339
22.4.2主從一體設備傳輸數(shù)據(jù)到從機設備340
22.5下載與調(diào)試342
第23章藍牙MESH組網(wǎng)343
23.1藍牙MESH開發(fā)平臺的搭建343
23.1.1軟硬件平臺的搭建343
23.1.2MESH工程文件的編譯345
23.2MESH網(wǎng)絡的實例測試347
23.2.1MESH網(wǎng)絡角色347
23.2.2MESH實例測試348
23.2.3代理節(jié)點的加入356
參考文獻364