Power optimising with slave latency

Hi,

We have a peripheral based on the nRF52840 which connects to a smartphone as the central.

Following the guidelines for iOS we have selected a connection interval of 390 and a slave latency of 4, in order to stay within the iOS BLE guidelines which require a response from the peripheral at least every 2 seconds.

Monitoring using the nRFsniffer shows the expected behaviour when the link connected but idle, with the peripheral responding every 5 connection intervals:

In order to minimise power consumption we are attempting to align certain non-time critical data transfer operations from the peripheral to the central to replace the Empty PDU that would otherwise be sent to keep the link alive. In order to do this we send this data using a timer set to fire repeatedly with an interval of 1700ms (just slightly faster than the connection would ordinarily need to send an empty PDU to keep the link alive) with the intention of replacing the empty PDUs with useful data while incurring only a modest energy penalty.

However, in the sniffer we are seeing that every time data is sent there is an extra Empty PDU sent the the peripheral in the next connection interval, negating our efforts at power optimisation:

Why is this extra Empty PDU being sent and is there any way to stop it?

Thanks,

Pete.

Related