佛系学习,想学就学,不想学就不学。
core_v5.0 vol 3. Part C
GAP:Generic access profile,通用访问协议,定义了基本过程,包括设备发现,链路管理,配置,安全设置等。
LIAC:Limited Inquiry Access Code,受限查询接入码
GIAC:Generic Inquiry Access Code,通用查询接入码
UUID:Universal Unique Identifier,通用唯一标识符
Peripheral:外围设备
Central:中央设备
1. GAP在协议栈中的位置
2. 用户接口(UI)
(1)User Interface:用户接口,蓝牙设备上显示蓝牙相关术语和参数名称、取值和数字表示的地方。
(2)BD_ADDR:Bluetooth Device Address,蓝牙设备地址
- 用户界面术语:Bluetooth Device Address
- 表示:逻辑链路层表示为48-bit,用户界面表示为12个16进制数字,如00:11:22:33:EE:FF。
- 地址类型:
① 公有地址和随机地址。
② 随机地址:静态随机地址和私有地址。
③ 私有地址:可解析的私有地址和不可解析的私有地址
(3)Bluetooth Device Name,蓝牙设备名称
- 用户界面术语:Bluetooth Device Name
- 对于BR/EDR而言,蓝牙设备名字以响应LMP_name_req消息返回给请求设备。
- 对于LE-only而言,若设备是可发现的,则设备名字无需认证或授权便可读取;若设备是不可发现的,则设备名字必须通过认证或授权才可读取。
- 设备名最长可达248个字节,为了便于显示,最好控制在40个字节以内。
- 支持UTF-8编码。
(4)Bluetooth Passkey,Bluetooth PIN,蓝牙配对秘钥
- 用户界面术语:Bluetooth Passkey
- 蓝牙秘钥用于两个设备在配对过程中相互鉴权。
- 蓝牙秘钥有不同的表示形式。于高层而言,有两种形式:一种用于安全简单配对和安全管理;一种用于传统配对(即蓝牙PIN)。
(5)Class of Device,设备类型,在设备发现过程中,BR/EBR物理传输上接收到的一个参数。
- 用户界面术语:Bluetooth Device Class,Bluetooth Service Type
(6) Appearance Characteristic,外观特性
- 由16-bit表示,在设备发现过程中,可映射为一个符号或者字符串。
3. GAP角色
(1)广播者:Broadcaster Role,设备正在发送advertising events。
(2) 观察者:Observer Role,设备正在接收advertising events。
(3)外围设备:Peripheral Role,设备接受Link Layer连接(对应Link Layer的slave角色)。
(4)中心设备:Central Role,设备发起Link Layer连接(对应Link Layer的master角色)。
4. BR/EDR模式
BR/EDR模式有四种:可发现、可连接、可绑定、 可同步。
(1)可发现模式:蓝牙设备响应远端设备查询请求的模式,包括不可发现模式和可发现模式。其中可发现模式包括通用可发现模式和受限可发现模式。
- Non-discoverable Mode:不可发现模式。该模式下,设备不会进入INQUIRY_SCAN状态。
① 用户界面术语:non-discoverable 或 non-discoverable mode - Limited Discoverable Mode:受限可发现模式。该模式下,设备只会在有限的时间内,某个特殊事件或临时条件下可被发现。
① 用户界面术语:discoverable 或 discoverable mode
② 该模式可响应使用受限查询接入码(LIAC)和通用查询接入码(GIAC)进行查询的设备。LIAC和GIAC扫描可串行,可并行。
③ 并行:若相对于功耗和带宽而言,查询速度更重要时,建议至少每TGAP(105)进入一次 INQUIRY_SCAN状态,且进行隔行查询扫描。
④ 并行:若功耗或带宽比较重要,但不是特别严格时,建议至少每TGAP(102)进入一次INQUIRY_SCAN状态,且进行隔行查询扫描。
⑤ 并行:若功耗或带宽比较严格时,建议至少每TGAP(102)进入一次 INQUIRY_SCAN状态,且进行非隔行查询扫描。
⑥ 串行:每TGAP(102)至少进入一次 INQUIRY_SCAN状态,且每TGAP(101)至少扫描一次GIAC;通常每TGAP(102)进入多次 INQUIRY_SCAN状态,并每TGAP(101)至少扫描一次LIAC。
⑦ 当操作模式处于SCO或eSCO时,建议使用隔行扫描模式,以减少发现时间。 - General Discoverable Mode:通用可发现模式,该模式下总会被发现。
① 用户界面术语:discoverable 或 discoverable mode
② 该模式可响应使用GIAC进行查询的设备,不响应使用LIAC进行查询的设备。
③ 若相对于功耗和带宽而言,查询速度更重要时,建议至少每TGAP(105)进入一次 INQUIRY_SCAN状态,且进行隔行查询扫描。
④ 若功耗或带宽比较重要,但是特别严格时,建议至少每TGAP(102)进入一次 INQUIRY_SCAN状态,且进行隔行查询扫描。
⑤ 若功耗或带宽特别严格时,建议至少每TGAP(102)进入一次 INQUIRY_SCAN状态,且进行非隔行查询扫描。
⑥ 至少每TGAP(102)进入一次 INQUIRY_SCAN状态,且至少每TGAP(101)扫描一次GIAC。
(2)可连接模式,蓝牙设备响应远端设备寻呼的模式,包括不可连接模式和可连接模式。
- Non-connectable Mode:该模式下,设备不会进入PAGE_SCAN状态。
① 用户界面术语:non-connectable或non-connectable mode - Connectable Mode:该模式下,设备周期性地进入PAGE_SCAN状态。
① 用户界面术语:connectable或connectable mode
② 设备使用蓝牙设备地址BD_ADDR进行寻呼扫描。
③ 连接速度取决于功耗和可用带宽的权衡,由寻呼扫描间隔、寻呼扫描窗口以及隔行扫描参数决定。
④ 不同场景下寻呼扫描参数表格如下图所示
(3)可绑定模式,蓝牙设备响应远端设备发起的绑定请求,包括不可绑定模式和可绑定模式。
- Non-bondable Mode:该模式下,设备不会接受远端设备发起的配对请求。
① 用户界面术语:non-bondable、non-bondable mode 或 does not accept bonding
② 该模式下,设备可接受来自远端设备的不需要绑定的连接请求。
③ 若收到LMP_in_rand,则回复LMP_not_accepted ,并携带原因值pairing not allowed。 - Bondable Mode:该模式下,设备可接受远端设备发起的绑定请求。
① 用户界面术语:bondable、bondable mode 或 accept bonding
② 若并非本地和远端设备都不支持安全简单配对,本地收到LMP_in_rand,则回复LMP_accepted,或者若存在固定的PIN,则回复LMP_in_rand。
③ 若本地和远端设备都支持安全简单配对,则本地发起confirmation request消息进行响应。
(4)可同步模式,蓝牙设备是否进入同步训练子状态,包括不可同步模式和同步模式。
- Non-synchronizable Mode:该模式下设备不会进入同步训练(synchronization train)状态。
① 用户界面术语:non-synchronizable 或 non-synchronizable mode - Synchronizable Mode:该模式下设备可进入同步训练(synchronization train)状态。
① 用户界面术语:synchronizable 或 synchronizable mode
② 若同步训练使能,则每TGAP(Sync_Train_Interva)至少同步一次。
5. BR/EDR Idle模式下的过程
(1) 通用查询过程,用于获取通用发现设备或限制发现设备的地址、时钟、设备类型、寻呼扫描模式和扩展查询响应信息。
- 用户界面术语:Bluetooth Device Inquiry
- 该过程携带通用发现设备码GIAC
- 当设备发起通用查询过程时,除非已经搜索到了足够的设备,否则INQUIRY状态至少持续TGAP(100)。
(2) 限制查询,用于获取限制发现设备的地址、时钟、设备类型、寻呼扫描模式和扩展查询响应信息。
- 用户界面术语:Bluetooth Device Inquiry
- 该过程携带限制发现设备码LIAC。
- 当设备发起通用查询过程时,除非已经搜索到了足够的设备,否则INQUIRY状态至少持续TGAP(100)。
(3) NAME DISCOVERY,该过程通过向已知可连接设备发送名字请求,从而用于获得设备名称。
- 用户界面术语:Bluetooth Device Name Discovery
- 名字请求过程:
- 该过程需要携带远端设备的Device Access Code。
(4) DEVICE DISCOVERY,用于获取可发现设备的地址、时钟、设备种类、寻呼扫描模式、名称以及扩展查询响应信息。
- 用户界面术语:Bluetooth Device Discovery
- 该过程分为两步:
① 查询(通用或限制)
② NAME DISCOVERY - 被该过程发现的设备必须是可发现可连接的。
(5) 绑定,通过同一链路秘钥将两个设备绑定在一起。绑定分为通用绑定和专用绑定。
- 用户界面术语:Bluetooth authentication
- 链路秘钥在绑定过程中生成和交换。
- 执行该过程的设备都需要支持安全简单配对。
- 在执行该过程前,需要执行设备查找。发起绑定过程的设备发起限制查询过程,接受绑定的设备支持限制发现模式。
- 发起绑定过程的设备需要发起鉴权。
- 通用绑定:因业务访问需要建立信道连接时,发起的绑定过程。
① 若安全策略为available local service requires MITM Protection,则Authentication_Requirements参数MITM Protection Required设置为MITM Protection Required – General Bonding,否则设置为MITM Protection Not Required – General Bonding。
② 通用绑定过程: - 专用绑定:仅仅为了配对。
① 若安全策略为available local service requires MITM Protection,则Authentication_Requirements参数MITM Protection Required设置为MITM Protection Required – Dedicated Bonding,否则设置为MITM Protection Not Required – Dedicated Bonding。
② 专用绑定过程:
6. LE模式和过程
LE模式和过程有5种:广播模式和观察过程、发现模式和过程、可连接模式和过程、可绑定模式和过程、周期性广播模式和过程。
- 模式是工作状态,过程是针对模式实现的一套操作,模式和过程成对出现。
- 在执行任何LE模式和过程前,需要配置Controller本地链路层特性信息。
- Flags data types:
(1)广播模式和观察过程:该模式和过程允许两个设备通过广播事件(advertising events)以单向无连接的方式进行通信。
- Broadcast Mode:广播模式,该模式通过广播事件发送无连接数据。
① 可匿名发送不可连接和扫描的定向或非定向广播事件。
② 广播数据使用AD(Advertising Data)类型格式进行组装。LE Limited Discoverable Mode和LE General Discoverable Mode这两个标志位不需要设置。 - Observation Procedure:观察过程,通过该过程设备可接收无连接数据。
① 可通过被动或主动扫描方式来接收广播事件。
② 可通过主动扫描方式来接收通过扫描广播事件发送的扫描响应数据。
③ 若收到了可解析的私有地址,则对该地址进行解析。
(2)发现模式和过程,一个设备要么处于不可发现模式,要么处于发现模式。发现模式分为限制发现模式和通用发现模式。
- Non-Discoverable Mode:处于不可发现模式的设备不会被任何设备发现,也不会执行通用发现过程和限制发现过程。
① 处于不可发现模式的设备,可发送广播事件。
② 参数设置:广播过滤策略(advertising filter policy)为 “process scan and connection requests only from devices in the White List” 或“process scan and connection requests from all devices”;广播间隔(advertising intervals)。 - Limited Discoverable Mode:当设备执行限制或通用发现过程,处于限制可发现模式的设置在一个限制时间段可被发现。
① 支持该模式的设备角色:外围设备。其余不支持。
② 该模式下的设备发送广播事件时,需填写Flags AD type 。
③ 为了更快的连接体验,AD type中需要填写TX Power Level AD type,Local Name AD type,Service UUIDs AD type,Slave Connection Interval Range AD type。
④ 参数设置:广播过滤策略(advertising filter policy)为 “process scan and connection requests from all devices”;广播间隔(advertising intervals)。 - General Discoverable Mode:设备在很长的一段时间内可被发现。其余情况同限制可发现模式。
- Limited Discovery Procedure:该过程用于接收来自限制可发现模式设备的设备地址、广播数据和扫描响应数据。
① 支持该过程的设备角色:中央设备。其余不支持。
② 建议在设备支持的所有物理信道上进行扫描。
③ 参数设置:scanner filter policy – process all advertising packets,scan interval ,scan window, active scanning。
④ Host检查广播数据中的Flags AD type。若该标志位存在,且LE Limited Discoverable Flag设置为1,则认为该设备为发现设备。
⑤ 广播数据中可能包含Service UUIDs AD type, TX Power Level AD type, Local Name AD type, Slave Connection Interval Range AD type等参数。 - General Discovery Procedure:该过程用于接收来自限制可发现模式或通用可发现模式设备的设备地址、广播数据和扫描响应数据。
① Host检查广播数据中的Flags AD type。若该标志位存在,且LE Limited Discoverable Flag或LE General Discoverable Mode flag设置为1,则认为该设备为发现设备。 - Name Discovery Procedure:用于获取远端可连接蓝牙设备的名称。执行该过程的步骤:
① Host发起建立连接;
② Host使用GATT Read Using Characteristic UUID过程读取设备名称;
③ GATT过程完成后,断开连接。
(3)连接模式和过程,包括3种模式和5种过程。
- 连接模式:
- 连接过程:
- Connection parameter update procedure:该过程允许外围设备或中央设备更新LL层连接参数。
① 中央设备必须支持该过程,外围设备可支持该过程,其余不支持该过程。
② 若中央和外围都支持Connection Parameters Request Link Layer Control过程,则中央和外围可使用Connection Parameters Request Link Layer Control过程发起连接参数更新过程;
③ 若中央和外围并非都支持Connection Parameters Request Link Layer Control过程,则中央设备使用Link Layer Connection Update过程发起连接参数更新过程。
④ 若中央和外围并非都支持Connection Parameters Request Link Layer Control过程,则外围可使用L2CAP Connection Parameter Update Request命令发起连接参数更新过程 。 - Terminate connection procedure
(4)绑定模式和过程。绑定,即设备双方通过交换和存储安全和身份信息,从而建立可信任的关系。
- Non-Bondable Mode:该模式不接受绑定请求。
① 中心设备和外围设备都需要支持该模式。
② 若设备不支持配对,则认为该设备不可绑定。
③ 若设备支持安全管理配对,但Bonding_Flags设置为No Bonding,则不需要交换和存储绑定信息。 - Bondable Mode
① 在绑定过程中,Bonding_Flags设置为Bonding。 - Bonding Procedure
① 外围设备和中心设备可支持该过程,广播者和观察者不支持该过程。
(5)周期性广播模式和过程,该模式和过程允许两个和多个设备使用扩展性广播事件或周期性广播事件以非定向无连接的方式进行通信。
- Periodic Advertising Synchronizability Mode:用于发送周期性广播事件相关的同步信息。
- Periodic Advertising Mode:利用周期广播同步信息中的跳频序列周期性地发送广播事件。
- Periodic Advertising Synchronization Establishment Procedure:该过程用于接收周期性广播同步信息和周期性广播。
① 该设备需要扫描携带同步信息的不可连接、不可扫描广播事件;
② 获得周期性广播信息后的设备,可利用跳频序列周期性地监听周期广播事件。