微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > 请教一下在BLE中作为slave的设备有没有什么办法能获取当前的连接状态

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

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

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

非常感激有人能指点一下

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

hi WBJ:

           感谢您的回复。

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

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

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

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

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

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

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

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

在GATT层应该会有回调的

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

网站地图

Top