本文深入剖析Bluedroid蓝牙协议栈中 SDP(服务发现协议)服务记录的全生命周期管理流程,涵盖初始化、记录创建、服务搜索、记录删除等核心环节。通过解析代码逻辑与数据结构,揭示各模块间的协作机制,包括线程安全设计、回调机制及协议栈交互细节,为蓝牙服务开发与调试提供系统性参考。
一、概述
蓝牙SDP协议用于设备间服务发现,其实现分为四层:
-
接口层(btif):提供
btif_sdp_get_interface
接口,封装init
、search
、create_sdp_record
等操作。 -
业务逻辑层(BTA):通过
BTA_SdpSearch
、BTA_SdpCreateRecordByUser
派发任务到主线程。 -
协议栈层(Stack):实现SDP数据库管理(
SDP_CreateRecord
、SDP_AddAttribute
)。 -
资源管理层:通过槽