微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 主机发起连接问题

主机发起连接问题

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

当系统扫描到设备后,调用GAPCentralRole_EstablishLink向从机发起连接,如果从机工作正常则,可以收到连接成功的系统事件GAP_LINK_ESTABLISHED_EVENT。这是正常的情况。

今天遇到一个问题,在主机扫描后,向从机发起连接。但是这时,从机突然断电了,这时主机就一直在发起连接,而且没有任何相应之类的。

而且我再次扫描后向另外一个地址发起连接,GAPCentralRole_EstablishLink返回bleAlreadyInRequestedMode,说明上次发起连接的任务还在进行,我想知道主机对一个设备发起连接后,如果此设备不存在,系统如何处理,针对这种情况有什么比较好的解决办法?

谢谢!

xianbin,

当主机发起连接请求之后,Link Layer会启动一个20秒的timer, 20秒之后会认为连接建立超时失败。

所以你可以等20试试。如果你要修改这个参数,可以调用 GAP_SetParamValue(TGAP_CONN_EST_SUPERV_TIMEOUT,  数字) ; 这个数字的单位是10ms.

或者,你可以启动一个timer, 一定时间后调用 HCI_LE_CreateConnCancelCmd(),来终结连接过程。

在连接失败后是否会产生GAP_LINK_ESTABLISHED_EVENT事件?

还是生成其它事件?

xianbin,

失败之后不会产生GAP_LINK_ESTABLISHED_EVENT事件。

但是你可以加个断点看一下是否会产生GAP_LINK_TERMINATED_EVENT 事件。

谢谢您的答复!

我实验了,不会产生GAP_LINK_ESTABLISHED_EVENT事件。

这样就是说,如果我对一个地址发起连接后,如果连接成功,可以得到 GAP_LINK_ESTABLISHED_EVENT事件。

但是如果失败就没有任何消息,这样就只有自己在应用层开启一个定时器来监测是否连接成功了!

我的理解对吗?

你好,我有个类似的问题,两个已经建立连接的蓝牙设备,从机突然断电了,主机过了好长时间才触发GAP_LINK_TERMINATED_EVENT,这个触发时间是不是可以设置变短?怎么设置?

是啊。我也遇到这样的问题。不知怎么解决? TI的高手帮助一下。多谢!

上层判断超时后调用:

GAPCentralRole_TerminateLink(0xFFFE) ;  //取消当前建立连接过程

后会收到事件:

GAP_LINK_ESTABLISHED_EVENT

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

网站地图

Top