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

How can I use ble_app_hids_keyboard with multiple centrals?

I am working from the ble_app_hids_keyboard example. To support multiple centrals, I imagine the first step is changing NRF_SDH_BLE_PERIPHERAL_LINK_COUNT and NRF_SDH_BLE_TOTAL_LINK_COUNT. I updated sdk_config.h and changed the default value from 1 to 4. However when I do so, it doesn't even seem to be advertising even for the first device to connect.

Is it possible to extend ble_app_hids_keyboard to support multiple devices (and programmatically switch between them)? Is there something else that I'm supposed to change? I am using the nRF52840 Dongle.

Thank you for your help.

  • Hello,

     

    I am using the nRF52840 Dongle.

    I believe that part of the issue is that you are using this dongle, which doesn't have a debugger. It makes it difficult to develop on the dongle by itself. I really recommend you to get an nRF52840 DK. 

    You are probably facing an APP_ERROR_CHECK(err_code); with err_code != 0, but to figure out where that is, you need to either be able to debug, or be able to monitor the logs that are printed with NRF_LOG_INFO(); to see where that happens. If you have the possibility to connect a UART receiver to the dongle, then that may work, but if not, you need a debugger (which is present on the Development Kit, but not the dongle). 

    Even if you find out where this fails by trial and error, you will probably face a lot more issues like this during the development, so some way of monitoring what is happening in the application is crucial for such development.

    Best regards,

    Edvin

  • Thank you. It turns out I had to adjust the RAM location.

    <warning> nrf_sdh_ble: Insufficient RAM allocated for the SoftDevice.
    <warning> nrf_sdh_ble: Change the RAM start location from 0x20002210 to 0x20003048.
    <warning> nrf_sdh_ble: Maximum RAM size for application is 0x3CFB8.
    <error> nrf_sdh_ble: sd_ble_enable() returned NRF_ERROR_NO_MEM.
    

Related