CC2640之添加一个自定义的特性值
来源:互联网 发布:mac能玩什么网游 编辑:程序博客网 时间:2024/06/07 20:40
测试环境
协议栈版本:BLE-STACK V2.1
IAR开发环境版本:IAR for Arm 7.40
硬件设备:Amo-SmartRF v2.0 开发板(对应TI官方的SmartRF06EB 开发板)
示例测试Demo工程:simpleBLEPeripheral工程
添加自定义特征值
我们今天一起来了解下,如何在一个现有的profile中添加一个自定义的特征值,而且该特征值具有读、写和通知权限。下面的讲解中,我们以“simpleBLEPeripheral”工程为例,来了解如何在其现有的profile中,添加一个具有读、写和通知功能的特征值char6。
首先,我们先了解下“simpleBLEPeripheral”工程原有的服务和特征值,该工程本身有4个服务,其中“Simple Profile Service”服务是我们可以添加自定义特征值的,该服务本身有5个特征值,UUID分别为FFF1,FFF2,FFF3,FFF4,FFF5,下面我们来实际看一下如何添加一个特征值char6,UUID为FFF6。
1.在“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\Profiles\SimpleProfile”目录下找到“simpleGATTprofile.h”文件,我们先在这个文件中定义我们要添加的新的特征值的一些声明:
2.在“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\Profiles\SimpleProfile\CC26xx”目录下找到“simpleGATTprofile.c”文件。
(1)在该文件全局变量声明UUID的地方,声明我们新添加的特征值的UUID:
(2)在该文件内部变量声明的地方,声明一下我们要添加的新特征值char6的相关变量:
(3)在该Profile的属性表
“static gattAttribute_t simpleProfileAttrTbl[SERVAPP_NUM_ATTR_SUPPORTED] =”
中添加char6相关配置,添加的代码如下:
上面代码注释上的标号,是我自己标的,也就是属性表数组的下标,注意是从0开始,上述注释的下标就跟我之前头文件中定义的SIMPLE_MEAS6_VALUE_POS和SIMPLE_MEAS6_CCC_POS的值相对应。
因为增加了这4个数组成员,所以属性表“SERVAPP_NUM_ATTR_SUPPORTED”的值需要由原来的17修改为21,如下:
(4)新添加的特征值char6具有通知功能,所以,我们需要在“SimpleProfile_AddService”函数中进行相应的初始化配置操作:
(5)“SimpleProfile_SetParameter”方法中参考其他特征值的配置,添加如下代码:
(6)“SimpleProfile_GetParameter”方法中参考其他特征值的配置,添加新特征值的相关配置:
(7)“simpleProfile_ReadAttrCB”函数是调用读之后的回调函数,在其中添加新特征值的相应处理:
(8)“simpleProfile_WriteAttrCB”函数是调用写操作之后的回调函数,在其中添加新特征值的相应处理:
(9)我们在该文件中封装一个通过通知功能发送数据的接口函数,源码如下:
打开“C:\ti\simplelink\ble_cc26xx_2_01_00_44423\Projects\ble\Profiles\SimpleProfile”目录下的“simpleGATTprofile.h”文件,在其中添加该通知功能接口的声明,便于外部调用:
3.经过上面的配置,我们就在Profile中添加了自定义的特征值char6,下面我们在应用文件中添加测试程序,进行相应测试。
(1)定义两个内部变量,通知功能使用的变量以及连接句柄的变量:
(2)在初始化函数“SimpleBLEPeripheral_init”中对新添加的特征值char6进行初始化:
(3)在连接成功的回调函数“SimpleBLEPeripheral_processStateChangeEvt”中添加连接句柄获取的代码:
截图如下:
(4)然后,在写操作回调函数“SimpleBLEPeripheral_processCharValueChangeEvt”中添加char6写操作之后的处理代码:
(5)最后在定期执行的事件中添加通知功能发送数据的操作代码,为了便于测试,我们直接在“SimpleBLEPeripheral_performPeriodicTask”定时执行的函数中将之前的函数内容屏蔽掉,添加如下测试代码:
通过上面的应用层设置和调用,我们就可以烧录到板子中通过手机的BLE测试工具进行连接测试了,通过测试,配置正确,大家可以试一下。
- CC2640之添加一个自定义的特性值
- CC2640之添加一个自定义的特性值
- 【BLE-CC2640】CC2640之添加自定义服务
- CC2640之添加自定义服务
- BLE-CC2640之添加自定义服务
- 【BLE-CC2640】CC2640之使用自定义128bit的UUID
- 【BLE-CC2640】CC2640之自定义按键
- 【BLE-CC2640】CC2640之自定义周期事件
- cc2640调试经验之 串口添加
- cc2640调试经验之 I2C驱动添加
- CC2640之TIRTOS添加IIC配置
- 【BLE-CC2640】CC2640之LED
- 【BLE-CC2640】CC2640之按键
- 【BLE-CC2640】CC2640之串口
- 【BLE-CC2640】CC2640之RTC
- 【BLE-CC2640】CC2640之OLED
- 【BLE-CC2640】CC2640之bootloader
- 【BLE-CC2640】CC2640之SNV
- 解决nextSibling.nodeValue取不到checkbox后文本内容的问题
- Laravel 调用快递100 进行实时快递查询和物流订阅
- 学习组播原理
- 二进制文件操作-存储与读取
- TestNg安装与使用
- CC2640之添加一个自定义的特性值
- 使用Spring中配置的数据库,来再创建一个数据库
- jq操作radio、checkbox
- slice 切片删除 panic: runtime error: slice bounds out of range
- Spring boot画面传値给controller
- 服务器隐藏IP之阿里云盾篇
- 第2章 Django 速成:构建一个Blog:
- HDU3062
- K个最近的点