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
  • Ok, I thought you used the sd_ble_gap_conn_param_update(..) directly in your code and not the SDK library.

    I checked and the only time sd_ble_gap_conn_param_update(..) will return error NRF_ERROR_INVALID_STATE (0x8) is if the device is not in a connection. The only explanation I can think of as to why you get this error code is that the peer has disconnected, but the application has yet not gotten the disconnected event or have not executed the code that is to be run on disconnect (the event is pending because other interrupts at equal or higher level has to be executed first). So the SoftDevice knows that the connection is lost, but the application don't.

    I assume that you have not altered the SDK library code (ble_conn_params).

Reply
  • Ok, I thought you used the sd_ble_gap_conn_param_update(..) directly in your code and not the SDK library.

    I checked and the only time sd_ble_gap_conn_param_update(..) will return error NRF_ERROR_INVALID_STATE (0x8) is if the device is not in a connection. The only explanation I can think of as to why you get this error code is that the peer has disconnected, but the application has yet not gotten the disconnected event or have not executed the code that is to be run on disconnect (the event is pending because other interrupts at equal or higher level has to be executed first). So the SoftDevice knows that the connection is lost, but the application don't.

    I assume that you have not altered the SDK library code (ble_conn_params).

Children
No Data
Related