TI中文支持网
TI专业的中文技术问题搜集分享网站

请教一下在BLE中作为slave的设备有没有什么办法能获取当前的连接状态

协议似乎并没有定义HCI层对连接状态的访问,对于master发送的空包的作用也描述得不太清楚。

非常感激有人能指点一下

Barbara Wu:

连接状态在上层的app层里面可以看到peripheralStateNotificationCB 这个函数里

yang jun1:

回复 Barbara Wu:

hi WBJ:

           感谢您的回复。

           看起来是peripheralStateNotificationCB通过修改全局变量gapProfileState管理连接状态。

           对于连接状态时,master不断发送给slave的空包应该怎么理解?是master为了维持连接状态的手段吗?

           这个空包是在slave的L2CAP层响应的吗?

Rain Tian:

回复 yang jun1:

你的问题应该是指的主从机之间进行的“连接事件”,主从机连接参数有一个叫做连接间隔(ConnInterval),即主从双方每隔一定时间后需要进行一次“握手”,主机发送一个握手请求,从机应答,若超出一定时间(即监督超时Supervision Timeout)没有握手,则判定为蓝牙连接断开(掉线)

yang jun1:

回复 Rain Tian:

Dear Rain Tian:                 十分感谢您的回复,确实如你所说,空包间的时间间隔是ConnInterval*1.25ms,主从每隔这个时间进行“握手”。

                  这里还有一些疑问,握手包对于master来说是APP层定时给出的吗?对于slave来说是哪一层应答的呢?             

Rain Tian:

回复 yang jun1:

握手包的发送和应答是协议栈自动完成的,且未应答主机会自动Retry,不需要人为干预

Rain Tian:

回复 yang jun1:

另外,想请教一下:从机的Indication发送出去后,Peripheral在哪里可以知道Central有没有应答?有没有置位某个事件或者产生什么回调还是其他什么?我一直没有找到

Barbara Wu:

回复 Rain Tian:

在GATT层应该会有回调的

赞(0)
未经允许不得转载:TI中文支持网 » 请教一下在BLE中作为slave的设备有没有什么办法能获取当前的连接状态
分享到: 更多 (0)