BLE写命令(无响应写)

时间:2016-07-15 11:07:47

标签: bluetooth bluetooth-lowenergy

在蓝牙4.0-4.2规范第3卷第F部分中,我可以找到以下文字:

  

由于收到但无法处理的命令和通知   缓冲区溢出或其他原因,应予以废弃。因此,那些PDU   必须被认为是不可靠的。

我想知道,谁收到了?对于写命令,它是从ATT客户端接收的ATT服务器,还是它也可能是发送方主机的ATT层,它接收从客户端应用程序发送写命令的请求,该命令丢弃了写命令,即它获得在被送到空中之前就掉了下来?

3 个答案:

答案 0 :(得分:1)

空中接口通常受限于可以缓冲连接事件的数据包数量。同上通知与另一方向的指示(服务器到客户端)

答案 1 :(得分:1)

  

"收到的命令和通知......"

命令,例如,写入从客户端到服务器的请求,因此服务器是接收者。过程是客户端向服务器发送写入请求,并且当服务器收到写入请求(首先收到较低层)但发现此写入请求没有缓冲区(或其他原因),它将丢弃写入请求(更高层不会收到写请求)。

通知,而不是从服务器到客户端,因此客户端是接收者。当客户端收到通知但没有缓冲区(或其他原因)时,它将丢弃该通知。 这是关于通信协议的流量控制,而不仅仅是蓝牙。因此,如果您了解流量控制,您可能不会有这种混淆。

答案 2 :(得分:1)

  

我想知道,谁收到了?对于写命令,它是从ATT客户端接收的ATT服务器,

是的,它是ATT服务器。 ATT和GATT都不可靠。但链路层是可靠的。我假设更高层,例如申请应构成可靠性检查。

  

或者它也可能是收件人的发件人主机的ATT层   请求从客户端应用程序发送写入命令,删除   写命令,即在被发送之前它被丢弃   空气?

这不合规格,我认为蓝牙堆栈应该返回相应的错误,例如由于没有记忆,“failer”。