GATT专题

蓝牙在扫描,连接过程中,使用GATT技术吗

直接给你一个最清晰、最准确的结论:

结论

蓝牙在「扫描」和「建立连接」的过程中,完全不使用 GATT。
GATT 是连接建立成功之后才开始工作的上层协议。


详细分层说明(BLE 标准架构)

1. 扫描(Scanning)

  • 工作在:物理层 → 链路层 → HCI
  • 做什么:
    • 监听广播包
    • 获取设备地址、广播数据
    • 判断是否可连接
  • 是否用到 GATT?
    完全不用
    GATT 还没开始工作。

2. 发起连接 / 建立连接

  • 工作在:链路层 → HCI → L2CAP
  • 做什么:
    • 停止扫描
    • 发送连接请求
    • 建立物理链路
    • 加密、配对(可选)
  • 是否用到 GATT?
    仍然不用

3. 连接建立完成之后

才会进入:
ATT → GATT

这时候才开始:

  • 发现服务(Service Discovery)
  • 读特征值
  • 写特征值
  • 订阅通知
  • 数据交互

这些才是 GATT 的工作


用一句话总结流程

广播/扫描 → 建立连接 → 配对/加密 → 启动 GATT → 应用数据交互

  • 扫描、连接阶段:底层链路行为,和 GATT 无关
  • 连接成功后:GATT 才上场,负责业务数据交互

回到你刚才的代码

你那段 check_pending_conn 做的是:

  • 扫描
  • 查找待连接对象
  • 停止扫描
  • 发起连接
  • 设置连接状态

全程都在链路层、HCI 层,没有一行代码和 GATT 有关。


如果你愿意,我可以给你画一张
BLE 从开机 → 扫描 → 连接 → GATT 发现服务
的完整流程图,非常清晰。

posted @ 2026-04-08 22:18  wzm888  阅读(1)  评论(0)    收藏  举报