低功耗蓝牙4.0BLE编程-nrf51822开发(7)-SDP服务发现协议
SDP的全称是Service Discovery Protocol,中文是服务发现协议。SDP(服务发现协议)是蓝牙协议体系中的核心协议,是蓝牙系统重要组成部分,是所有用户模式的基础。在蓝牙系统中.客户只有通过服务发现协议才能获得设备信息、服务信息及服务特征,才能在此基础上建立相互间的连接。通过这个协议,应用程序可以发现哪些服务可用以及服务的特性是什么。
SDP服务器-客户端模型:
客户端通过发送SDP请求给服务器查询服务以及服务的属性。
SERVICE RECORD包含了SDP Server的所有信息,它由一系列的service attributes组成,如图:
service record句柄是32位的数,它在每个service中必须唯一,但在不同service中可以相同。代表服务器本身的句柄值0x00000000在研有SDP服务器上都是有效的。服务记录句柄值保留范围:OxO0000001~0x0000FFFF。
在SDP协议中,一个service records的添加和删除不会通知SDP客户端。当L2CAP连接和SDP服务器建立后,一个service record handle一直有效直到服务器删除了它,客户端的将返回一个无效service handle的错误。
service attribute描述了服务的特性。它由属性ID和属性值组成。属性ID 是一个16位无符号整数,以便区别于服务记录中的其他服务属性。服务类属性由属性ID和属性值组成。属性值是一千长度可变的字段。它的含义由属性记录中枢应的属性ID和服务类确定。
UUID是一个128位无符号整数,但在蓝牙协议栈中仅使用16位,蓝牙uuid的 基数(Bluetooth—Base—uuid),其值为00000000-0000—1000—7007—00805F9B34FB。
如果客户端得到了属性记录句柄,就可以容易得到属性内容。可以使用SDP服务搜索得到服务记录句柄,记录句柄SDP提供了基于UUIDs的服务记录搜索功能,它允许客户获取指定的服务记录旬柄。
服务搜索样本(SDP Pattern)用于确定服务记录是否匹配的UUID一列表。
服务浏览用于查看服务器提供的服务。
低功耗蓝牙4.0BLE编程-nrf51822开发(7)-SDP服务发现协议的更多相关文章
- 低功耗蓝牙4.0BLE编程-nrf51822开发(3)
蓝牙协议栈 nrf51822开发中,蓝牙协议栈和应用开发是分开的. (1)兼容蓝牙4.0低功耗协议栈基带层,L2CAP\AAT\SM\GAP\GATT协议,设备和广播,GATT客户端和服务器,SMP支 ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(9)
Android 4.3以后的系统自动支持蓝牙4.0规范的低功耗蓝牙(BLE).在android4.3之前,蓝牙4.0支持是由手机厂家加入支持的,接口各异,导致开发一个支持蓝牙4.0程序支持市面上的手机 ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(1)
为了省钱,也为了提高手动能力,只买了块核心板,仿真器用的是旧的jinkv7,自己搭扩展板,DIY就这样开始了. 买这块之前做了些调查,最终选定了nrf51822,功耗低,性能强,开发难度小,虽然比TI ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(4)
蓝牙是一种短距离的通讯方式,它设计的意图是取代电子便携设备之间的有线电缆连接.蓝牙的主要特性是健壮性.低功耗.成本低,它工作于免费的2.4无线传输频段. 蓝牙有两种技术系统:基本速率Basic Rat ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(2)
相关下载:http://download.csdn.net/detail/xgbing/9565708 首先看的示例是心率计一个示例程序:<KEIL path> \ARM\Device\N ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(11)-蓝牙串口代码分析
代码实例:点击打开链接 实现的功能是从uart口发送数据至另一个蓝牙串口,或是从蓝牙读取数据通过uart打印出数据. int main(void) { // Initialize leds_init( ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(6)-Battery Service
Battery Service是有关电池特性方面的服务,如果需要它,在初始化时将它加入到蓝牙协议栈. 如果通过ble_bas_battery_level_update(),电池电量将会通知,Batte ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(10)-描述符
特性中的属性有两种:属性值或描述符. 支持通知或指示的特性中默认有一个描述符:客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCC ...
- 低功耗蓝牙4.0BLE编程-nrf51822开发(8)-GATT
The Generic Attribute Profile (GATT)使用属性定义一个服务框架,定义了服务和特性的过程和数据格式,包含发现.读取.写入.通知指示特性和配置特性广播. GATT配置文件 ...
随机推荐
- Android 用adb pull或push 拷贝手机文件到到电脑上,拷贝手机数据库到电脑上,拷贝电脑数据库到手机上
先说一下adb命令配置,如果遇到adb不是内部或外部命令,也不是可运行的程序或批量文件.配置下环境变量 1.adb不是内部或外部命令,也不是可运行的程序或批量文件. 解决办法:在我的电脑-属性-高级计 ...
- sample
sample是在数据源取样. val data = sc.parallelize(1 to 20) data.sample(true,0.4).collect sample第一个参数表示是否是重复抽样 ...
- FZU2215 Simple Polynomial Problem(中缀表达求值)
比赛时没做出这题太可惜了. 赛后才反应过来这就是个中缀表达式求值,数字栈存的不是数字而是多项式. 而且,中缀表达式求值很水的,几行就可以搞定. #include<cstdio> #incl ...
- BZOJ3941 : [Usaco2015 Feb]Fencing the Herd
若所有点同侧则表明将各个点带入直线解析式ax+by-c后得到的值均同号等价于最大值和最小值同号考虑CDQ分治,每一步分治的过程中求出上下凸壳,然后三分答案即可时间复杂度$O(n\log^2n)$ #i ...
- Windows Phone 硬件检测
private static bool IsWvga{ get { return App.Current.Host.Content.ScaleFactor == 100; }} private sta ...
- Vijos 1061 迎春舞会之三人组舞(DP)
题目链接 经典DP问题,通过问题,看出结论,然后倒序,然后注意条件. #include <cstdio> #include <cstring> #include <ios ...
- ibatis插入数据返回ID的方法
ibatis插入数据返回ID的方法 主要就是利用seelctkey来获取这个ID值,但是oracle和mysql的区别还是很大的 oracle的用法 <insert id="inser ...
- iOS开发项目之四 [ 调整自定义tabbar的位置与加号按钮的位置]
自定义tabbar与按钮的添加 01 - 把系统的tabbar用我们自己的覆盖 LHQTabBar *lhqTabBar = [[LHQTabBar alloc]init]; [self setVal ...
- [转帖] CvMat,Mat和IplImage之间的转化和拷贝
原文地址: http://blog.csdn.net/holybin/article/details/17711013 在OpenCV中Mat.CvMat和IplImage类型都可以代表和显示图像. ...
- MHA监控进程异常退出
这两天遇到一个非常诡异的问题,打算和大家分享一下.只所以诡异估计是自己知识面不够吧.线上的MHA一直没有开启自动切换,都是手动切换的,最近开启了自动切换以后,退出securecrt窗口以后发现监控进程 ...