Was ist Slave Latency?

Slave Latency

Die CoreSpec sagt dass die Slave Latency die Menge an Connection Events sind, die er ignorieren darf:
„Slave latency allows a slave to use a reduced number of connection events. The connSlaveLatency parameter defines the number of consecutive connection events that the slave device is not required to listen for the master.“ [1]

Connection Events

Um zu verstehen was das heißt, müssen wir den Begriff der Connection Events klären:
„The Link Layer in the Connection State shall only transmit Data Channel PDUs (see Section 2.4) in connection events.” [1]
“During a connection event, the master and slave alternate sending and receiving packets. “ [1]
“The connection event can be closed by either device, as defined in Section 4.5.6. “ [1]
“The start of a connection event is called an anchor point. At the anchor point, a master shall start to transmit a Data Channel PDU to the slave. The start of connection events are spaced regularly with an interval of connInterval and shall not overlap. […] The slave listens for the packet sent by its master at the anchor point.” [1]

Und was heißt das?

Connection Events sind dafür da, Daten zu übertragen, diese finden regelmäßig (nämlich alle connInterval ms) statt. Diese können allerdings vom Slave ignoriert werden, ohne dass der Master annimmt dass die Verbindung nicht mehr intakt ist.

Warum ist das entscheidend zu wissen?

Der Parameter beeinflusst maßgeblich die Geschwindigkeit in der Daten vom Master zum Slave übertragen werden. Beeinflussen aber die Geschwindigkeit in der Daten vom Slave zum Master übertragen werden, überhaupt nicht. Da der Slave die Slave Latency nicht mehr einhalten wird, sobald er Daten zu senden hat, jedoch nicht zuhört, sollte der Master etwas zu senden haben.

Wie sieht das im Detail aus?

Szenario 1: Der Master möchte einen write_request an den Slave senden, während der Slave keine Daten zu senden hat. Somit wird der Slave nicht zuhören, während der Master versucht die Daten zu senden. Erst nachdem der Slave Slave Latency mal das Connection Event ignoriert hat wird er den write_request empfangen.

Slave-Latency

slave latency, connection interval and connection events are depicted and explained

 

Szenario 2: Der Master möchte erneut einen write_request senden, während der Slave durch die Slave Latency nicht zuhört. Jedoch möchte der Slave nach dem ersten nicht empfangenen Connection Event eine Notification an den Master senden, somit wird der Slave dem Master zuhören und dem Connection Event zuhören und somit auch den write_request schneller empfangen als in dem Szenario zuvor.

Slave-Latency

How Connection Interval and Slave Latency change the performance of Bluetooth Low Energy

 

Ausnahmen

Die Slave Latency wird nicht benutzt wenn
• es zwischen zwei write_requests kein leeres Connection Event gab.
• Die Slave Latency gleich 0 ist.
• Der Slave eine Notifcation oder Indication versenden möchte

Referenzen

[1] BLUETOOTH SPECIFICATION Version 4.2 [Vol 6, Part B], Link Layer Specification, 4.5.1 Connection Events

By | 2017-07-17T15:08:38+00:00 Februar 20th, 2017|Bluetooth Low Energy|