蓝牙SDP剖析(一) 之协议概论

关键字:bluetooth 蓝牙协议  SDP剖析 SDP概述 SDP笔记


作者:zhongjun


本着互相学习的目的,来分享此一系列的文章,欢迎转载,请注明作者,尊重版权,谢谢
文章有不当处请指正,共同学习


另外可以从蓝牙栏目访问我的CSDN:http://blog.csdn.net/XiaoXiaoPengBo/article/category/5998687
------------------------------------------------------------------------------------------------------------------------------------

华丽分割线,进入正题

------------------------------------------------------------------------------------------------------------------------------------


一.概述

The service discovery protocol (SDP) provides a means for applications to 
discover which services are available andto determine the characteristics of 
those available services.
基于C/S结构,service通过属性记录来维护支持的特性
属性记录如图所示:
蓝牙SDP剖析(一) 之协议概论_第1张图片

蓝牙SDP剖析(一) 之协议概论_第2张图片

二.Data Format

蓝牙SDP剖析(一) 之协议概论_第3张图片

PDU ID
蓝牙SDP剖析(一) 之协议概论_第4张图片

具体每个PDU介绍请看下一篇文章:http://blog.csdn.net/xiaoxiaopengbo/article/details/51405733

三.数据元

数据元 一个数据元表示一个打印数据。它由两个段组成:报文头段和数据段。
报文头段又由两部分组成:一个类型描述符和一个尺寸描述符。该数据是一
个字节序列,其长度在尺寸描述符中定义(参见数据尺寸描述符),其含义
由类型描述符(部分)定义
某一些PDU ID的参数是数据元

1.数据元素类型描述符 

数据元类型由5位长的类型描述符代表。数据元头包含在数据元报文头
首字节的最高5位中。下列类型已被定义。
蓝牙SDP剖析(一) 之协议概论_第5张图片

2.数据元尺寸描述符 

数据元尺寸描述符由一个后面紧跟0 、8 、16 、或 32 位的3位尺寸
索引字表示。该尺寸索引字包含于数据元头首字节的最低位中。该尺寸索
引编码如下
蓝牙SDP剖析(一) 之协议概论_第6张图片

举例:

蓝牙SDP剖析(一) 之协议概论_第7张图片

四.Continuation State

它用于一次response不够把所有的Data传回去的情况。这时候需要将response分多次传输,如果一次response足够了,
Continuation State为1个字节=0。
如果要分多次response,需要重新request,采用新的transaction ID和上一次resposne的Continuation State,用以下流程说明。
情况一:不需要Continuation State
A--->B 发送SDP request,transaction ID为C
B--->A 发送SDP respose,transaction ID为C。假设一次resposne可以返回所有数据,则Continuation State为1个字节=0。
情况二:需要Continuation State
A--->B 发送SDP request,transaction ID为C
B--->A 发送SDP respose,transaction ID为C。假设一次resposne不够返回所有数据,这时response携带Continuation State M
A--->B 发送SDP request,transaction ID为D(必须与C不同),携带Continuation State M
B--->A 发送SDP respose,transaction ID为D。假设这次resposne还不够返回所有数据,这时response携带Continuation State N
A--->B 发送SDP request,transaction ID为E,携带Continuation State N
B--->A 发送SDP respose,transaction ID为E。假设一次resposne返回的是最后的一部分数据,则Continuation State为1个字节=0。
整个request-response的流程结束。

你可能感兴趣的:(蓝牙协议剖析)