器件型号: CC2651R3
尊敬的团队:
我使用的是器件到器件连接的 BLE 多角色示例
设置详细信息:
-
SDK:
simplelink_cc13xx_cc26xx_sdk_7_10_02_23 -
示例:
ble5stack/multi_role
我的要求是 在建立链路后立即开始配对和 GATT 服务发现 以事件驱动的方式驱动、而不使用任何基于时钟/计时器的延迟。
当前实现方式:
在中multi_role_processGapMsg()、GAP_LINK_ESTABLISHED_EVENT我启动设备到设备链接的配对和服务发现。
服务发现从 MTU 交换开始:
发现问题
-
devi 的配对成功完成 CE 至器件 相匹配
-
服务发现 失败 当连接后自动触发时
-
GATT API 返回:
-
BLE_NOT_READY或 -
BLE_PENDING
-
不过:
-
IF I 配对后通过 UART 命令手动触发服务发现 、发现工作正常
-
相同的连接、相同的对等器件、相同的逻辑→ 无错误
我已经尝试过的
-
触发发现自:
-
GAP_LINK_ESTABLISHED_EVENT -
multi_role_processPairState()在以下条件下:-
GAPBOND_PAIRING_STATE_COMPLETE -
GAPBOND_PAIRING_STATE_BOND_SAVED
-
-
-
事件驱动和基于回调的机制(无轮询)
-
确保开始发现 仅在配对完成后 对于 M2M 链路
在所有自动情况下:
-
发现返回
BLE_PENDING -
或无法正确进行
约束
可以了 不会 使用任何一种 基于时钟/计时器的延迟处理程序
问题
-
这是 A 已知限制或问题 我们在多角色示例中看到了这一点 连接供电 ?
-
是否有 特定的事件或状态 BLE 栈在哪里保证 GATT 为服务发现做好准备?
-
是否存在必须在偏差到偏差方案中显式检查的内部依赖关系(例如 ATT/GATT 队列,加密完成)?
-
为什么会这样 UART 触发发现成功 、而在相同的 M2M 连接中自动发现失败?
请提供任何指导或建议的方法。
提前感谢。
—Vikas