The call to ble_x_handles_assign() is not uniformized on all the examples. It's sometime call from on_ble_evt() or/and from x_evt_handler().
From the doc on the function, i think it's should be called from x_evt_handler().
Here are the examples not only calling from x_evt_handler() (SDK13.0.0):
- ble_app_multilink_central (call from
on_ble_evt()) - ble_app_uart_c (call from both events)
- ble_app_blinky_c (call from both events)
Would be great if all the examples follow the same structure.