完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
一个Profile中可包含一个或者多个服务;
一个服务可包含一个或者多个特性(逻辑上的集合); 一个特性至少包含两个属性条目:一个用于声明,其他用于存储属性值。 一个属性条目包含 handler、type、permissions、uuid 一、profile(简介) profile是一个大家经常见到的英文单词,但是总感觉领会不到这个词的内涵。Profile,英文本义就是脸的侧面轮廓,这里大家一定要注意,脸的轮廓不等于脸本身(脸本身是非常复杂和细致的),但profile本身是对脸的一种抽象,描述和定义,蓝牙核心规范其实也是使用profile这个引申意义而已,换句话说,蓝牙的profile跟英文字典中的profile是同一个意思,意义基本接近。要定义蓝牙,必须要有一个规范,这就是蓝牙核心规范V4.2/V5.0/V5.1……蓝牙规范非常复杂和庞大,大部分蓝牙设备只实现了蓝牙规范中很少一部分,那么没有实现的这些规范对这个蓝牙设备来说能不能称为规范?当然不能!所谓规范或者规格,就是强制的,就必须实现。针对这种情况,profile可以很好地应对。我们把蓝牙某部分规范称为profile,这个profile如果设备要实现它,那么它就是强制的;如果设备不用它,也没关系,这就是profile。基于此,我们可以把profile翻译成子规范或者条件规范或者剖面规范。 “蓝牙规范包含很多子规范”,这句话用中文说问题不是很大,但是你把它翻译成英文,那就难了!这就是英文需要用profile的原因(而不是spec),以及为什么profile在规范中出现的如此频繁。 一个profile文件可以包含一个或者多个服务,一个profile文件包含需要的服务的信息或者为对等设备如何交互的配置文件的选项信息。设备的GAP和GATT的角色都可能在数据的交换过程中改变,因此,这个文件应该包含广播的种类、所使用的连接间隔、所需的安全等级等信息。 需要注意的是: 一个profile中的属性表不能包含另一个属性表。 二、Service(服务) 一个服务包含一个或多个特性,这些特性是逻辑上相关的集合体。 GATT服务一般包含几块具有相关的功能,比如特定传感器的读取和设置,人机接口的输入输出。组织具有相关的特性到服务中既实用又有效,因为它使得逻辑上和用户数据上的边界变得更加清晰,同时它也有助于不同应用程序间代码的重用。GATT基于蓝牙技术联盟(SIG)官方而设计,SIG建议根据它们的规范设计自己的profile。 在蓝牙规格中,每一个具体的蓝牙应用是由多个service组成的,而每一个service又是由多个characteristic组成的 三、Characteristic(特征数据) Characteristic 特征值,BLE 主从机的通信均是通过 Characteristic 来实现,可以理解为一个标签,通过这个标签可以获取或者写入想要的内容。 对特征的定义和描述。是Characteristic通信实现的细节。 其中特性中的属性条目有两种:属性值或描述符。任何在特性中的属性条目不是定义为属性值就是为描述符。 属性值:包含 特征的声明(Characteristic Declaration)条目、特征的值(Characteristic Value)条目 一个特性至少包含2个属性条目(也即属性值必须要有,而描述符根据需要可选):一个属性条目用于声明(Characteristic Declaration),一个属性条目用于存放特性的值(Characteristic Value)。 描述符:包含 特征的客户配置(Client Characteristic Configuration)条目、特征的用户描述(Characteristic User Description)条目描述符是一个额外的属性以提供更多特性的信息,它提供一个人类可识别的特性描述的实例。 然而,有一个特别的描述符值得特别地提起:客户端特性配置描述符(Client Characteristic Configuration Descriptor,CCCD),它的UUID是0x2902,这个描述符是给任何支持通知或指示功能的特性额外增加的。 在CCCD中写入“1”使能通知功能,写入“2”使能指示功能,写入“0”同时禁止通知和指示功能。 如果属性值的许可(permissions)含有通知或通知时,特性中的属性中需要有客户端特性配置描述符(CCCD)条目。用户描述(Characteristic User Description)条目可有可无的。 一个特性中的属性条目之间的关系:Characteristic Declaration 条目中只是说明property 属性, 而Characteristic Value条目则直接指明了这个值能被“允许” 干嘛。Client Characteristic Configuration条目 才是真正说明我这个值是可以被“notify”的,配置成开启/禁止通知,Characteristic Declaration条目 只是说明属性。总之,1(Characteristic Declaration)条目 以只是”Declare“ 一下而已,具体做事的还是后面的2、3条目。 四、属性条目 属性的定义是这样的
1、句柄(Handle) Handle: 其实上面那张属性表,在程序里只是一个数组而已,所以Handle这个值其实我们是不需要专门去存的,他只是一个索引而已。 这是基本的属性条目在表中的索引。每个属性都有一个独一的句柄 2、类型(type) Type:属性的类型,也即UUID ,蓝牙标准组织已经对UUID进行了分类。 如上表中,服务的Type就是0X2800,所以每到一个服务,就会有一个Type类型为0x2800的属性出现。 而特征值Declaration 的Type就是0x2803。至于特征值Value的Type可以是用户自定义的。 ·这个用来说明属性条目数据代表的意思。经常是作为UUID(universal unique Ididentifier)的。这其中的一些是Bluetooth-SIG定义的一些是用户的。 3、许可(permissions) Permission:属性的访问权限,一般有Read、Write、 notifications、 indications。这个会强制一个GATT客户端设备是否和怎样访问属性条目的值。 4、值(Value) Value:属性的值 最长可达512字节 |
|||
|
|||
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2955 浏览 16 评论
3455 浏览 1 评论
8987 浏览 16 评论
4050 浏览 18 评论
1102浏览 3评论
570浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
568浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2301浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1857浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 01:00 , Processed in 1.153444 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号