小米公司联合创始人王川等人作序推荐 侧重于工程项目和发实战,凸显实用性和通用性 全面涵盖小米公司电视部门低功耗蓝牙技术的产品化细节 低功耗蓝牙是蓝牙技术联盟设计和销售的一种个人局域网技术,旨在用于医疗保健、运动健身、信标、安防、家庭娱乐等领域的新兴应用。低功耗蓝牙技术凭借其具备的良好特性(比如低功耗、低成本、抗干扰能力强等)赢得了广大的发人员和用户的认可,已经成为主流的低功耗、近距离无线通信技术。
售 价:¥
纸质售价:¥94.10购买纸书
温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印
为你推荐
版权
内容提要
推荐序1
推荐序2
推荐序3
推荐序4
作者简介
致谢
前言
第1章 低功耗蓝牙简介
1.1 概述
1.2 蓝牙历史版本介绍
1.2.1 蓝牙1.1标准和1.2标准
1.2.2 蓝牙2.0标准
1.2.3 蓝牙2.1+EDR标准
1.2.4 蓝牙3.0+HS标准
1.2.5 蓝牙4.0标准
1.2.6 蓝牙4.1标准
1.2.7 蓝牙4.2标准
1.2.8 蓝牙5.0标准
1.2.9 蓝牙2016年技术蓝图
1.2.10 蓝牙版本演进编年史
1.3 蓝牙4.0概述
1.3.1 什么是蓝牙4.0
1.3.2 蓝牙4.0的架构
1.3.3 蓝牙4.0协议增加的新特性
1.4 蓝牙4.0核心架构分析
1.4.1 低功耗蓝牙概述
1.4.2 核心系统架构
1.4.3 核心构架模块介绍
1.5 基于Bluetooth 4.0的新应用
1.6 BLE、ZigBee和WiFi的介绍和选择
1.6.1 ZigBee技术介绍
1.6.2 WiFi技术介绍
1.6.3 BLE、ZigBee和WiFi的选择
第2章 Android蓝牙系统框架和代码结构
2.1 概述
2.2 Application Framework
2.3 Bluetooth Process
2.4 Bluetooth JNI
2.5 Bluetooth HAL
2.6 Bluedroid Stack
2.7 Bluedroid的代码结构分析
2.7.1 MAIN
2.7.2 BTA
2.7.3 BTIF
2.7.4 HCI
2.7.5 STACK
第3章 GKI模块简介
3.1 概述
3.2 GKI事件的原理
3.3 GKI主要数据结构
3.4 GKI管理的线程
3.5 线程相关主要函数
GKI_create_task()函数
3.6 消息相关主要函数介绍
3.6.1 GKI_wait()函数
3.6.2 GKI_send_event()函数
3.6.3 GKI_send_msg()函数
3.6.4 GKI_read_mbox()函数
3.6.5 pthread_cond_wait()函数
3.7 动态内存池管理主要函数
第4章 Bluedroid的消息传递机制
4.1 概述
4.2 消息传递相关结构体的定义
4.3 消息的动态内存的获取
4.4 消息的初始化及发送
4.5 消息的读取和处理
4.6 消息的完整数据结构剖析
第5章 TASK简介
5.1 概述
5.1.1 TASK之间的消息传递
5.1.2 事件的类型
5.2 TASK处理消息的流程
第6章 Bluedroid状态机简介
6.1 Profile状态机介绍
6.2 Profile状态机的结构设计
6.3 状态机的注册
6.4 状态机的驱动力来源
6.5 Action函数列表
6.6 状态机的状态集合
6.7 Event处理函数介绍
第7章 HCI接口层简介
7.1 概述
7.2 接口间的函数调用关系
7.3 bt_hc_if接口的定义和获取
7.3.1 bt_hc_if接口定义
7.3.2 bt_hc_if接口的获取
7.4 hc_callbacks函数集合的定义和注册
7.4.1 hc_callbacks函数集合的定义
7.4.2 hc_callbacks函数集合的注册
7.5 bluetoothHCLibInterface的init()函数介绍
7.6 libbt-vendor接口的获取、初始化和使用
7.6.1 libbt-vendor的接口函数集合
7.6.2 libbt-vendor接口的获取和使用
7.6.3 libbt-vendor的初始化
7.7 命令和数据的发送与接收
7.7.1 命令和数据的发送接口
7.7.2 命令处理结果和数据的接收接口
7.7.3 H4层接收解析函数的分析
7.8 HCI裸数据的分析
7.9 本章总结
第8章 L2CAP简介
8.1 概述
8.2 L2CAP的组成部分和功能
8.2.1 L2CAP的两个组成部分
8.2.2 L2CAP的功能
8.3 设备间的操作
8.3.1 操作模式
8.3.2 L2CAP连接类型
8.4 L2CAP数据包
8.4.1 L2CAP数据包格式
8.4.2 信号包格式
8.5 L2CAP的使用
8.6 LE数据包格式分析
8.7 L2CAP的CSM(Channel State Machine)介绍
8.7.1 子状态机介绍
8.7.2 OPEN子状态机处理函数
8.8 Profile在L2CAP的注册和函数回调机制
8.8.1 Profile的注册
8.8.2 Profile的注册回调函数集合的回调机制
8.9 L2CAP的数据的发送和接收过程
8.9.1 数据的发送
8.9.2 数据的接收
第9章 Bluedroid的初始化流程
9.1 概述
9.2 协议栈的bluetoothInterface接口的获取过程
9.3 打开蓝牙接口的调用
9.4 第一阶段:前期准备阶段
9.5 第二阶段:蓝牙Firmware的加载阶段
9.5.1 Firmware加载的总体思想
9.5.2 发起Firmware加载的入口
9.5.3 Firmware加载的过程
9.6 第三阶段:后期初始化阶段
9.6.1 底层协议栈的初始化
9.6.2 上层协议栈的初始化
第10章 蓝牙设备的扫描流程
10.1 概述
10.2 JNI层扫描入口和协议栈回调机制
10.2.1 扫描入口
10.2.2 回调机制
10.3 蓝牙扫描流程的启动过程
10.4 蓝牙设备的Inquiry过程
10.5 蓝牙设备的Discover过程
10.6 本章总结
第11章 SMP简介
11.1 什么是SMP
11.2 SM在Host侧的位置
11.3 SMP的流程介绍
11.3.1 SM第1阶段——配对特征的交换
11.3.2 第2阶段——根据特征信息配对
11.3.3 第3阶段——Key的分发过程
11.4 SMP协议包分析
11.5 问和答
第12章 LE属性协议简介
12.1 概述
12.2 属性的构成
12.3 属性值的介绍
12.4 属性数据库的构建过程
12.4.1 Gatt Profile分层设计
12.4.2 Gatt Service的构建
12.4.3 特性的构建
12.5 获取属性数据库的过程
12.5.1 GATT服务的获取和设置过程
12.5.2 服务的查询过程
12.5.3 包含服务、特性和特性描述的查询过程
第13章 LE属性数据库扫描过程的代码分析
13.1 Discover过程的发起
13.2 主要服务的Discover过程
13.3 Discover过程回调函数的注册过程
13.4 包含服务的Discover过程
13.5 特性的Discover过程
13.6 特性描述的Discover过程
13.7 Discover过程的结束
13.8 服务的上报过程
13.8.1 服务的查询和发起上报过程
13.8.2 上报服务的回调函数的注册过程
13.8.3 服务的上报过程
13.8.4 服务上报过程的日志分析
第14章 低功耗蓝牙 HID 设备的连接过程分析
14.1 概述
14.2 连接过程的发起
14.3 Hid服务的特性、特性描述的读取和存储
14.3.1 查询和存储过程
14.3.2 查询结果列表和分析
14.4 连接过程的完成和输入设备的创建
14.4.1 连接过程的完成和创建输入设备
14.4.2 Hid按键的上报
第15章 Find Me功能的实现
15.1 概述
15.2 Find Me功能的技术原理
15.3 Find Me功能的代码实现
15.3.1 Find Me功能的触发函数
15.3.2 BluetoothGatt接口的获取
15.3.3 Hid设备列表的获取
第16章 低功耗蓝牙电池服务和电量的读取
16.1 概述
16.2 电量读取和电量变化回调函数的注册
16.3 电量读取的发起和电量变化特性配置描述的设置
16.4 电池电量读取的btsnoop数据解析
第17章 LE设备接近配对的实现
17.1 概述
17.2 RSSI与LQI、接收距离之间的关系
17.3 接近配对的简化实现
17.4 接近配对代码示例
第18章 基于LE广播的无线电子设备的唤醒方法
18.1 概述
18.2 无线电子设备的唤醒的硬件原理
18.3 无线电子设备的唤醒的软件实现
18.3.1 无线电子设备关机后唤醒的软件逻辑实现
18.3.2 无线电子设备通电后唤醒的软件逻辑实现
18.4 传输唤醒白名单列表和启动唤醒功能的命令的定义
18.5 唤醒广播包的数据格式
18.6 唤醒广播包的处理逻辑
18.6.1 主机的处理逻辑
18.6.2 设备的广播逻辑
18.7 唤醒广播包的数据分析
第19章 基于LE广播的系统Recovery的操作实现
19.1 概述
19.2 小米电视和盒子的系统恢复模式的介绍
19.3 基于接收广播按键信息的Recovery系统框架
19.4 广播包按键信息的定义
19.5 进入Recovery的方法
19.6 按键广播包的接收、解析和上报的代码分析
第20章 蓝牙HID设备OTA升级的设计和实现
20.1 概述
20.2 Hid设备OTA升级总体流程设计
20.3 Hid设备OTA升级命令定义
20.4 Hid设备OTA升级的总体程序设计
20.4.1 总体设计
20.4.2 Kernel层Hidraw getReport()的实现过程
20.4.3 Kernel层Hidraw setReport()的实现过程
20.4.4 JNI层Hidraw getReport函数的实现
20.4.5 JNI层Hidraw setReport函数的实现
20.5 Java层OTA升级程序示例
20.6 Hidraw setReport、getReport命令的数据分析
第21章 加速度传感器在低功耗蓝牙设备上的应用
21.1 概述
21.2 蓝牙输入相关子系统、G-Sensor子系统简介
21.3 加速度传感器设备的创建过程
21.3.1 Bluedroid发起的设备注册过程
21.3.2 Kernel中Hid设备的创建过程
21.4 加速度传感器的驱动注册过程
21.5 Sensor数据从Bluedroid到传感器驱动的传输过程
第22章 LE系统快速更新连接参数的设计和实现
22.1 概述
22.2 更新连接参数的常规方法,快速更新连接参数碰到的困难及解决思路
22.2.1 更新连接参数的常规方法介绍
22.2.2 快速更新连接参数碰到的困难及解决思路
22.3 快速更新连接参数的实现及应用
22.3.1 快速更新连接参数的实现方法
22.3.2 快速更新连接参数在语音传输中的应用
第23章 LE语音编解码和传输
23.1 概述
23.2 音频采集、处理和蓝牙传输的软硬件过程
23.3 ADPCM介绍
23.3.1 ADPCM的概念
23.3.2 ADPCM编码框图
23.4 遥控器语音传输的总体流程
23.5 主机端的语音数据的接收处理流程
23.5.1 传统语音数据的接收处理流程
23.5.2 基于Hidraw接口的语音数据的接收处理流程
23.6 基于ADPCM的一种语音压缩编码数据的传输格式定义
23.6.1 语音压缩编码数据起始帧的定义
23.6.2 语音压缩编码数据桢的第1部分定义
23.6.3 语音压缩编码数据桢其他部分定义
23.6.4 语音压缩编码数据结束帧的定义
23.6.5 完整语音压缩编码数据桢的格式定义
23.7 基于ADPCM的一种语音压缩编码数据的接收数据的格式解析
23.7.1 语音压缩编码数据起始帧的接收数据格式解析
23.7.2 语音压缩编码数据的数据帧的第1帧的第1部分的接收数据格式解析
23.7.3 语音压缩编码数据的数据帧第2帧的第1部分的接收数据格式解析
23.7.4 语音压缩编码数据结束帧的接收数据格式解析
23.8 基于Hidraw的语音压缩编码数据的接收和处理的代码示例
23.8.1 /dev/hidrawX设备的寻找过程
23.8.2 ADPCM语音压缩编码数据的读取和解码的代码示例
第24章 开发工具
24.1 概述
24.2 Ellisys蓝牙协议分析仪
24.3 Ellisys HCI分析
24.4 Ellisys频谱分析
24.5 Ellisys时序和逻辑分析
24.6 Ellisys空中抓包
24.7 Ellisys组网分析
24.8 Ellisys集成化音频分析
24.9 其他
第25章 蓝牙系统Bug分析
25.1 概述
25.2 内存操作越界引发蓝牙重启的一个Bug分析
25.2.1 内存操作越界Bug描述
25.2.2 内存操作越界引发蓝牙重启的Bug分析过程
25.3 系统IO繁忙时写btsnoop日志效率低导致蓝牙通信卡顿的Bug分析
25.3.1 写btsnoop日志效率低的Bug描述
25.3.2 写btsnoop日志效率低的Bug分析
25.3.3 Bug的解决方法
25.4 蓝牙数据总线丢失数据导致蓝牙重启
25.4.1 导致蓝牙重启的Bug描述
25.4.2 导致蓝牙重启的日志分析
25.4.3 解决问题的方法
25.5 蓝牙核心协议规范关于断连接流程的设计缺陷
25.5.1 断连接流程的设计缺陷引发的Bug描述
25.5.2 问题背景介绍
25.5.3 Bug分析过程
25.5.4 解决问题的方法
买过这本书的人还买过
读了这本书的人还在读
同类图书排行榜