蓝牙BLE协议之——GAP层

        注:文章基于蓝牙6.0协议栈核心规范文档,由SIG规定,原文档可点此进入查看

目录

一、GAP介绍

二、GAP Role 角色 

三、GAP的模式和规程

1 广播模式和观察规程

2 发现模式和规程

3 连接模式和规程

4 绑定模式和规程

5 周期性广播模式和规程

6 同步广播模式和规程

7 信道探测规程

四、安全方面 

五、广播和扫描响应的格式

六、GAP服务 


一、GAP介绍

       模式:当一个设备被配置为按照某种方式操作一段较长的时间时,称为模式。

       规程:当一个设备被配置为在某一段有限的时间内执行某种特定的操作时,称为规程。

  •         发现蓝牙设备相关的通用过程(空闲模式过程)
  •         连接到蓝牙设备的链接管理方面的通用过程(连接模式过程)
  •         使用不同安全级别相关的过程。
  •         用户界面级别可访问参数的通用格式要求。

下面这张图是蓝牙6.0核心规范的协议层关系图,被我x掉的是和经典蓝牙相关的,BLE没有的

二、GAP Role 角色 

•配置文件4种角色

  • Boardcast(广播者)
    • 发出广播信号可以没有无线接收器
  • Observer(观察者)
    • 接收广播信号,可以没有无线发送器
  • peripheral(外围设备)
    • 可以跟其他设备建立连接,建立连接时它是被动的一方。既含有无线发送器,又含有无线接收器。
  • Central(中央设备)
    • 可以跟其他设备建立连接,建立连接时它是主动的一方。既含有无线发送器,又含有无线接收器。

具体角色的能力范围如下:

  • M(Mandatory,强制)
  • E(Excluded,排除)
  • O(Optional,可选)
    以下所有图中字母代表意思均同此

三、GAP的模式和规程

1 广播模式和观察规程

  • 广播模式

  • 观察规程

2 发现模式和规程

  • 不可发现模式

  • 有限发现模式

  • 一般发现模式

  • 有限发现规程

  • 一般发现规程

  • 名称发现规程

3 连接模式和规程

  • 不可连接模式

  • 定向可连接模式

  • 非定向可连接模式

  • 自动连接建立规程

  • 一般连接建立规程

  • 选择性连接建立规程

  • 直接连接建立规程

  • 连接参数更新规程

  • 终止连接规程

  • 连接建立定时参数

  • 连接间隔定时参数

  • 连接的同步流中央建立规程

  • 连接的同步流外围建立规程

  • 连接的同步流终止规程

  • 连接子速率规程

  • 周期性广播连接规程

4 绑定模式和规程

  • 不可绑定模式

  • 可绑定模式

  • 绑定规程

5 周期性广播模式和规程

  • 周期性广播可同步性模式

  • 周期性广播模式

  • 周期性广播同步建立规程

  • 周期性广播同步传输规程

6 同步广播模式和规程

  • 广播同步可同步性模式

  • 广播同步广播模式

  • 广播同步同步建立规程

  • 广播同步信道映射更新规程

  • 广播同步终止规程

7 信道探测规程

  • 信道探测发起者规程

  • 信道探测反射者规程

四、安全方面 

  • LE安全模式1:没锁门,谁都能进(不加密、不验证身份)。适合公开信息。
  • LE安全模式2:门没锁,但进门得签名(不加密,但要确认数据没被改)。适合需要验证的数据。
  • LE安全模式3:门锁了,还得刷脸(加密数据+验证身份)。最安全,适合敏感信息。
  • 认证规程:见面先握手,确认是朋友(验证设备身份)。防止假冒。
  • 授权规程:给钥匙,但只开特定房间(设定权限)。保护隐私。
  • 连接数据签名规程:文件上盖章,证明没被改(给未加密数据加签名)。确保数据完整。
  • 验证签名数据规程:检查签名,确认是正品(验证数据来源和完整性)。防止篡改。
  • 加密广播数据规程:广播暗号,只有特定人懂(加密公开广播)。保护广播数据。

安全模式和角色流程的相关要求:

五、广播和扫描响应的格式

 广播和扫描响应数据:[AD Type + AD data] + [AD Type + AD data] +....

六、GAP服务 

        一个设备中必须有一个GAP服务,而且是首要服务

        服务中的特性如下 

<think>嗯,用户想了解关于BLE GAP广告的实现和配置。首先,我需要回忆一下BLE中的GAP是什么。GAP是通用访问配置文件,负责设备的广播和连接建立。广告(Advertising)在BLE中很关键,因为设备通过发送广告包让其他设备发现自己。 接下来,用户可能需要知道如何具体实现广告,比如设置广告数据、类型、参数等。我记得广告类型有几种,比如可连接的非定向广告、定向广告、扫描响应等。需要解释这些类型的区别和应用场景。 然后,配置广告参数,比如广告间隔、超时时间。广告间隔短的话会更频繁发送,但耗电多,所以需要平衡。可能用户对低功耗有要求,所以得提到如何优化广告间隔。 广告数据包的结构也很重要,包括标志、服务UUID、设备名称等。可能需要举例说明如何组装广告数据,比如使用AD Type结构。比如Flags字段通常包含设备支持的BLE模式,如BR/EDR和LE支持情况。 另外,扫描响应数据是当扫描请求时发送的额外数据,可以用来包含更多信息,比如厂商特定数据。需要说明扫描响应和主要广告数据的区别。 用户可能还想知道具体的实现步骤,比如在代码中如何初始化广告参数,设置广告数据,启动广告。可能需要引用一些代码示例,比如使用Nordic的nRF SDK或者Zephyr的API,但用户提供的引用中有提到settings_load()和bt_enable(),可能涉及这些API的使用顺序。 还要注意引用中的内容。比如引用[1]提到调用settings_load()要在bt_enable()之后,这可能是在配置蓝牙时需要遵循的顺序。引用[3]提到Mesh信标作为GAP AD类型的一种,虽然用户的问题可能不涉及Mesh,但可以说明广告类型的不同用途。 需要检查是否有相关的规范引用,比如蓝牙核心规范补充部分关于AD类型的说明。可能用户需要知道如何正确组装AD Type,例如标志、服务UUID等字段的格式。 最后,用户可能遇到的问题包括广告无法被扫描到、数据长度限制(31字节),或者连接参数设置不当导致的连接失败。需要提到这些常见问题及解决方法。 总结下来,回答的结构应该包括GAP广告的基本概念、广告类型、参数配置、数据格式、实现步骤、优化技巧以及常见问题。同时,结合用户提供的引用内容,确保回答中的步骤符合蓝牙规范中的要求,比如初始化顺序和API调用。</think>### BLE GAP广告实现与配置分步说明 BLEGAP(通用访问配置文件)广告是实现设备发现的核心机制,其配置包含以下关键环节: 1. **广告类型选择** - *可连接非定向广告*(ADV_IND):默认模式,允许设备被任何扫描仪发现和连接,广播间隔建议设置为20ms-10.24s[^2] - *可连接定向广告*(ADV_DIRECT_IND):用于快速建立指定目标设备的连接 ```c // Nordic nRF SDK示例 ble_gap_adv_params_t adv_params = { .properties.type = BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED, .interval = MSEC_TO_UNITS(100, UNIT_0_625_MS), .duration = BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED }; ``` 2. **广告数据格式** 遵循AD Type结构,每个字段包含1字节长度+1字节类型+数据: ```python # 典型广告数据结构示例 adv_data = [ 0x02, # 长度 0x01, # Flags类型 0x06, # LE通用发现模式|BR/EDR不支持 0x03, # 长度 0x03, # 16位UUID列表 0xAA, 0xFE # 自定义服务UUID ] ``` 3. **扫描响应配置** 用于补充广播包外的额外信息,最大31字节: ```c // Zephyr实现扫描响应 static struct bt_data scan_rsp[] = { BT_DATA(BT_DATA_NAME_COMPLETE, DEVICE_NAME, DEVICE_NAME_LEN), BT_DATA(BT_DATA_MANUFACTURER_DATA, mfg_data, sizeof(mfg_data)) }; ``` 4. **功率与信道控制** - 默认使用37/38/39三个广播信道 - 可通过`BLE_GAP_ADV_SET_MANUFACTURER_DATA`设置发射功率等级 **实现步骤:** 1. 初始化蓝牙协议栈后调用`settings_load()`[^1] 2. 配置`ble_gap_adv_data_set()`设置主/扫描响应数据 3. 使用`sd_ble_gap_adv_start()`启动广播 4. 通过事件回调处理连接请求 **优化技巧:** - 动态调整广播间隔实现功耗平衡 - 使用白名单过滤扫描请求 - 在定向广播超时后自动切换为非定向模式 **常见问题排查:** 1. 设备不可见:检查`AD Flag`是否包含`LE General Discoverable` 2. 连接失败:确认广播参数与连接参数兼容性 3. 数据截断:验证广告数据总长度不超过31字节
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

冰&可乐

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值