This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Consumption reduction with slave latency

I've got SLAVE_LATENCY set to 40 in hope that only every 40th request from the master would be responded to since there's no data to read or write, resulting in lowered current consumption. I'm not seeing any changes in current profile, however - there's still a current peak every 30ms (connection interval on iOS).

image description

Where am I mistaken?

EDIT:

I've changed my connection parameters to:

Interval Min = 25 ms
Interval Max = 45 ms
Slave Latency = 4
connSupervisionTimeout = 4 seconds

They pass all the iOS conditions:

Interval Max * (Slave Latency + 1) ≤ 2 seconds <=> 45 * (4 + 1) ≤ 2000 <=> true
Interval Min ≥ 20 ms <=> 25 ≥ 20 <=> true
Interval Min + 20 ms ≤ Interval Max <=> 25 + 20 ≤ 45 <=> true
Slave Latency ≤ 4 <=> 4 ≤ 4 <=> true
connSupervisionTimeout ≤ 6 seconds <=> 4 ≤ 6 <=> true
Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout <=> 45 * (4 + 1) * 3 < 4000 <=> true

They are set with ble_conn_params_change_conn_params(), which is called more than FIRST_CONN_PARAMS_UPDATE_DELAY after starting a connection with central. The function call returns NRF_SUCCESS and since no disconnect follows even though ble_conn_params_init_t.disconnect_on_fail is true I assume the central must have accepted the parameters, but nothing has changed in the power profile.

Related