static void conn_params_timer_handler(void *privData) { OS_ERR_TYPE os_err; struct bt_conn_info info = { 0 }; const struct bt_le_conn_param conn_params = { MIN_CONN_INTERVAL, MAX_CONN_INTERVAL, SLAVE_LATENCY, CONN_SUP_TIMEOUT }; bt_conn_get_info(_ble_app_cb.conn_periph, &info); /* Check if there was an update in the connection parameters */ if (info.role != BT_CONN_ROLE_MASTER && (_ble_app_cb.conn_values.latency != SLAVE_LATENCY || _ble_app_cb.conn_values.supervision_to != CONN_SUP_TIMEOUT || _ble_app_cb.conn_values.interval < MIN_CONN_INTERVAL || _ble_app_cb.conn_values.interval > MAX_CONN_INTERVAL)) { /* Start the 30 seconds timer to retry updating the connection */ timer_start(_ble_app_cb.conn_timer, 30000, &os_err); /* Send request to update the connection */ bt_conn_le_param_update(_ble_app_cb.conn_periph, &conn_params); } else ble_app_delete_conn_timer(); }
/* * Functions definition */ int ble_app_conn_update(const struct bt_le_conn_param *p_params) { ble_app_delete_conn_timer(); if (_ble_app_cb.flags & BLE_APP_ENABLED) return bt_conn_le_param_update(_ble_app_cb.conn_periph, p_params); else return -1; }
void BLEHelper::updateConnectionInterval() { bt_conn_t* conn = bt_conn_lookup_addr_le(&_address); int ret = 0; if (NULL != conn) { ret = bt_conn_le_param_update(conn, &_conn_params); pr_debug(LOG_MODULE_BLE, "%s-ret:%d",__FUNCTION__, ret); bt_conn_unref(conn); } }
static void le_conn_update(struct k_work *work) { struct bt_conn *conn = CONTAINER_OF(work, struct bt_conn, update_work); bt_conn_le_param_update(conn, BT_LE_CONN_PARAM_DEFAULT); }