微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于仿写通知特征值simpleGATTprofile中Characteristic4的问题

关于仿写通知特征值simpleGATTprofile中Characteristic4的问题

时间:10-02 整理:3721RD 点击:

求解怎么添加一个带通知的特征值,初始化它是需要做哪些操作

在SimpleBLEPeripheral的simpleGATTprofile中Characteristic4虽然没有读取权限但是在其被修改时会发送通知,使得Central设备能接收到Characteristic4的值。

于是自己仿写,扩展了这个simpleGATTprofile,扩增特征值表的长度,添加了一个新的特征值Characteristic6,UUID为0xfff6,其内容格式模仿Characteristic4,权限全部都是可写+可读。Characteristic4与其他特征值不同之处在于多了一个字段就是Characteristic 4 configuration,所以我的Characteristic6也自己添加了这个字段。其余函数读写函数进行相应的修改,Characteristic6的读写也都没有问题。但是唯独这通知的功能没有实现,即Characteristic6值改变了却不会通知Central,而预置的Characteristic4却没有问题。

我想应该是我的Characteristic 6 configuration的配置有问题请大家看一下问题出在什么地方

static gattCharCfg_t simpleProfileChar6Config[GATT_MAX_NUM_CONN];

// Characteristic 6 configuration
{
{ ATT_BT_UUID_SIZE, clientCharCfgUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8 *)simpleProfileChar6Config
},

请问为什么我在SimpleProfile_SetParameter()设置Char6的case:后添加调用

GATTServApp_ProcessCharCfg( simpleProfileChar6Config, &simpleProfileChar6, FALSE,
simpleProfileAttrTbl, GATT_NUM_ATTRS( simpleProfileAttrTbl ),
INVALID_TASK_ID );

而Central端设备却没有收到通知呢?

我个人是认为是自己定义Characteristic 6 configuration的初始化有问题请问这个应该怎么初始化呢?我是不是漏了什么步骤?

我的初始化simpleProfileChar6Config就是在初始化simpleProfileChar4Config的同样位置后添加相同的内容,

在SimpleProfile_AddService()里的改变

// Initialize Client Characteristic Configuration attributes
GATTServApp_InitCharCfg( INVALID_CONNHANDLE, simpleProfileChar4Config );
GATTServApp_InitCharCfg( INVALID_CONNHANDLE, simpleProfileChar6Config );

在simpleProfile_HandleConnStatusCB()里的改变

GATTServApp_InitCharCfg( connHandle, simpleProfileChar4Config );
GATTServApp_InitCharCfg( connHandle, simpleProfileChar6Config );

Hi chen,

characteristic 4 的 property 被设置成GATT_PROP_NOTIFY, 你的characteristic 6有相应的设置吗?

// Simple Profile Characteristic 4 Properties
static uint8 simpleProfileChar4Props = GATT_PROP_NOTIFY;

另外,notify是要被central 打开之后,pripheral才会发送数据过去,你有在central把characteristic 6的notify 给 enable起来吗?说具体点就是central通过write过程把simpleProfileChar6Config  写成0x0001.

真的太感谢您了,正是由于我自定义的simpleProfileChar6Props设置成GATT_PROP_READ | GATT_PROP_WRITE所以读写功能正常,而通知功能无效。经过修改simpleProfileChar6Props后问题解决。

请教,如何在主机中读取特征值的值并进行处理呢? 是否必须要是通知类型的特征值才可以?如果不是,如何在主机中获得该特征值的句柄呢?

请问:主机怎么用write将simpleProfileChar6Config置1

hi chen.

请问你在cen中如果获得 char6的 handle句柄呢?

simpleProfile_HandleConnStatusCB()      我怎么找不着啊   是自己新加进去的吗  

在编译的时候会提示GATT_MAX_NUM_CONN]    没有定义

请问,要如何配置,才能使得该特性使用“指示/Indication”的功能

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top