蓝牙学习-SDP

SDP - Service Discovery Protocol

SDP协议提供服务声明和发现远端蓝牙服务。

SDP的服务能力

1,SDP提供的方法

SDP Client方法:
  sdp_client_init
  sdp_client_ready
  sdp_client_register_query_callback
  sdp_client_query
  sdp_client_query_uuid16
  sdp_client_query_uuid128
  sdp_client_service_attribute_search
  sdp_client_service_search
  sdp_client_parse_service_record_handle_list
  sdp_client_deinit

SDP Server方法:
  sdp_init
  sdp_register_service
  sdp_unregister_service
  sdp_get_service_record_handle
  sdp_create_service_record_handle
  sdp_get_record_for_handle
  sdp_deinit

创建和声明SDP记录

SDP记录是一个SDP属性{ID,Value}的列表,这些记录都存在DES(Data Element Sequence)里。属性ID是16bit,属性Value可以是整形,字符串型或者包括另外一个DES。比如若要创建一个SPP记录,调用spp_create_sdp_record,传入一个内存指针来存储这个记录,服务的channle号和记录的名字。创建完不同的SDP记录后,通过sdp_register_service将其们存储在蓝牙协议栈的动态内存中。

注意:SDP记录需要是全局变量,他被蓝牙协议栈一直保存在内存中,所以不能中途被释放。

查询远端的SDP服务内容

通过SDP客户端可以查询远端的蓝牙SDP服务。sdp_client_query创建一个L2CAP链路至远端蓝牙设备。建立连接后,一个Service Search Attribute的请求协同一个Service Search Pattern和Attribute ID List会从客户端发给服务端。服务端会根据请求的属性返回SDP的服务记录列表。这个服务记录列表会被客户端进行解析,解析方法会通过注册的回调发出SDP_PARSER_ATTRIBUTE_VALUE(这个消息会传出属性对应的值)和SDP_PARSER_COMPLETE消息。具体发现步骤如下:

1,蓝牙设备初始化
2,蓝牙协议栈初始化
3,HCI启动
4,等全部启动完毕,蓝牙协议栈查寻远端设备的RFCOMM服务名称和通道号,sdp_client_query_rfcomm_channel_and_name_for_uuid

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • title: android蓝牙了解date: 2017-10-19 10:51:10 categories: a...
    小面包屑阅读 3,852评论 0 3
  • Android之蓝牙驱动开发总结 一[http://blog.csdn.net/manshq163com/arti...
    Wood木木阅读 1,300评论 0 1
  • Android平台支持蓝牙网络协议栈,实现蓝牙设备之间数据的无线传输。本文档描述了怎样利用android平台提供的...
    Camming阅读 3,495评论 0 3
  • 前言 最近在做Android蓝牙这部分内容,所以查阅了很多相关资料,在此总结一下。 基本概念 Bluetooth是...
    猫疏阅读 15,181评论 7 113
  • HW层:蓝牙芯片层 RF(RADIO):射频层,本地蓝牙数据通过射频信号发送给空中设备,并通过射频接收来自空中的蓝...
    集韵增广阅读 6,946评论 0 13

友情链接更多精彩内容