This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Is Slave Latency really useful?

I feel Slave Latency is unnecessary.

For example :
Connect Interval is 100ms, Supervisor Timeout is 4000ms.

So the Slave Latency must be 39. if I set Slave Latency to 10, is a useless parameter, I force peripheral not to response 39 packet, the connect keeps.

********************** Update in 2017-10-30 *************************

hi guys:

I'm a little confused about the slave latency.I know the meaning of this parameter.But I dont know why the potocol put "slave latency" in connection parameter.Because if the connection interval and supervision timeout is determined, the "slave latency" has been determined.

I can implement the "slave latency mechanism" without using "slave latency", just like a situation of bad RF environment, peripheral lost packets the central sent. I can simulate this situation to save battery power.I can set Slave Latency to 0, peripheral wake up in 10 connect intervals or 20 connect intervals .... (in the supervision timeout), then peripheral will get the same effect as "slave latency". Why peripheral need to tell the central this parameter.

So What does the potocol designer do with this parameter? Is there anything else I didn't think about? Does it have any other uses?

The reason I ask this question is that I found there is something wrong with Nordic SoftDevice about slave latency. When I set slave latency It's easy to cause disconnect. My connect param is: min interval 90ms, max interval 110ms,slave latency 9,timout 4000ms. (S110 v8, 51822) When I change the slave latency to 0, the connection is very good. So I sniff the connect procedure. I found the peripheral wake up in every 1s to exchange packet.So the peripheral have 4 connect Events, But if the peripheral lost the packet in a connect Event. The peripheral will not change its wake up time. So that makes 4 special packet(in every 1s connect event) very important, if lost all 4 packets, the connection will disconnect. I think this is unreasonable. I think it needs to change its wake up time to recieve the next 100ms.

thanks.

Parents
  • Do you argue with Slave Latency as concept in BT SIG specification? The fact that it doesn't make sense in certain combination of parameters it doesn't mean that it's useless otherwise. The purpose of it is to save power for certain Peripheral (or Slave if you want) devices once they are having nothing to transport on higher layers (then LL) = they can go to sleep and miss certain number of events. If you don't like it (e.g. because you want to have the lowest latency between "event" on Slave side and information reaching the Master) or if your connection parameters make Slave Latency useless then no problem, you don't need to set it to higher value then 0. Actually most of BLE connections are keeping SL zero.

    Btw. the computation you write in your question ("So the Slave Latency must be 39") doesn't make sense. If you read the spec it says "Latency. The Slave Latency field shall have a value in the range of 0 to ((connSupervisionTimeout / connIntervalMax) - 1). The Slave Latency field shall be less than 500." It also says that Latency should not cause Supervision Timeout meaning that you cannot set it lower then your Latency. So in your case SL can be anything between 0 and 39 (and it's just on the Master how it will set it during Connection Request or change later).

Reply
  • Do you argue with Slave Latency as concept in BT SIG specification? The fact that it doesn't make sense in certain combination of parameters it doesn't mean that it's useless otherwise. The purpose of it is to save power for certain Peripheral (or Slave if you want) devices once they are having nothing to transport on higher layers (then LL) = they can go to sleep and miss certain number of events. If you don't like it (e.g. because you want to have the lowest latency between "event" on Slave side and information reaching the Master) or if your connection parameters make Slave Latency useless then no problem, you don't need to set it to higher value then 0. Actually most of BLE connections are keeping SL zero.

    Btw. the computation you write in your question ("So the Slave Latency must be 39") doesn't make sense. If you read the spec it says "Latency. The Slave Latency field shall have a value in the range of 0 to ((connSupervisionTimeout / connIntervalMax) - 1). The Slave Latency field shall be less than 500." It also says that Latency should not cause Supervision Timeout meaning that you cannot set it lower then your Latency. So in your case SL can be anything between 0 and 39 (and it's just on the Master how it will set it during Connection Request or change later).

Children
  • To mention some actual scenarios where slave latency can be useful, most HID units can have great success with this. A remote control, mouse or keyboard can send as soon as they have data, on a short connection interval, without having to send any empty packets. The central has to listen at every connection event, so it's a one-sided power save, but the central device is usually connected to a larger power source.

    Note also that our SoftDevices support a proprietary local slave latency, which allows a slave latency higher than 500, but not so high that the connection will drop.

  • Maybe i didnt describe my doubt clearly. I know what slave latency is.And I need to use it.I want to know why the potocol designer set such a parameter. And I am sorry for my rudeness.I dont want to argue with anyone.I changed my way to ask question.

Related