蓝牙基础(二):协议栈之形象化理解
1.医院的结构
情景一:大城市医院
假设中间的框图为大城市的医院结构,大城市医院医生充足,设备先进。
当病人来看病是,首先进入大堂,挂号,确定科室,假如进入近视科;
医生发现并不是简单的近视,需要抽血化验,进入检验室;
检验室抽血化验得到各种参数,但并不知道参数含义,需写成报告,发回医生;
医生看到化验单得知近视原因。
总结为下图:简而言之,医生提供服务,检验室提供属性。
情景二:山区医院
假设左图为山区医院,只有张三一个医生,需要治疗各种疾病,他需要借助同行的力量,为他提供指导和服务。
例子如下图:
假设病人复诊,张三医生需知道病人是否变好,但他不知道看那个参数,他请教眼科中心王医生的指导,得知要看血红蛋白这个参数;
病人在检验室抽血,但检验室没有相应的检测设备,需要将其送至眼科中心检验;因此经过收发室、快递公司、快递员送到眼科中心的检验室;
眼科中心检验室检测,得出报告,又经过收发室、快递公司、快递员送达山区医院的检验室;
山区医院检验室将报告交给医生,医生查看血红蛋白参数进行诊断。
总结:病人通过各个层获得了什么?
大堂:挂号,确定科室
张三医生:获得诊疗服务
检验室:获得检测单,检测单称之为属性
收发室:运送样品(公务),医生的感谢卡(私务)
快递公司:贴快递单
快递员:运输
2.协议栈形象化理解
协议层 | 功能 | 类比医院 | 功能 |
---|---|---|---|
GAP:通用访问规范 | 发现设备和连接设备 | 大堂 | 按指定流程挂号,确定科室 |
GATT:通用属性规范 | 提供服务,服务的类别及由哪些属性构成 | 医务室 | 提供服务 |
ATT:属性协议 | 提供属性,GATT将这些属性组合起来构成服务 | 检验室 | 提供检查结果,由医生综合判断进而确诊 |
L2CAP:逻辑链路控制及自适应协议 | 收发各方(channel)数据 | 收发室 | 收发包裹 |
HCI:主机控制接口层 | 主机与控制器的接口(串口、USB等);分段、合并(数据量很大时) | ||
LL:链路层 | 确定是广播包还是数据包,加上地址(多个设备) | 快递公司 | 贴快递单 |
PHY:物理层 | 无线收发器,运输,调频 | 快递员 | 运输,此路不同换一条 |
假如有一个手机和智能手环,手环可监测心率和电量监测;
ATT层:
则手环中的 ATT 是服务器,手机中的 ATT 是客户端;
手环中ATT定义了属性,定义了数据格式(心率、电量、特性声明、主服务声明等数据);手机中ATT定义了方法,定义了怎么去获取属性、读写属性;
ATT中定义了请求、响应、命令、通知、指示、确认等机制;
GATT层:
GATT将ATT中的属性进行组合构成服务(心率监测服务、电量监测服务等)
手机 GATT 层中定义了如何发现服务,读写服务中的特性(比如如何获取心率值)
手环 GATT 层定义了如何主动通知手机,某个值发生了变化
GATT层定义服务,实现服务,提供访问服务的方法
GATT严重依赖ATT,它只是在属性的基础上综合,提供一种服务
L2CAP
手机要读取某个属性,他需要ATT这一层发出一个请求,这个请求数据就经过 L2CAP(收发室)传递至手环端的 ATT;
同时,L2CAP使用channel标记数据来源,APP、ATT以及L2CAP的数据等,根据channel信息决定数据发到不同的层
LL
决定将数据发送至某个设备
重要概念:访问地址
PHY
蓝牙频率:2.4GHz左右(自然界中没有准确的东西)
将2.4GHz频段划分为40个信道
37,38,39为广播信道
0——36为数据信道