微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 主机通过UUID请求获取对应的Handle

主机通过UUID请求获取对应的Handle

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

Hello 大家好!

    我又有问题向大家咨询了:

    simpleBLECentral工程中的 simpleBLEGATTDiscoveryEvent()函数里头有这么一段代码:

if ( ( pMsg->method == ATT_FIND_BY_TYPE_VALUE_RSP && pMsg->hdr.status == bleProcedureComplete ) ||( pMsg->method == ATT_ERROR_RSP ) )

{                       //第一段程序
if ( simpleBLESvcStartHdl != 0 )
{
// Discover characteristic
simpleBLEDiscState = BLE_DISC_STATE_CHAR;
req.startHandle = simpleBLESvcStartHdl;
req.endHandle = simpleBLESvcEndHdl;
req.type.len = ATT_BT_UUID_SIZE;
req.type.uuid[0] = LO_UINT16(SIMPLEPROFILE_CHAR1_UUID);
req.type.uuid[1] = HI_UINT16(SIMPLEPROFILE_CHAR1_UUID);

GATT_ReadUsingCharUUID( simpleBLEConnHandle, &req, simpleBLETaskId );//通过UUID请求读取对应的handle?

}

}

else if ( simpleBLEDiscState == BLE_DISC_STATE_CHAR )//第二段程序
{
// Characteristic found, store handle
if ( pMsg->method == ATT_READ_BY_TYPE_RSP &&
pMsg->msg.readByTypeRsp.numPairs > 0 )
{
 simpleBLECharHdl = BUILD_UINT16( pMsg->msg.readByTypeRsp.dataList[0],
pMsg->msg.readByTypeRsp.dataList[1] );//读取上段程序请求得到的handle

LCD_WRITE_STRING( "Simple Svc Found", HAL_LCD_LINE_1 );
simpleBLEProcedureInProgress = FALSE;
}
simpleBLEDiscState = BLE_DISC_STATE_IDLE;

}

看了资料,我的理解大概就是在第一段程序中 发出获取《 UUID 为SIMPLEPROFILE_CHAR1_UUID的特征值》  对应的Handle 的请求。

而在第二段程序,则读取得到的Handle。

不知道我的理解对吗?

我自己也做了测试,程序的运行流程是先执行完第一段程序,过一小段时间后才跑到第二段程序。

另外,我尝试读取SIMPLEPROFILE_CHAR3_UUID的handle,便将SIMPLEPROFILE_CHAR1_UUID更改为SIMPLEPROFILE_CHAR3_UUID

发现跑完第一段程序(请求读取handle)后,便没有跑到第二段程序了(获取handle)——没响应了么。。。

我这么做是不是缺少了哪个步骤?为什么无法获取SIMPLEPROFILE_CHAR3_UUID对应的handle呢?

求助!

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

网站地图

Top