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
  • Omg... Now I discovered that I have a connection timeout that executes instantly when someone establishes a connection. This timer is started when the connection starts (BLE_GAP_EVT_CONNECTED) and it kills the connection if the phone gets stuck with it... but is configured to kill the connection after 50 sec and this number is a constant so I don't know why this timer randomly executes insantly, any ideas?

    #define TIMEOUT_CONNECTION	APP_TIMER_TICKS(50000, APP_TIMER_PRESCALER)
    
    case BLE_GAP_EVT_CONNECTED:
    m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
    	if (first_time){
    		err_code= app_timer_start(m_timeout_timer_id, FIRST_TIMEOUT_CONNECTION, NULL);
    	}else{
    		err_code= app_timer_start(m_timeout_timer_id, TIMEOUT_CONNECTION, NULL);
    	}
    	timeout_timer_running=true;
    	APP_ERROR_CHECK(err_code);
    	led_write_handler_led(1,LED_RED_CH);
    break;
    
Reply
  • Omg... Now I discovered that I have a connection timeout that executes instantly when someone establishes a connection. This timer is started when the connection starts (BLE_GAP_EVT_CONNECTED) and it kills the connection if the phone gets stuck with it... but is configured to kill the connection after 50 sec and this number is a constant so I don't know why this timer randomly executes insantly, any ideas?

    #define TIMEOUT_CONNECTION	APP_TIMER_TICKS(50000, APP_TIMER_PRESCALER)
    
    case BLE_GAP_EVT_CONNECTED:
    m_conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
    	if (first_time){
    		err_code= app_timer_start(m_timeout_timer_id, FIRST_TIMEOUT_CONNECTION, NULL);
    	}else{
    		err_code= app_timer_start(m_timeout_timer_id, TIMEOUT_CONNECTION, NULL);
    	}
    	timeout_timer_running=true;
    	APP_ERROR_CHECK(err_code);
    	led_write_handler_led(1,LED_RED_CH);
    break;
    
Children
No Data
Related