美文网首页
蓝牙学习-SDP

蓝牙学习-SDP

作者: 集韵增广 | 来源:发表于2022-05-05 11:47 被阅读0次

    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

    相关文章

      网友评论

          本文标题:蓝牙学习-SDP

          本文链接:https://www.haomeiwen.com/subject/qwssyrtx.html