【蓝牙】精讲蓝牙设备角色关系 (Server/Client, Central/Peripheral, Master/Slave)

1. 蓝牙设备角色和状态简介

蓝牙设备在连接过程中扮演不同角色,分为经典蓝牙和低功耗蓝牙(BLE)两类。

  • 经典蓝牙中,主设备(Master)发起连接并控制通信,从设备(Slave)响应请求;BLE中,中心设备(Central)扫描并连接外围设备(Peripheral)。
  • GATT模型中,服务器(Server)提供数据,客户端(Client)访问数据。通常,中心设备作为GATT客户端,外围设备作为服务器。双模设备(如手机)在不同场景下可切换角色。

蓝牙连接过程中的角色:
(发现者)Observer —> Master —> Central --> Client
(广播者)Advertiser —> slaver —>Perpheral --> Server
在这里插入图片描述
连接过程中两个角色对应的状态:

  • Standby 准备、Aderversing 广播、Scaning 监听
  • Intiating 发起连接 、Connect 连接
    在这里插入图片描述

2. 设备角色关系详解 (Server/Client, Central/Peripheral, Master/Slave)

这些术语描述了蓝牙设备在连接建立和通信过程中扮演的逻辑角色。它们分属不同的层次,但相互关联:

  • 2.1 经典蓝牙中的角色:

    • 主设备(Master): 负责发起连接、控制连接时序(跳频序列)、管理微微网中的通信。一个主设备可以连接多个从设备(最多7个活跃从设备)。
    • 从设备(Slave): 接受主设备发起的连接,响应主设备的请求。它不能主动发起连接,只能与连接它的主设备通信。
    • 关系: 经典蓝牙的连接是点对多点的星形拓扑,一个主设备对应一个或多个从设备,形成一个“微微网”。主设备绝对控制通信的时机。
  • 2.2 低功耗蓝牙中的角色:

    • 中心设备(Central): 功能类似于经典蓝牙中的主设备。它主动扫描寻找可用的外围设备,并负责发起连接请求。连接建立后,它通常作为通信的发起方,向外围设备请求数据或发送命令。
    • 外围设备(Peripheral): 功能类似于经典蓝牙中的从设备。它广播自身的存在(发送广播包,包含服务信息),等待中心设备来连接它。连接建立后,它主要响应中心设备的请求或向中心设备发送通知/指示。
    • 关系: BLE的连接也是点对点的(一个中心连接一个外围),但中心设备可以同时连接多个外围设备(形成星形拓扑)。外围设备广播,中心设备扫描并选择连接哪个外围设备。

比如手机和手环进行BLE连接,手机就是作为Central,手环作为Peripheral。那么对于Broadcaster角色,大家应该听过iBeacon,它就是作为该角色的功能存在的,只能接受到他的广播包,不需要连接,因为它的信息都在广播包中。那么对应iBeacon使用的主设备就是Observer了,只需要扫描到广播包,不需要连接。

  • 2.3 GATT 模型中的角色 (在已建立的BLE连接上):
    • GATT 服务器(Server): 这是数据提供者。它存储数据并通过定义好的“服务”和“特征”向外暴露数据接口。例如,一个心率监测器(作为外围设备)也是一个GATT服务器,它存储并提供心率数据。
    • GATT 客户端(Client): 这是数据访问者/消费者。它发现GATT服务器提供的服务,读取或写入服务器上的特征值,或者订阅服务器发送的通知/指示。例如,手机上的健身APP(作为中心设备)就是一个GATT客户端,它读取心率监测器(服务器)的数据。
    • 关系: GATT角色是在BLE连接建立之后定义的,并且依赖于中心/外围角色
      • 一个中心设备在连接后几乎总是充当GATT客户端
      • 一个外围设备在连接后几乎总是充当GATT服务器
      • 这个关系非常固定:客户端(中心)请求数据,服务器(外围)提供数据。

总结蓝牙设备角色关键关系:

层级/术语角色1角色2主要职责发起连接?广播?典型关系/拓扑
经典蓝牙主设备从设备主:控制连接和通信时序
从:响应主设备请求
主发起1主 -> 多从 (微微网)
低功耗蓝牙中心设备外围设备中心:扫描、发起连接、请求数据
外围:广播、等待连接、提供数据
中心发起外围广播1中心 -> 多外围 (星形)
GATT (BLE)GATT 客户端GATT 服务器客户端:发现服务、读/写/订阅数据
服务器:存储数据、定义服务/特征、响应请求/发送通知
不适用不适用中心设备 通常是 GATT 客户端
外围设备 通常是 GATT 服务器

重要说明:

  1. Master/Slave vs. Central/Peripheral: Central/Peripheral 是 BLE 对 Master/Slave 概念的重新命名,其核心思想(谁发起连接、谁控制通信)是一致的。Central=Master, Peripheral=Slave。
  2. Server/Client vs. Central/Peripheral: Server/Client (GATT) 定义的是数据交互模型,发生在连接建立之后。Central/Peripheral 定义的是连接建立模型。在BLE中,它们有很强的关联性(Central->Client, Peripheral->Server),但概念上属于不同层面。

central/peripheral和client/server没有对应关系,central不等于client, peipheral也不等于server。central/peripheral是区分连接角色的, client/server是区分数据的请求和发送角色的。peripheral角色既可以作为client也可以作为server, 同理central角色。

  1. 双模设备的角色: 双模设备(如手机)可以在不同场景下扮演不同角色:
    • 当连接经典蓝牙音箱时:手机是 Master
    • 当连接BLE手环时:手机是 CentralGATT Client
    • 当作为热点或共享文件时(通过经典蓝牙):手机也可以作为 Slave (等待其他主设备连接) 和 Server (提供文件服务)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风云说通信

支持小编为您创造更多干货,谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值