hi,
当前我在调试一个遥控,只控制central的连接与断开。是这样处理的:
peripheral发起广播,central请求连接,连接成功后,peripheral主动断开连接。
但是我遇到一个问题:
当距离稍远并且中间有某些杂物阻隔的时候,peripheral能够连接成功,但是,peripheral主动断开连接后,有时候因为无法收到GAPROLE_WAITING这个通知,在之后的20s内,无法再次发起连接。
求解决思路,十分感谢。
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.
hi,
当前我在调试一个遥控,只控制central的连接与断开。是这样处理的:
peripheral发起广播,central请求连接,连接成功后,peripheral主动断开连接。
但是我遇到一个问题:
当距离稍远并且中间有某些杂物阻隔的时候,peripheral能够连接成功,但是,peripheral主动断开连接后,有时候因为无法收到GAPROLE_WAITING这个通知,在之后的20s内,无法再次发起连接。
求解决思路,十分感谢。
经过调试,我发现是无法收到GAPROLE_WAITING通知消息,而在20s后产生了GAPROLE_WAITING_AFTER_TIMEOUT消息。。
我希望GAPROLE_WAITING通知消息接收不成功的情况下,直接可以重新开始广播。我这里使用的是按键。
从目前来看应该是timeout时间问题。
不知这个时间该如何调整?
可以使用按键产生中断处理消息 然后处理中断把设备置于Advertise状态
有关timeout可以尝试修改
// Supervision timeout value (units of 10ms, 1000=10s) if automatic parameter update request is enabled
#define DEFAULT_DESIRED_CONN_TIMEOUT 1000
刚调试了,貌似在这段时间里我启动广播是无法广播的。
参数更新请求我关闭了,这个修改了有效果?
请问您是用
GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable );
函数去设置广播的吗?
jianxiong,
这个超时是必须的, 就是用在信号不太好的情况下, 给对方一点时间, 但是这个supervision timeout的时间可以修改.
你可以试一下WBJ说的方法.
把参数更新请求打开, 然后照WBJ说的去修改一下.
还在吗、
从机主动断开连接是哪个函数?当主机和从机连接后,从机怎么设置断开连接?
你好,请问一下,如果是从机接到GAP_LINK_TERMINATED_EVENT的信号,怎样断开从机这边的连接?即是被动断开。用GAPRole_TerminateConnection行吗?
发现此时notify还是使能的,没有复位。谢谢!
YAN,你好!新手求助,希望得到你的回复。 不知道怎样从机断开连接?即主机发出断开连接信号,从机收到GAP_LINK_TERMINATED_EVENT,然后怎样处理,才可以将从机这边的连接断开,notify也复位为0,不再发送数据了?非常感谢!