首页 > 系统相关 >和菜鸟一起学linux之bluez学习记录1

和菜鸟一起学linux之bluez学习记录1

时间:2023-01-15 16:05:55浏览次数:46  
标签:HCI 菜鸟 蓝牙 EDR 命令 bluez linux 设备 通道



关于蓝牙协议栈体系结构


 

和菜鸟一起学linux之bluez学习记录1_流控制


和菜鸟一起学linux之bluez学习记录1_链路管理_02

底层硬件模块

 

和菜鸟一起学linux之bluez学习记录1_链路管理_03

RF

1、利用2400M~2483.5M频带

2、采用调频方式传输数据,一共有79/EDR,40/BLE个hops,每秒

3、采用GFSK(DQPSK和8DPSK)调制方式

4、信道间隔(1MHZ/EDR模式,2MHZ/BLE模式)

 

BB

蓝牙系统提供点对点或点对多点的连接,在连接中设备共享物理信道,称为piconet。一个设备做为master,其他的设备作为slave。pico网中最多可支持7个活动的slave。其他的处于非活动状态。这些非活动slave仍需要保持与master的同步,通道的访问由master来控制。

    对所有调制方式,符号率均为1Ms/s。这样BR是1Mbps,EDR DQPSK是2Mbps,EDR 8DPSK是3Mbps。

包格式

和菜鸟一起学linux之bluez学习记录1_链路管理_04



蓝牙地址

和菜鸟一起学linux之bluez学习记录1_流控制_05


1、物理通道

2、蓝牙物理通道由伪随机频率hopping序列,特定的时间slot,访问码和包头编码构成。

3、两个设备为了通信,需要使用共享信道,这样就需要两者必须在同一时刻使用相同的频         

率。

4、hopping序列有蓝牙设备地址中UAP和LAP决定,timeslot长度取决于物理通道,在连接状态下最大的hop率为1600hops/s,inquiry和page状态下为3200hops/s。

四种物理通道

1、基本pico网通道 2、自适应pico网通道 3、Page scan物理通道 4、inquiryscan物理通道

物理连接

包括电源控制,link监控,加密和链路管理协议,通道数据率变化,多slot包控制。

 

五种逻辑传输

1、SCO 基于同步连接逻辑传输 2、ESCO扩展SCO 3、ACL 异步逻辑传输

4、ASB 活动Slave广播 5、PSB  Parked Slave广播

 

LMP

1、链路管理协议

2、用于链路的建立和控制,信号在链路管理层被解析和过滤,不会传递至上层。

3、协议由一系列的消息构成,这些消息通过ACL-C逻辑传输。

 传输示意图

和菜鸟一起学linux之bluez学习记录1_流控制_06

包格式


 

和菜鸟一起学linux之bluez学习记录1_链路_07

主要功能

1)连接控制:连接建立,断开,电源控制,自适应频率hopping,通道分类, 链路监控,通道质量驱动数据率变化,Qos,Paging参数,多slot包控制,EDR,LMP PDU封装。

2)安全:认证,配对,改变link key,改变当前link key类型,加密,请求加密keysize,简单安全配对。

3)信息请求

4)功能切换

5)操作模式

6)逻辑传输

7)测试模式

HCI

为控制器定义了统一的命令接口

1)流控制

2)HCI数据格式

3)HCI配置参数

4)HCI命令和事件

HCI流控制

Host到控制器数据流控制

基于包的数据流控制

基于块的数据流控制

控制器到Host数据流控制

命令流控制

断开行为

命令错误处理

 

和菜鸟一起学linux之bluez学习记录1_链路_08

 

HCI命令和事件

1)链路控制命令

2)链路策略命令

3)控制和基带命令

4)消息参数

5)状态参数

6)测试命令

7)事件

8)LE控制器命令

 

中间协议层


 

和菜鸟一起学linux之bluez学习记录1_链路管理_09

L2CAP

框架图

和菜鸟一起学linux之bluez学习记录1_链路管理_10


流控制与重传过程 和AMP通道建立和处理过程

SDP

该规范定义了蓝牙设备提供的本地服务协议。

Some examples of service attributes:

和菜鸟一起学linux之bluez学习记录1_链路管理_11

和菜鸟一起学linux之bluez学习记录1_链路管理_12


Example Service Browsing Hierarchy



和菜鸟一起学linux之bluez学习记录1_链路管理_13


services records and service attributes

和菜鸟一起学linux之bluez学习记录1_链路_14

 

GAP

该profile定义了发现蓝牙设备的通用过程(idle模式过程),和连接到蓝牙设备的链路管理方面(连接模式过程)。它还定义了不同安全级别下的过程。

定义了表示蓝牙的参数

1)BD_ADDR

2)蓝牙设备名

3)蓝牙PIN

4)设备类型

配对

安全方面

1)认证

2)安全模式

IDLE模式过程

建立过程

1)LINK建立

2)通道建立

3)连接建立

扩展Inquiry响应数据格式

LE相关的特殊规范

 

GATT

GATT是基于attribute协议的服务框架。

    功能:描述了怎样使用attribute协议来发现、读、写和获取这些属性的标志,以及配置属性的广播。

client:对于service启动命令和请求,可以接收service端的响应、指示和通知。

service:接受来自client端的命令和请求,发送响应,指示和通知给client端。

例如:

client:电脑终端

service:温度计

电脑终端启动程序配置温度计或者读取温度计的值。

温度计提供其特性的信息,例如其温度的服务和其他被允许的可写的一些特性等。

用户需求

1、可改变的配置

2、发现设备上的服务和特性

3、读取一个特性值

4、写入一个特性值

5、通知的特性值

6、指示的特性值

SMP

用于LE设备间的配对,认证和加密管理。

 

高端应用层

和菜鸟一起学linux之bluez学习记录1_链路管理_15

 

蓝牙规范


和菜鸟一起学linux之bluez学习记录1_流控制_16

基本蓝牙规范

和菜鸟一起学linux之bluez学习记录1_链路管理_17

个例说明

1、GATT based中的HTP

2、BR/EDR Profiles中的A2DP

3、BR/EDR Protocols 中的AVDTP

 

Health Thermometer Profile (HTP)

和菜鸟一起学linux之bluez学习记录1_流控制_18

 

Advanced Audio Distribution Profile (A2DP)

 

和菜鸟一起学linux之bluez学习记录1_链路_19

Audio/Video Distribution Transport Protocol(AVDTP)

和菜鸟一起学linux之bluez学习记录1_流控制_20

 

linuxbluez体系结构

 

和菜鸟一起学linux之bluez学习记录1_流控制_21

 

Bluetooth的Bt_io

 

和菜鸟一起学linux之bluez学习记录1_链路管理_22

Bluetoothd启动过程

 

和菜鸟一起学linux之bluez学习记录1_流控制_23

 

Bluetooth扫描设备过程

 

和菜鸟一起学linux之bluez学习记录1_流控制_24


标签:HCI,菜鸟,蓝牙,EDR,命令,bluez,linux,设备,通道
From: https://blog.51cto.com/u_15940062/6008786

相关文章

  • 和菜鸟一起学android4.0.3源码之wifi direct的简单分析
    关于wifidirectWifidirect的连接 下面的图表示的是wifidirect的发现过程。 整个过程可以见下图。关于android上的wifidirect首先上层通过调用p2pmanager的接口来实现......
  • 和菜鸟一起学linux之bluez学习记录2
    这里主要摘取对于hci,l2cap,sdp和rfcomm的一些应用编程。 关于hci 一、HCI层协议概述 1、HCICommandPackets详见bluez源码:lib/hci.h/*LinkControl*/#defineOGF_LINK_......
  • 和菜鸟一起学linux内核源码之基础准备篇
        注:以下大部分内容摘自linux内核编程入门篇和linux内核完全注释       在工作的这段时间,发现我的visio画图熟悉了点点,总喜欢把什么源码啊,结构啊之类的就......
  • 和菜鸟一起学android4.0.3源码之wifi的简单分析
     关于wlan的组成 关于wifi应用层的接口的调用    首先从上层androidwifi的应用开始,首先会根据android的wifimanager的类,实例化一个mwifimanager的对象,这个对象处......
  • 和菜鸟一起学OK6410之ADC模块
    android上跑起来时也比较灵敏了,GPIO模拟的SPI也可以工作了,看了会书,修正了会,回到宿舍也已经9点多了。想想,OK6410上还有个AD模块呢。网上找了找资料,发现还是可以去尝试下可不......
  • 和菜鸟一起学算法之三分法求极值问题
    7年,唉,可是他错了,女孩根本不爱他,不过期间他的执着和付出,很让我感动,也许自己不太像他那样,才会让自己有现在的处境吧。也许吧。小感慨下。不过现在也挺好的,上上班,写写文章,然后......
  • Linux DNS --- Bind多域名配置
    一、承上启下https://www.cnblogs.com/eagle6688/p/17026162.html上一篇我们配置了example.com的解析,本文我们尝试添加第二个域名test.com还有它的二级子域名mail.test.c......
  • Linux内核机制—内核热补丁
    一、内核热补丁简介1.热补丁内核实现路径:kernel/livepatch/2.热补丁内核使用demo路径lib/livepatch/,可参考livepatch-sample.c实验也最简单。/*单独测试,使用新函......
  • 在Linux环境下将war包部署到tomcat
    部署前先简单认识几个运维工具:MobaXterm、xshell、WinSCP、CRT。常见压缩格式的压缩与解压命令:ZIP:解压--unzip压缩包名.zip压缩--zip-r压缩包名.zip......
  • Linux后台运行程序
    我们在日常使用脚本中难免会遇到需要一直挂这的脚本,这里就需要用到Linux中如何让脚本后台运行的方法。这里有3种方法供参考。如何后台运行脚本方法1:nohup在执行命令前......