Nordic Support,
Let me first explain what I would like to achieve. I am developing a line of devices that will act as GATT peripherals. I would like average current consumption to be around or lower than 25uA at 3V while connected and there is no data to be sent. I intend to have a constant connection forever as the GATT client will be stationary. However, in the case of a power failure or disconnect of some kind I want the GATT peripherals to start advertising again so the client can reconnect. I plan on using notifications to send data changes from the peripheral to the client, so I am aiming for a connection interval around 1.2 seconds as data going in the other direction (from client to peripheral) is not time sensitive.
Here are my current connection settings:
#define MIN_CONN_INTERVAL MSEC_TO_UNITS(1100, UNIT_1_25_MS) /**< Minimum acceptable connection interval (1.1 seconds). */
#define MAX_CONN_INTERVAL MSEC_TO_UNITS(1200, UNIT_1_25_MS) /**< Maximum acceptable connection interval (1.2 seconds). */
#define SLAVE_LATENCY 0 /**< Slave latency. */
#define CONN_SUP_TIMEOUT MSEC_TO_UNITS(10000, UNIT_10_MS)/**<Supervisory timeout (10 seconds). */
#define FIRST_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(5000) /**< Time from initiating event (connect or start of notification) to first time sd_ble_gap_conn_param_update is called (5 seconds). */
#define NEXT_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(30000) /**< Time between each call to sd_ble_gap_conn_param_update after the first call (30 seconds). */
#define MAX_CONN_PARAMS_UPDATE_COUNT 3 /**< Number of attempts before giving up the connection parameter negotiation. */
What I expect would be a spike of current consumption every 1.1 to 1.2 seconds while connected, as this would be an accepted connection interval. What I am seeing is a spike in current every 30ms. The peripheral also disconnects around the 90 second mark, which might be related to the BLE_CONN_PARAMS_EVT_FAILED event causing a disconnect. Here is the current consumption plot from PPK while connected (image attached). My environment is using the PPK for measuring current and LightBlue Expliorer BLE app for iOS to connect to the GATT peripheral.
My question would be, is there something wrong with my settings, or do you think the iOS app is not negotiating a connection interval and I am therefore using a 30ms interval until 3 failed connection update attempts (~90 seconds).
Best Regards
Jonathan Witthoeft