第五课 利用Profiles的特征值进行无线点灯

2017-4-11

####一、课堂练习

3.7 Profile简单介绍
3.8 simpleGATTProfile及Btool的使用
(a) 底板为CC2540EM(不是USB Dangle)
《TI_BLE_Vendor_Specific_HCI_Guid.pdf》
3.9 利用Profiles的特征值进行无线点灯
(a) SW1控制LED1的亮灭
(b) SW2控制LED2的亮灭

####二、课后练习

以下定义的区别与联系,以及在代码中是如何实现的(数据结构/API):

#####[1] Profile
【1.1】Bluetooth SIG定义了许多profile(配置文件),每一个profile代表一个完整的service或usecase,遵照这些profile的service才能保证在不同的环节下相互沟通、交换资料。
【1.2】API171BF0CD-A50B-4A3C-A76B-ABD4A98849EB.png

#####[2] UUID
【2.1】UUID(Universal Unique Identifier)全球惟一标识符,本来是SIC组织分配给特定蓝牙服务的标识,如分配0x2A25为设备序列号的UUID,这样任意蓝牙设备都可以通过它得到另一个设备的序列号。
打个类比,它就像书名,如《现代操作系统》,所有人一看就知道它是计算机大师Andrew S. Tanenbaum写的书。
【2.2】数据结构
UUID类可表现为短整形(16或32位)和长整形(128位)UUID
cc2540里是16位
【2.3】UUID, 就是用来唯一识别一个特征值的ID.
handle,就是对应的attribute 的一个句柄。
所有对特征值的操作,都是通过对UUID 的搜索得到对应的handle之后,通过handle来操作特征值的。
图片来源于网络

#####[3] handle

  1. Handle(句柄)就是服务数据在数据中心的地址,当所有的服务数据组织起来后,它总得有个先后顺序,某个服务的位置就是它的句柄。
    还是上面的类比,如果想去图书馆借阅《现代操作系统》,需要查明该书在哪一层楼,哪个房间,这就是该书的Hanle。
    1. 那如何知道一个服务的Handle?
      根据服务的UUID调用API函数GATT_ReadUsingCharUUID
      协议栈会返回该服务的Handle。
    2. 数据结构 –地址

#####[4] Characteristic Values
[4.1] 在 GATT 事务中的最低界别的是 Characteristic,Characteristic 是最小的逻辑数据单元,当然它可能包含一个组关联的数据,例如加速度计的 X/Y/Z 三轴值。
[4.2] 数据结构 –UINT8
49790922464CD7FAE59AD10E10D7E4D7.png

#####[5] GATT
GATT 的全名是 Generic ATTribute(通用属性协议),它定义两个 BLE 设备通过叫做 Service 和 Characteristic 的东西进行通信。通用属性配置文件(GATT)在属性协议(ATT)的基础上构建,为属性协议传输和存储数据建立了一些通用操作和框架。
一旦两个设备建立起了连接,GATT 就开始起作用了,这也意味着,你必需完成前面的 GAP 协议。这里需要说明的是,GATT 连接,必需先经过 GAP 协议。图片来源于http://blog.csdn.net/skdev/article/details/48321875
图片来源于http://blog.csdn.net/skdev/article/details/48321875
CE669969D2A0BED78E2ECF4592855FF6.jpg

#####[6] GAP
1.通用访问配置文件(Generic Access Profile, GAP)
GAP是所有其他配置文件的基础,它定义了在蓝牙设备间建立基带链路的通用方法.除此之外,GAP还定义了下列内容:
①:必须在所有蓝牙设备中实施的功能
②:发现和链接设备的通用步骤
③:基本用户界面术语.

区别和联系

BD8BB967-80A5-4290-A6C9-07C8625049AC.png
F4CE63BE-32BD-4FD3-AF33-77AB45F38B61.png