false

false

EN

关于使用ble_gap_connect这个API函数 【已解决】

Angelo

2021-09-08 09:15:11

我在项目过程中,进行多个设备的连接,偶尔会发现调用ble_gap_connect这个函数,会返回SDK_ERR_DISALLOWED: Operation is disallowed.这个错误码,想请教一下什么情况下会有这种错误呢?我应该怎么避免呢?这个时候是不是协议栈还没有释放资源?多谢!

天狼无星

2021-09-09 15:15:13

(1)请问下你是用的哪个版本的sdk呢? (2)请说明下你发起多次建连的逻辑是怎样的呢 ?

在sdk 1.6.08 之前的版本,如果是在建连完成的callback中发起下一次连接,是会报 SDK_ERR_DISALLOWED这个err的。这个bug我们在1.6.08以及后续的版本上进行了修复。

0条评论

您的评论

Angelo

2021-09-09 23:16:32

你好!我用的是最新的V1.6.10这个版本。现在我的项目是汇顶的方案作为主机,主动扫描从机(Nordic设备),然后发现服务UUID以后发起连接。


就是这个消息处理函数里面调用的。每当出现这个错误的时候就一直错误。

0条评论

您的评论

最佳答案

天狼无星

2021-09-13 14:13:16

我这边猜测的原因是:

(1)环境中除了你的目标设备之外,还有其他广播设备也包含了同样的uuid内容,所以导致你建连时的地址可能不是目标设备的地址。

(2)如果正好在建连时,广播设备突然不在了(比如广播停了,或者下电了),这是就会一直处于发起连接的状态,从而无法发起下一次连接。

方法:

(1)你可以把建连时设置的对端地址打印出来看看,以确定是否会连到其他设备;

(2)你可以配置连接参数的conn_timeout这个字段,配置自动cancel连接的等待时间(单位是10ms), 你可以配置成5s或者10s再试下;

1条评论

您的评论

共 3条记录
1

您的回答