微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 关于GATT_ReadCharValue 命令的回复

关于GATT_ReadCharValue 命令的回复

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

如题,当我使用BTool 给设备的 UUID 0x2902 的 UUID Description (Client Characteristic Configuration)发送 GATT_ReadCharValue 命令时,BTool读取到的数据一直为 00:00   。 

问题:此返回值的意义?此返回值是否可以设置? 及如何设置?   请知道的朋友给个思路? 

你好,

这个值是让你订阅notification与否。

如果你订阅,每次service值改变就通知client去读取。

你可以参考

软件设置如下所示:

第一在SimpleProfile_AddService函数里面高亮部分:

bStatus_t SimpleProfile_AddService( uint32 services )
{
uint8 status;

// Allocate Client Characteristic Configuration table
simpleProfileChar4Config = (gattCharCfg_t *)ICall_malloc( sizeof(gattCharCfg_t) *
linkDBNumConns );
if ( simpleProfileChar4Config == NULL )

return ( bleMemAllocError );
}

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

if ( services & SIMPLEPROFILE_SERVICE )
{
// Register GATT attribute list and CBs with GATT Server App
status = GATTServApp_RegisterService( simpleProfileAttrTbl, 
GATT_NUM_ATTRS( simpleProfileAttrTbl ),
GATT_MAX_ENCRYPT_KEY_SIZE,
&simpleProfileCBs );
}

2在

bStatus_t SimpleProfile_SetParameter( uint8 param, uint8 len, void *value )函数里面:

case SIMPLEPROFILE_CHAR4:
if ( len == sizeof ( uint8 ) ) 
{
simpleProfileChar4 = *((uint8*)value);
//One choice
// See if Notification has been enabled
GATTServApp_ProcessCharCfg( simpleProfileChar4Config, &simpleProfileChar4, FALSE,
  simpleProfileAttrTbl, GATT_NUM_ATTRS( simpleProfileAttrTbl ),
// INVALID_TASK_ID, simpleProfile_ReadAttrCB );
// the other choice
dValue = GATTServApp_ReadCharCfg( notify_Handle, simpleProfileChar4Config );//读出CCC的值 

static attHandleValueNoti_t pReport;
if ( dValue & GATT_CLIENT_CFG_NOTIFY ) //判断是否打开通知开关,打开了则发送数据 

pReport.handle = simpleProfileAttrTbl[11].handle; 
pReport.len = 1; 
//osal_memcpy( pReport.pValue, &simpleProfileChar4, len); //数据 
pReport.pValue[0] = simpleProfileChar4; 
GATT_Notification( notify_Handle, &pReport, FALSE ); 

}
else
{
ret = bleInvalidRange;
}
break;

不错,谢谢分享。

hi kqian0327 ! 谢谢您的解答。

我还有二个问题不是很明白:

1> 当我写入[01:00]时,Notify 功能是开启了,但此时去读取该值,取得该值仍然为[00:00];  此值是固定值? 还是可自定义?

2> 如下图所示,从其他模块取的初始值为[01:00];且写入跟读取对应,即写入[00:00]读取到的值为[00:00]。请问应该如何操作?

   谢谢!

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

网站地图

Top