ble 读写特征值特征值_BLE添加特征值

一、什么是特征值

特征值就是BLE协议栈向外提供的一个数据接口,蓝牙之间的数据传输终落实在特征值上。在BLE协议栈的GATT层中封装了若干服务(service),而在每一个服务中又有若干特征值(characters),特征值可以是任意类型的数据。蓝牙之间的数据传输靠协议栈提供的write和read函数,而这两个函数就是在操作特征值

二、UUID

UUID就是通用唯一识别码。在蓝牙协议栈中可能会有多个服务,每个服务会有多个特征值,而这些服务或者特征值都有一个唯一的ID,这样就可以区分了。这个UUID是其他设备设置蓝牙服务和特征值的唯一方法。

三、增加特征值

在BLE协议栈中,GATT层定义了特征值和服务。下面就以SimpleBLEPeripheral为例,增加一个特征值。在simpleGATTprofile.c中,已经有定义好的特征值,参考已有的特征值就可以顺利添加自己的特征值

1)修改头文件simpleGATTprofile.h

头文件中定义了特征值的UUID,以及长度和默认值

//特征值UUID

#define SIMPLEPROFILE_CHAR5_UUID            0xFFF5

//特征值长度

#define SIMPLEPROFILE_CHAR5_LEN           5

2)添加特征值相关变量

包括特征值的读写权限、变量名、展现给用户的名字

//特征值初始化

// 特征值属性,读或者写

static uint8 simpleProfileChar6Props = GATT_PROP_READ | GATT_PROP_WRITE;

// 值,可以向其写入数据,也可以读出数据。这里是一个字符数组

static uint8 simpleProfileChar6[SIMPLEPROFILE_CHAR6_LEN] = {0};

// 用户描述,展现给用户的名字

static uint8 simpleProfileChar6UserDesp[17] = "Characteristic 6\0";

//提取uuid,uuid定义在头文件中

CONST uint8 simpleProfilechar5UUID[ATT_BT_UUID_SIZE] =

{

LO_UINT16(SIMPLEPROFILE_CHAR5_UUID), HI_UINT16(SIMPLEPROFILE_CHAR5_UUID)

};

3)将特征值加入属性表

特征值由服务统一管理,所有的特征值都会在一个服务的属性表中呈现出来,每增加一个特征值,它的相关变量就要在添加到属性表中

//特征值初始化

static gattAttribute_t simpleProfileAttrTbl[SERVAPP_NUM_ATTR_SUPPORTED] =

{

<
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值