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

Increase Service Discovery Speed by Master

Hi, So i'm working on an android app that communicates with two nrf51822 devices on the s110 softdevice by switching between them continuously (connecting one, disconnecting the other and vice versa). My issue is that the service discovery seems to take more time than my desired switching period. Each of the devices have only one custom service as well as the standard Generic Profile and Generic Access services (no battery or DIS services). It worked for switching every 10 seconds but I need to switch every second or so. Is it possible to vastly reduce the discovery time; and if so, please how can this be achieved?? I am testing on a Samsung Galaxy s3 running Android 4.3. Thanks

Parents
  • What do you set your preferred Connection Parameters to? When do you request the Connection Parameter Update?

    Your only options of increasing Discovery Speed are using the fastest Connection Parameters, and streamlining your Service. Meaning remove anything characteristic that are unnecessary and reduce the characteristic sizes to only required size. i.e. don't create a uint32_t characteristic that will only use 0-255 values.

  • Its set to 20s but my services don't take that long so I included this aspect of my code; maybe it'll help. Thanks for your help so far.

     #define MIN_CONN_INTERVAL               MSEC_TO_UNITS(100, UNIT_1_25_MS)            /**< Minimum acceptable connection interval (0.5 seconds). */
        #define MAX_CONN_INTERVAL               MSEC_TO_UNITS(200, UNIT_1_25_MS)            /**< Maximum acceptable connection interval (1 second). */
        #define SLAVE_LATENCY                   0                                           /**< Slave latency. */
        #define CONN_SUP_TIMEOUT                MSEC_TO_UNITS(4000, UNIT_10_MS)             /**< Connection supervisory timeout (4 seconds). */
        #define FIRST_CONN_PARAMS_UPDATE_DELAY  APP_TIMER_TICKS(20000, APP_TIMER_PRESCALER) /**< Time from initiating event (connect or start of notification) to first time sd_ble_gap_conn_param_update is called (15 seconds). */
        #define NEXT_CONN_PARAMS_UPDATE_DELAY   APP_TIMER_TICKS(5000, APP_TIMER_PRESCALER)  /**< Time between each call to sd_ble_gap_conn_param_update after the first call (5 seconds). */
        #define MAX_CONN_PARAMS_UPDATE_COUNT    3                                           /**< Number of attempts before giving up the connection parameter negotiation. */
    
Reply
  • Its set to 20s but my services don't take that long so I included this aspect of my code; maybe it'll help. Thanks for your help so far.

     #define MIN_CONN_INTERVAL               MSEC_TO_UNITS(100, UNIT_1_25_MS)            /**< Minimum acceptable connection interval (0.5 seconds). */
        #define MAX_CONN_INTERVAL               MSEC_TO_UNITS(200, UNIT_1_25_MS)            /**< Maximum acceptable connection interval (1 second). */
        #define SLAVE_LATENCY                   0                                           /**< Slave latency. */
        #define CONN_SUP_TIMEOUT                MSEC_TO_UNITS(4000, UNIT_10_MS)             /**< Connection supervisory timeout (4 seconds). */
        #define FIRST_CONN_PARAMS_UPDATE_DELAY  APP_TIMER_TICKS(20000, APP_TIMER_PRESCALER) /**< Time from initiating event (connect or start of notification) to first time sd_ble_gap_conn_param_update is called (15 seconds). */
        #define NEXT_CONN_PARAMS_UPDATE_DELAY   APP_TIMER_TICKS(5000, APP_TIMER_PRESCALER)  /**< Time between each call to sd_ble_gap_conn_param_update after the first call (5 seconds). */
        #define MAX_CONN_PARAMS_UPDATE_COUNT    3                                           /**< Number of attempts before giving up the connection parameter negotiation. */
    
Children
No Data
Related