低功耗蓝牙智能硬件开发实战PDF电子书下载
- 电子书积分:13 积分如何计算积分?
- 作 者:谭康喜著
- 出 版 社:北京:人民邮电出版社
- 出版年份:2018
- ISBN:9787115494443
- 页数:398 页
第1章 低功耗蓝牙简介 1
1.1 概述 1
1.2 蓝牙历史版本介绍 1
1.2.1 蓝牙1.1标准和1.2标准 1
1.2.2 蓝牙2.0标准 2
1.2.3 蓝牙2.1+EDR标准 2
1.2.4 蓝牙3.0+HS标准 3
1.2.5 蓝牙4.0标准 3
1.2.6 蓝牙4.1标准 3
1.2.7 蓝牙4.2标准 4
1.2.8 蓝牙5.0标准 5
1.2.9 蓝牙2016年技术蓝图 5
1.2.10 蓝牙版本演进编年史 6
1.3 蓝牙4.0概述 7
1.3.1 什么是蓝牙4.0 7
1.3.2 蓝牙4.0的架构 7
1.3.3 蓝牙4.0协议增加的新特性 7
1.4 蓝牙4.0核心架构分析 8
1.4.1 低功耗蓝牙概述 8
1.4.2 核心系统架构 10
1.4.3 核心构架模块介绍 13
1.5 基于Bluetooth 4.0的新应用 14
1.6 BLE、ZigBee和WiFi的介绍和选择 16
1.6.1 ZigBee技术介绍 16
1.6.2 WiFi技术介绍 17
1.6.3 BLE、ZigBee和WiFi的选择 17
第2章 Android蓝牙系统框架和代码结构 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的代码结构分析 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模块简介 31
3.1 概述 31
3.2 GKI事件的原理 31
3.3 GKI主要数据结构 31
3.4 GKI管理的线程 35
3.5 线程相关主要函数 36
GKI_create_task()函数 36
3.6 消息相关主要函数介绍 39
3.6.1 GKI_wait()函数 39
3.6.2 GKI_send_event()函数 41
3.6.3 GKI_send_msg()函数 42
3.6.4 GKI_read_mbox()函数 43
3.6.5 pthread_cond_wait()函数 43
3.7 动态内存池管理主要函数 44
第4章 Bluedroid的消息传递机制 45
4.1 概述 45
4.2 消息传递相关结构体的定义 46
4.3 消息的动态内存的获取 46
4.4 消息的初始化及发送 49
4.5 消息的读取和处理 51
4.6 消息的完整数据结构剖析 54
第5章 TASK简介 57
5.1 概述 57
5.1.1 TASK之间的消息传递 57
5.1.2 事件的类型 58
5.2 TASK处理消息的流程 58
第6章 Bluedroid状态机简介 66
6.1 Profile状态机介绍 66
6.2 Profile状态机的结构设计 67
6.3 状态机的注册 69
6.4 状态机的驱动力来源 70
6.5 Action函数列表 71
6.6 状态机的状态集合 72
6.7 Event处理函数介绍 74
第7章 HCI接口层简介 76
7.1 概述 76
7.2 接口间的函数调用关系 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函数集合的定义和注册 78
7.4.1 hc_callbacks函数集合的定义 78
7.4.2 hc_callbacks函数集合的注册 79
7.5 bluetoothHCLiblnterface的init()函数介绍 80
7.6 libbt-vendor接口的获取、初始化和使用 81
7.6.1 libbt-vendor的接口函数集合 81
7.6.2 libbt-vendor接口的获取和使用 82
7.6.3 libbt-vendor的初始化 83
7.7 命令和数据的发送与接收 84
7.7.1 命令和数据的发送接口 84
7.7.2 命令处理结果和数据的接收接口 86
7.7.3 H4层接收解析函数的分析 89
7.8 HCI裸数据的分析 95
7.9 本章总结 96
第8章 L2CAP简介 98
8.1 概述 98
8.2 L2CAP的组成部分和功能 99
8.2.1 L2CAP的两个组成部分 99
8.2.2 L2CAP的功能 99
8.3 设备间的操作 100
8.3.1 操作模式 100
8.3.2 L2CAP连接类型 100
8.4 L2CAP数据包 100
8.4.1 L2CAP数据包格式 101
8.4.2 信号包格式 101
8.5 L2CAP的使用 102
8.6 LE数据包格式分析 102
8.7 L2CAP的CSM(Channel State Machine)介绍 104
8.7.1 子状态机介绍 105
8.7.2 OPEN子状态机处理函数 107
8.8 Profile在L2CAP的注册和函数回调机制 111
8.8.1 Profile的注册 111
8.8.2 Profile的注册回调函数集合的回调机制 114
8.9 L2CAP的数据的发送和接收过程 115
8.9.1 数据的发送 115
8.9.2 数据的接收 116
第9章 Bluedroid的初始化流程 122
9.1 概述 122
9.2 协议栈的bluetoothlnterface接口的获取过程 122
9.3 打开蓝牙的接口的调用 123
9.4 第一阶段:前期准备阶段 124
9.5 第二阶段:蓝牙Firmware的加载阶段 127
9.5.1 Firmware加载的总体思想 127
9.5.2 发起Firmware加载的入口 128
9.5.3 Firmware加载的过程 128
9.6 第三阶段:后期初始化阶段 131
9.6.1 底层协议栈的初始化 132
9.6.2 上层协议栈的初始化 136
第10章 蓝牙设备的扫描流程 145
10.1 概述 145
10.2 JNI层扫描入口和协议栈回调机制 145
10.2.1 扫描入口 145
10.2.2 回调机制 147
10.3 蓝牙扫描流程的启动过程 147
10.4 蓝牙设备的Inquiry过程 152
10.5 蓝牙设备的Discover过程 156
10.6 本章总结 158
第11章 SMP简介 160
11.1 什么是SMP 160
11.2 SM在Host侧的位置 161
11.3 SMP的流程介绍 161
11.3.1 SM第1阶段——配对特征的交换 162
11.3.2 第2阶段——根据特征信息配对 165
11.3.3 第3阶段——Key的分发过程 173
11.4 SMP协议包分析 173
11.5 问和答 175
第12章 LE属性协议简介 177
12.1 概述 177
12.2 属性的构成 177
12.3 属性值的介绍 179
12.4 属性数据库的构建过程 180
12.4.1 Gatt Profile分层设计 180
12.4.2 Gatt Service的构建 181
12.4.3 特性的构建 182
12.5 获取属性数据库的过程 183
12.5.1 GATT服务的获取和设置过程 183
12.5.2 服务的查询过程 188
12.5.3 包含服务、特性和特性描述的查询过程 191
第13章 LE属性数据库扫描过程的代码分析 195
13.1 Discover过程的发起 195
13.2 主要服务的Discover过程 197
13.3 Discover过程回调函数的注册过程 210
13.4 包含服务的Discover过程 211
13.5 特性的Discover过程 216
13.6 特性描述的Discover过程 218
13.7 Discover过程的结束 224
13.8 服务的上报过程 226
13.8.1 服务的查询和发起上报过程 226
13.8.2 上报服务的回调函数的注册过程 227
13.8.3 服务的上报过程 230
13.8.4 服务上报过程的日志分析 237
第14章 低功耗蓝牙HID设备的连接过程分析 242
14.1 概述 242
14.2 连接过程的发起 242
14.3 Hid服务的特性、特性描述的读取和存储 248
14.3.1 查询和存储过程 248
14.3.2 查询结果列表和分析 252
14.4 连接过程的完成和输入设备的创建 254
14.4.1 连接过程的完成和创建输入设备 254
14.4.2 Hid按键的上报 257
第15章 Find Me功能的实现 260
15.1 概述 260
15.2 Find Me功能的技术原理 260
15.3 Find Me功能的代码实现 261
15.3.1 Find Me功能的触发函数 261
15.3.2 BluetoothGatt接口的获取 262
15.3.3 Hid设备列表的获取 262
第16章 低功耗蓝牙电池服务和电量的读取 264
16.1 概述 264
16.2 电量读取和电量变化回调函数的注册 264
16.3 电量读取的发起和电量变化特性配置描述的设置 266
16.4 电池电量读取的btsnoop数据解析 267
第17章 LE设备接近配对的实现 269
17.1 概述 269
17.2 RSSI与LQI、接收距离之间的关系 270
17.3 接近配对的简化实现 271
17.4 接近配对代码示例 272
第18章 基于LE广播的无线电子设备的唤醒方法 275
18.1 概述 275
18.2 无线电子设备的唤醒的硬件原理 276
18.3 无线电子设备的唤醒的软件实现 276
18.3.1 无线电子设备关机后唤醒的软件逻辑实现 276
18.3.2 无线电子设备通电后唤醒的软件逻辑实现 278
18.4 传输唤醒白名单列表和启动唤醒功能的命令的定义 278
18.5 唤醒广播包的数据格式 279
18.6 唤醒广播包的处理逻辑 281
18.6.1 主机的处理逻辑 281
18.6.2 设备的广播逻辑 282
18.7 唤醒广播包的数据分析 283
第19章 基于LE广播的系统Recovery的操作实现 284
19.1 概述 284
19.2 小米电视和盒子的系统恢复模式的介绍 284
19.3 基于接收广播按键信息的Recovery系统框架 285
19.4 广播包按键信息的定义 286
19.5 进入Recovery的方法 286
19.6 按键广播包的接收、解析和上报的代码分析 287
第20章 蓝牙HID设备OTA升级的设计和实现 297
20.1 概述 297
20.2 Hid设备OTA升级总体流程设计 297
20.3 Hid设备OTA升级命令定义 298
20.4 Hid设备OTA升级的总体程序设计 305
20.4.1 总体设计 305
20.4.2 Kernel层HidrawgetReport()的实现过程 306
20.4.3 Kernel层HidrawsetReport()的实现过程 307
20.4.4 JNI层Hidraw getReport函数的实现 308
20.4.5 JNI层Hidraw setReport函数的实现 310
20.5 Java层OTA升级程序示例 312
20.6 Hidraw setReport、getReport命令的数据分析 320
第21章 加速度传感器在低功耗蓝牙设备上的应用 325
21.1 概述 325
21.2 蓝牙输入相关子系统、G-Sensor子系统简介 325
21.3 加速度传感器设备的创建过程 326
21.3.1 Bluedroid发起的设备注册过程 326
21.3.2 Kernel中Hid设备的创建过程 327
21.4 加速度传感器的驱动注册过程 330
21.5 Sensor数据从Bluedroid到传感器驱动的传输过程 336
第22章 LE系统快速更新连接参数的设计和实现 340
22.1 概述 340
22.2 更新连接参数的常规方法、快速更新连接参数碰到的困难及解决思路 343
22.2.1 更新连接参数的常规方法介绍 343
22.2.2 快速更新连接参数碰到的困难及解决思路 345
22.3 快速更新连接参数的实现及应用 345
22.3.1 快速更新连接参数的实现方法 345
22.3.2 快速更新连接参数在语音传输中的应用 348
第23章 LE语音编解码和传输 350
23.1 概述 350
23.2 音频采集、处理和蓝牙传输的软硬件过程 351
23.3 ADPCM介绍 353
23.3.1 ADPCM的概念 353
23.3.2 ADPCM编码框图 354
23.4 遥控器语音传输的总体流程 354
23.5 主机端的语音数据的接收处理流程 356
23.5.1 传统语音数据的接收处理流程 356
23.5.2 基于Hidraw接口的语音数据的接收处理流程 356
23.6 基于ADPCM的一种语音压缩编码数据的传输格式定义 357
23.6.1 语音压缩编码数据起始帧的定义 357
23.6.2 语音压缩编码数据桢的第1部分定义 358
23.6.3 语音压缩编码数据桢其他部分定义 358
23.6.4 语音压缩编码数据结束帧的定义 358
23.6.5 完整语音压缩编码数据桢的格式定义 359
23.7 基于ADPCM的一种语音压缩编码数据的接收数据的格式解析 359
23.7.1 语音压缩编码数据起始帧的接收数据格式解析 359
23.7.2 语音压缩编码数据的数据帧的第1帧的第1部分的接收数据格式解析 360
23.7.3 语音压缩编码数据的数据帧第2帧的第1部分的接收数据格式解析 361
23.7.4 语音压缩编码数据结束帧的接收数据格式解析 362
23.8 基于Hidraw的语音压缩编码数据的接收和处理的代码示例 362
23.8.1 /dev/hidrawX设备的寻找过程 362
23.8.2 ADPCM语音压缩编码数据的读取和解码的代码示例 364
第24章 开发工具 372
24.1 概述 372
24.2 Ellisys蓝牙协议分析仪 372
24.3 Ellisys HCI分析 375
24.4 Ellisys频谱分析 376
24.5 Ellisys时序和逻辑分析 377
24.6 Ellisys空中抓包 378
24.7 Ellisys组网分析 380
24.8 Ellisys集成化音频分析 380
24.9 其他 381
第25章 蓝牙系统Bug分析 383
25.1 概述 383
25.2 内存操作越界引发蓝牙重启的一个Bug分析 384
25.2.1 内存操作越界Bug描述 384
25.2.2 内存操作越界引发蓝牙重启的Bug分析过程 385
25.3 系统IO繁忙时写btsnoop日志效率低导致蓝牙通信卡顿的Bug分析 389
25.3.1 写btsnoop日志效率低的Bug描述 389
25.3.2 写btsnoop日志效率低的Bug分析 389
25.3.3 Bug的解决方法 390
25.4 蓝牙数据总线丢失数据导致蓝牙重启 391
25.4.1 导致蓝牙重启的Bug描述 391
25.4.2 导致蓝牙重启的日志分析 391
25.4.3 解决问题的方法 394
25.5 蓝牙核心协议规范关于断连接流程的设计缺陷 395
25.5.1 断连接流程的设计缺陷引发的Bug描述 395
25.5.2 问题背景介绍 395
25.5.3 Bug分析过程 396
25.5.4 解决问题的方法 398
- 《Maya 2018完全实战技术手册》来阳编著 2019
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《Python3从入门到实战》董洪伟 2019
- 《大数据Hadoop 3.X分布式处理实战》吴章勇,杨强 2020
- 《星空摄影后期实战》阿五在路上著 2020
- 《高含硫气藏开发腐蚀控制技术与实践》唐永帆,张强 2018
- 《半小时漫画股票实战法》财经杂质著 2019
- 《深度学习与飞桨PaddlePaddle Fluid实战》于祥 2019
- 《数字插画实战 人像创作30例》王鲁光著 2019
- 《2017国家执业药师资格考试 全考点实战通关必备 中药学综合知识与技能 第3版》国家执业药师资格考试命题研究专家组 2017
- 《南朝学术与文论》袁济喜著 2019
- 《赵进喜临证心悟》赵进喜著 2016
- 《李春喜戏剧导表演文选》李春喜著 2018
- 《大学英语四级 真题详解+全真预测 2016新题型 APP+PC版》王长喜著 2016
- 《秦始皇 日中文对照版》童强,李燕喜著 2012
- 《紧急出动》刘进喜著 1987
- 《粤港澳金融合作的系统研究》陈章喜著 1999
- 《点燃火把的地方》闻雪声,林长喜著 2008
- 《煤炭企业“3A”安全管控模式》赵云佩,安景文,刘贵喜著 2013
- 《新编中国文学批评发展史 第3版》袁济喜著 2014
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《办好人民满意的教育 全国教育满意度调查报告》(中国)中国教育科学研究院 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《人民院士》吴娜著 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《中国人民的心》杨朔著;夕琳编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中华人民共和国成立70周年优秀文学作品精选 短篇小说卷 上 全2册》贺邵俊主编 2019
- 《指向核心素养 北京十一学校名师教学设计 数学 九年级 上 配人教版》周志英总主编 2019
- 《中华人民共和国成立70周年优秀文学作品精选 中篇小说卷 下 全3册》洪治纲主编 2019