This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 从 UUID 获取句柄是否存在任何陷阱?

Guru**** 2577385 points
Other Parts Discussed in Thread: CC2541

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/565951/is-there-any-trap-on-getting-handle-from-uuid

主题中讨论的其他器件:CC2541

有一 个固定的 SimpleBLEPeripheral 器件、我使用 BTool 对其进行测试并成功获取句柄。

----------------------------------------
[61]: - 11:12:00.456
-类型 :0x04 (事件)
-EventCode :0x00FF (事件)
-数据长度:0x0E (14)字节
事件 :0x0509 (1289)(ATT_ReadByTypeRsp)
状态 :0x00 (0)(成功)
ConnHandle :0x0000 (0)
Pdualen :0x08 (8)
长度 :0x07 (7)
句柄 :0027
数据 :12:28:00:F6:36
转储(Rx):
0000:04FF 0E 0905000008072700122800F6...... '..(..
0010:36 6
---------------------------------- 

然后、我编写了一个基于 SimpleBLECentral 的应用、并刚刚修改了密钥和 LCD 部分。

#if 1
//简单配置文件服务 UUID
#define SIMPLEPROFILE_SERV_UUID 0xFEE7

//按键 UUID
#define SIMPLEPROFILE_CHAR1_UUID 0x36F5
#define SIMPLEPROFILE_CHAR2_UUID 0x36F6
#define SIMPLEPROFILE_CHAR3_UUID 0x36F7
#define SIMPLEPROFILE_CHAR4_UUID 0x36F8
#define SIMPLEPROFILE_CHAR5_UUID 0x36F9
#else
//简单配置文件服务 UUID
#define SIMPLEPROFILE_SERV_UUID 0xFFF0

//按键 UUID
#define SIMPLEPROFILE_CHAR1_UUID 0xFFF1
#define SIMPLEPROFILE_CHAR2_UUID 0xFFF2
#define SIMPLEPROFILE_CHAR3_UUID 0xFFF3
#define SIMPLEPROFILE_CHAR4_UUID 0xFFF4
#define SIMPLEPROFILE_CHAR5_UUID 0xFFF5
#endif 

当我运行该程序时、它停留在 GATT_ReadUsingCharUUID 上、

A.联系是成功的

b.可以运行到、

//如果过程完成
if ((pMsg->method =ATT_find_BY_TYPE_value_RSP &&)
pMsg->HDR.status == bleProcedureComplete )||
(pMsg->method == ATT_ERROR_RSP))
{
if ( simpleBLESvcStartHdl !=0 )
{
//发现特征
simpleBLEDiscState = BLE_DISC_State_char;

REQ.startHandle = simpleBLESvcStartHdl;
REQ.endHandle = simpleBLESvcEndHdl;
REQ.TYPE.Len = ATT_BT_UUUART_SIZE;
REQ.TYPE.uuid[0]= LO_UINT16 (SIMPLEPROFILE_CHAR1_UUID);
REQ.TYPE.uuid[1]= HI_UINT16 (SIMPLEPROFILE_CHAR1_UUID);

GATT_ReadUsingCharUUID (simpleBLEConnHandle、&req、simpleBLETaskId);
}
}

c.但无法 接收下一条 ATT_READ_BY_TYPE_RSP 消息

否则,如果( simpleBLEDiscState == BLE_DISC_State_char )
{
//找到特征,存储句柄
if (pMsg->method =ATT_READ_BY_TYPE_RSP &&
pMsg->msg.readByTypeRsp.numPairs >0)
{
simpleBLECharHdl = Build_UINT16 (pMsg->msg.readByTypeRsp.pDataList[0]、
pMsg->msg.readByTypeRsp.pDataList[1]);

dump_string ("Simple Svc found"、HAL_LCD_LINE_1);
simpleBLEProcedureInProgress = false;
}

simpleBLEDiscState = BLE_DISC_State_IDLE;


} 

从 UUID 获取句柄是否存在任何陷阱?

我的平台是 CC2541。

是否有任何解决方案?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请提供监听器日志吗?

    您是否说过在简单 BLE 中心对手柄进行硬编码?