关于connHandle的问题
hi,各位大神:
最近我想使用Notification的方式通信,在编写程序的过程中遇到几个函数,比如:
bStatus_t GATT_Notification( uint16 connHandle, attHandleValueNoti_t *pNoti,uint8 authenticated );
uint16 GATTServApp_ReadCharCfg( uint16 connHandle, gattCharCfg_t *charCfgTbl );
bStatus_t GATT_WriteCharValue( uint16 connHandle, attWriteReq_t *pReq, uint8 taskId );
这几个函数里面都有一个参数connHandle,我一直没有搞明白这个参数到底是什么含义,应该如何获取?
如果我定义的Profile Attributes - Table如下:
static gattAttribute_t AttrTbl[SERVAPP_NUM_ATTR_SUPPORTED] =
{
/* Service*/
{
{ ATT_BT_UUID_SIZE, primaryServiceUUID },
GATT_PERMIT_READ,
0,
(uint8 *)&accelService
},
/* Declaration*/
{
{ ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ,
0,
&TimeCharProps
},
/* Value*/
{
{ ATT_BT_UUID_SIZE, TransmitTimeUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8 *)&DeviceTime
},
/* configuration*/
{
{ ATT_BT_UUID_SIZE, clientCharCfgUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8 *)TimeConfigCoordinates
},
/* Declaration*/
{
{ ATT_BT_UUID_SIZE, characterUUID },
GATT_PERMIT_READ,
0,
&DataNOTICharProps
},
/* Value*/
{
{ ATT_BT_UUID_SIZE, TransmitMACUUID },
0,
0,
(uint8 *)(&SendData)
},
/* configuration*/
{
{ ATT_BT_UUID_SIZE, clientCharCfgUUID },
GATT_PERMIT_READ | GATT_PERMIT_WRITE,
0,
(uint8 *)DataNOTIConfigCoordinates
},
}
编程时为了使能peripheral的notification来上传Data,我想在central中将我上面定义的data特性的congfiguration值写入0x0001,那么我需要调用GATT_WriteCharValue函数,此时connHandle应该是多少或者怎么得到?如果我已经使能notification,那么我在调用GATT_Notification时,这里的connHandle又应该是多少?
蓝牙支持组网,一个主设备连接多个从设备,connhandle就是连接号,从而区分不同从设备。
hi,cedar_xuesong:
谢谢你的回复!
那connhandle与特性的handle有什么联系吗?还有就是如何获取handle?
connhandle上面已经解释过了。特征值的handle,你可以理解成数组索引值,获取到一个handle,就能操作这个特征值进行读写操作,也能通过handle+1来获取下一个数据元素,然后读写特定值,典型用途是使能notify功能。 connhandle是设备之间的概念;handle是设备内部的属性,很多信息,可以看蓝牙规范中的gatt部分
connHandle 相关文章:
- When in a BLE connection,how can I get the "connHandle"?
- GATT_DiscPrimaryServiceByUUID( simpleBLEConnHandle, uuid, ATT_BT_UUID_SIZE,simpleBLETaskId );
- GATT_Notification(connHandle, ¬i, FALSE)这个函数怎么用?
- 关于GATT_indicate以及GAPROLE_CONNHANDLE
- 关于GATT_DiscAllPrimaryServices ( uint16 connHandle, uint8 taskId )