Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bluetooth 何时/如何在物理层上发送BLE GATT通知/指示_Bluetooth_Bluetooth Lowenergy_Bluetooth Gatt - Fatal编程技术网

Bluetooth 何时/如何在物理层上发送BLE GATT通知/指示

Bluetooth 何时/如何在物理层上发送BLE GATT通知/指示,bluetooth,bluetooth-lowenergy,bluetooth-gatt,Bluetooth,Bluetooth Lowenergy,Bluetooth Gatt,我阅读了蓝牙核心规范V4.2/BLE 连接状态下的通信始终由主设备启动,从设备随后返回数据。 这里的主机是一个GATT客户机,与GATT服务器外围设备通信 我不理解GATT的功能,当主机在发送数据之前总是需要请求时,它如何通过下层工作 有人知道它是怎么工作的吗 BLE是时隙的。在连接状态下,存在周期性发生的连接事件,其间隔称为connectionInterval 每个连接事件都由主机启动,这意味着主机在连接事件中发送第一个数据包 为了保持连接的有效性,从机必须发送一个数据包,并至少在每个监控超时

我阅读了蓝牙核心规范V4.2/BLE

连接状态下的通信始终由主设备启动,从设备随后返回数据。 这里的主机是一个GATT客户机,与GATT服务器外围设备通信

我不理解GATT的功能,当主机在发送数据之前总是需要请求时,它如何通过下层工作


有人知道它是怎么工作的吗

BLE是时隙的。在连接状态下,存在周期性发生的连接事件,其间隔称为connectionInterval

每个连接事件都由主机启动,这意味着主机在连接事件中发送第一个数据包

为了保持连接的有效性,从机必须发送一个数据包,并至少在每个监控超时时得到一次确认。无论如何,还有其他超时会使从属设备在此之前做出响应,其中之一是从属状态,即从属设备在必须响应主设备之前可以忽略的连接事件数,即使不响应不是断开连接的原因,也会导致协议中的其他问题,从而断开连接。另一方面,主服务器应该在每个连接事件上发送一个数据包

connectionInterval、slaveLatency和supervisionTimeout是规范中连接参数的计时部分。连接间隔范围为7.5 ms到4秒,slaveLatency范围为0,然后slaveLatency应在每个连接事件上响应与supervisionTimeout/2对应的连接事件数。完整定义见6.B.4.5.1

因此,基本上,任何有效负载(包括GATT通知)都会在从机或主机的堆栈缓冲区中排队,直到下一个连接事件发生。无论从站到主站或从站到主站的方向如何,参与方都必须等待下一个连接事件发送其数据包

在给定的连接事件中,每一方依次发送一个数据包,可以选择不发送任何有用的有效负载,直到没有人再发送任何内容为止。见6.B.4.5.6

这意味着,如果第一次尝试时无线电接收到传输的数据包,则通知最多会排队等待connectionInterval


这就是为什么必须正确协商连接参数,这也是为什么它们根据设备类型而不同。例如,HID鼠标、键盘、遥控器的连接间隔一般在10毫秒以下,而心率监测器的连接间隔通常在一秒钟以上。

BLE是时隙的。在连接状态下,存在周期性发生的连接事件,其间隔称为connectionInterval

每个连接事件都由主机启动,这意味着主机在连接事件中发送第一个数据包

为了保持连接的有效性,从机必须发送一个数据包,并至少在每个监控超时时得到一次确认。无论如何,还有其他超时会使从属设备在此之前做出响应,其中之一是从属状态,即从属设备在必须响应主设备之前可以忽略的连接事件数,即使不响应不是断开连接的原因,也会导致协议中的其他问题,从而断开连接。另一方面,主服务器应该在每个连接事件上发送一个数据包

connectionInterval、slaveLatency和supervisionTimeout是规范中连接参数的计时部分。连接间隔范围为7.5 ms到4秒,slaveLatency范围为0,然后slaveLatency应在每个连接事件上响应与supervisionTimeout/2对应的连接事件数。完整定义见6.B.4.5.1

因此,基本上,任何有效负载(包括GATT通知)都会在从机或主机的堆栈缓冲区中排队,直到下一个连接事件发生。无论从站到主站或从站到主站的方向如何,参与方都必须等待下一个连接事件发送其数据包

在给定的连接事件中,每一方依次发送一个数据包,可以选择不发送任何有用的有效负载,直到没有人再发送任何内容为止。见6.B.4.5.6

这意味着,如果第一次尝试时无线电接收到传输的数据包,则通知最多会排队等待connectionInterval


这就是为什么必须正确协商连接参数,这也是为什么它们根据设备类型而不同。例如,HID鼠标、键盘、遥控器的连接间隔一般在10毫秒以下,而心率监测器的连接间隔通常在一秒钟以上。

谢谢。因此,上层的数据流以某种方式填充在数据包中,随着时间的推移,每个目的都没有特殊的无线电报。我必须设计一个多协议无线电实现,使用BLE和另一个专有协议以及相同的无线电硬件。因此,我必须评估它是否可能
首先,在无线电级别,对于数据通道数据包,它们都是相同的格式。它们包含描述所包含的有效负载类型的标头。这是基本的封装和分层。见6.b.2.4。对于您必须设计的其余部分,这本身可能是另一个问题。设计评估是对现有北欧ESB enh的升级。冲击突发协议/应用程序-其完全异步。两者应该同时运行。我认为同时运行两个协议时,现有协议不可能实现100%的服务。Nordic可能会对ESB和BLE与其堆栈的互通发表评论。谢谢。因此,上层的数据流以某种方式填充在数据包中,随着时间的推移,每个目的都没有特殊的无线电报。我必须设计一个多协议无线电实现,使用BLE和另一个专有协议以及相同的无线电硬件。因此,我必须首先评估它是否可能。在无线电级别,对于数据通道数据包,它们都是相同的格式。它们包含描述所包含的有效负载类型的标头。这是基本的封装和分层。见6.b.2.4。对于您必须设计的其余部分,这本身可能是另一个问题。设计评估是对现有北欧ESB enh的升级。冲击突发协议/应用程序-其完全异步。两者应该同时运行。我认为同时运行两个协议时,现有协议不可能实现100%的服务。Nordic可能会评论ESB和BLE与其堆栈的互通。