Application Crashing when connecting to a peripheral with low rssi

Hi,
I am working on nRF52833. I am using the discovery manager to connect with the peripheral. Whenever the device(peripheral) goes out of the range and again comes back in range the application crashes while subscribing back to one of the service.
I am using SDK version v2.1.2.
Please check the logs of the device crashing and also the prjcofig. file:///home/dozee/Pictures/Screenshots/Screenshot%20from%202023-03-13%2011-53-00.png

CONFIG_NCS_SAMPLES_DEFAULTS=y

CONFIG_HEAP_MEM_POOL_SIZE=4096

CONFIG_BT=y
CONFIG_BT_DEBUG_LOG=y
CONFIG_BT_CENTRAL=y
CONFIG_BT_GATT_CLIENT=y
CONFIG_BT_HRS_CLIENT=y
CONFIG_BT_GATT_DM=y
CONFIG_BT_OBSERVER=y

CONFIG_BT_SCAN=y
CONFIG_BT_SCAN_FILTER_ENABLE=y
CONFIG_BT_SCAN_UUID_CNT=1

CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_CTLR_PHY_CODED=y

CONFIG_BT_EXT_ADV=y
CONFIG_BT_PER_ADV_SYNC=y    
CONFIG_BT_USER_PHY_UPDATE=y

CONFIG_SERIAL=y
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_UART_USE_RUNTIME_CONFIGURE=y
CONFIG_BT_RX_STACK_SIZE=4096

CONFIG_BT_SMP=y
CONFIG_BT_MAX_CONN=5

# Board Options
CONFIG_BOARD_ENABLE_DCDC=n

#PWM
# CONFIG_NRFX_PWM0=y
CONFIG_PWM=y
CONFIG_NRFX_PWM0=y

#NVS
CONFIG_MPU_ALLOW_FLASH_WRITE=y
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_NVS=y

# CONFIG_BT_LL_SOFTDEVICE_DEFAULT=y
# CONFIG_BT_LL_SOFTDEVICE_VS_INCLUDE=y
CONFIG_BT_LL_SOFTDEVICE=y

CONFIG_BT_EXT_ADV=y
CONFIG_BT_CTLR=y
CONFIG_BT_CTLR_ADV_EXT=y
CONFIG_BT_EXT_ADV_MAX_ADV_SET=3
CONFIG_BT_CTLR_PHY_CODED=y
# CONFIG_BT_CTLR_ADVANCED_FEATURES=y
CONFIG_BT_CTLR_CONN_RSSI=y
CONFIG_BT_CTLR_TX_PWR_DYNAMIC_CONTROL=y
CONFIG_BT_HCI=y
# CONFIG_BT_HCI_RAW=y

CONFIG_ASSERT=y

CONFIG_BOOT_BANNER=n
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y
CONFIG_BT_CTLR_TX_PWR_PLUS_8=y
CONFIG_DEBUG_THREAD_INFO=y
CONFIG_DEBUG_OPTIMIZATIONS=y

Parents
  • As you can see in your log that the assert clearly happens at 

       Looking at that line in that file shows this
     __ASSERT(conn, "invalid parameters\n");

    Which means that you are sending a NULL pointer for conn which is invalid for that operation.
    You need to find out why your conn pointer is NULL when you want to do a gatt_discover? probably the device is already disconnected? and the disconnected callback in your application have updated your conn pointer to NULL?
Reply
  • As you can see in your log that the assert clearly happens at 

       Looking at that line in that file shows this
     __ASSERT(conn, "invalid parameters\n");

    Which means that you are sending a NULL pointer for conn which is invalid for that operation.
    You need to find out why your conn pointer is NULL when you want to do a gatt_discover? probably the device is already disconnected? and the disconnected callback in your application have updated your conn pointer to NULL?
Children
Related