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

sd_ble_gap_conn_param_update error 8

I have an application where my nrf52832 acts as a peripheral and I can connect to it without problems, but after some time like aprox 10 minutes when I try to connect to it again it doesn't accept the connection until it resets and then the cycle restarts.

I'm trying to debug this problem and the function "sd_ble_gap_conn_param_update" gives me "error 8 - Invalid state" following the previous pattern... Why? The connection parameters seems ok...

SD 3.0.0, sdk 12.2.

define MIN_CONN_INTERVAL MSEC_TO_UNITS(250, UNIT_1_25_MS)

define MAX_CONN_INTERVAL MSEC_TO_UNITS(350, UNIT_1_25_MS)

define SLAVE_LATENCY 0

define CONN_SUP_TIMEOUT MSEC_TO_UNITS(1500, UNIT_10_MS)

define FIRST_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(5000,APP_TIMER_PRESCALER)

define NEXT_CONN_PARAMS_UPDATE_DELAY APP_TIMER_TICKS(30000, APP_TIMER_PRESCALER)

define MAX_CONN_PARAMS_UPDATE_COUNT 3

Thank you!

Daniel.

Parents
  • I'm using the SDK library. The only modification is the one that I posted here (the added condition on the 'if'). Now I'm trying to find the source of the error and I blocked the parameters update (I read on another post that this can be done safely) commenting those lines on the same file inside the function "conn_params_negotiation(void)"

    if (m_update_count == 0){ // First connection parameter update timeout_ticks = m_conn_params_config.first_conn_params_update_delay; }else{ timeout_ticks = m_conn_params_config.next_conn_params_update_delay; }

           /* err_code = app_timer_start(m_conn_params_timer_id, timeout_ticks, NULL);
            if ((err_code != NRF_SUCCESS) && (m_conn_params_config.error_handler != NULL)){
                m_conn_params_config.error_handler(err_code);
            }*/
    

    [...]

Reply
  • I'm using the SDK library. The only modification is the one that I posted here (the added condition on the 'if'). Now I'm trying to find the source of the error and I blocked the parameters update (I read on another post that this can be done safely) commenting those lines on the same file inside the function "conn_params_negotiation(void)"

    if (m_update_count == 0){ // First connection parameter update timeout_ticks = m_conn_params_config.first_conn_params_update_delay; }else{ timeout_ticks = m_conn_params_config.next_conn_params_update_delay; }

           /* err_code = app_timer_start(m_conn_params_timer_id, timeout_ticks, NULL);
            if ((err_code != NRF_SUCCESS) && (m_conn_params_config.error_handler != NULL)){
                m_conn_params_config.error_handler(err_code);
            }*/
    

    [...]

Children
No Data
Related