📡本文总结了 BlueNRG-LP v3.x BLE 协议栈 中支持的主要事件,涵盖 GAP、L2CAP、GATT Server/Client 以及 Controller 层事件,可用于开发者在 hci_user_evt_proc()
回调中进行事件解析、状态机驱动和逻辑控制。
🔗 GAP(通用访问配置)模块事件
事件名称 | 事件含义 |
---|---|
HCI_LE_CONNECTION_COMPLETE_EVENT | BLE 连接建立成功 |
HCI_DISCONNECTION_COMPLETE_EVENT | BLE 连接断开 |
HCI_LE_ADVERTISING_REPORT_EVENT | 接收到广播包(扫描模式下) |
ACI_GAP_PROC_COMPLETE_EVENT | 扫描/连接过程完成 |
ACI_GAP_PAIRING_COMPLETE_EVENT | 配对过程完成 |
ACI_GAP_PASS_KEY_REQ_EVENT | 请求用户输入配对 PIN |
ACI_GAP_BOND_LOST_EVENT | Bond 信息丢失,需重新配对 |
🔄 L2CAP(逻辑链路控制和适配协议)模块事件
事件名称 | 事件含义 |
---|---|
ACI_L2CAP_CONNECTION_UPDATE_REQ_EVENT | 从设备请求连接参数更新 |
ACI_L2CAP_CONNECTION_UPDATE_RESP_EVENT | 主设备响应连接参数更新 |
ACI_L2CAP_PROC_TIMEOUT_EVENT | 连接参数更新超时 |
📡 GATT Server(服务端)事件
事件名称 | 事件含义 |
---|---|
ACI_GATT_SRV_ATTRIBUTE_MODIFIED_EVENT | 客户端写入某个属性值(Notify 或 Write) |
ACI_GATT_SRV_READ_EVENT | 客户端请求读取属性(回调处理) |
ACI_GATT_SRV_WRITE_EVENT | 客户端写入属性(回调处理) |
ACI_GATT_SRV_CONFIRMATION_EVENT | 客户端确认收到 Indication |
📲 GATT Client(客户端)事件
事件名称 | 事件含义 |
---|---|
ACI_GATT_CLT_NOTIFICATION_EVENT | 接收到服务端 Notify 数据 |
ACI_GATT_CLT_INDICATION_EVENT | 接收到服务端 Indication 数据 |
ACI_GATT_CLT_PROC_COMPLETE_EVENT | GATT 操作完成(如读、写、发现等) |
ACI_GATT_CLT_ERROR_RESP_EVENT | GATT 操作出错(如读写失败) |
🧩 Controller(控制器)事件
事件名称 | 事件含义 |
---|---|
HCI_HARDWARE_ERROR_EVENT | 硬件异常,可能需复位 BLE 模块 |
HCI_AUTHENTICATED_PAYLOAD_TIMEOUT_EXPIRED_EVENT | 安全链路认证数据超时 |
ACI_HAL_FW_ERROR_EVENT | 协议栈内部错误(需根据参数进一步判断) |
✅ 应用建议
这些事件是构建 BLE 应用逻辑的重要基础,建议你在 hci_user_evt_proc()
回调函数中集中处理,并结合事件驱动的 有限状态机(FSM) 实现模块行为管理。例如:
-
接收
HCI_LE_CONNECTION_COMPLETE_EVENT
后切换至已连接状态; -
接收到
ACI_GATT_SRV_ATTRIBUTE_MODIFIED_EVENT
后解析属性数据; -
ACI_GAP_PAIRING_COMPLETE_EVENT
可结合配对状态更新安全机制。
🧠 结语
掌握这些核心事件,有助于你快速开发稳定可靠的 BLE 应用系统。建议结合 AT 命令系统、URC 通知机制以及状态机进行事件响应处理,构建清晰、可控的架构。
如需进一步了解 FSM 架构设计、事件队列管理与 BLE API 调用,可参考以下推荐文章:
-
《BlueNRG-LP BLE 状态机设计思路》
-
《BLE 协议栈事件驱动机制详解》
-
《嵌入式系统中如何构建事件响应架构》