CN / EN
CN / EN

提问

获得支持

您的项目私密技术问题如需获得一对一支持,请点击下方联系我们。

关于使用ble_gap_connect这个API函数 GR551x

已解决

Angelo

2021-09-08 09:15

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

0收藏

0赞成

天狼无星

汇顶员工
2021-09-09 15:15

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

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

0条评论

0赞成

0收藏

您的评论

Angelo

2021-09-09 23:16

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


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

0条评论

0赞成

0收藏

您的评论
最佳答案

天狼无星

汇顶员工
2021-09-13 14:13

我这边猜测的原因是:

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

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

方法:

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

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

1条评论

0赞成

0收藏

您的评论

登录后可回答问题,请 注册

我们时刻倾听您的声音
联系销售

扫描关注公众号

打开微信,使用“扫一扫”即可关注