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

Enabling whitelisting

S110 v8.0.0 / ble_app_hrs_with_dfu

I want to enable whitelisting.

In the advertising_init() function I have:

ble_adv_modes_config_t options = {0};
options.ble_adv_whitelist_enabled = BLE_ADV_WHITELIST_ENABLED; //added this
options.ble_adv_fast_enabled  = BLE_ADV_FAST_ENABLED;
options.ble_adv_fast_interval = APP_ADV_INTERVAL;
options.ble_adv_fast_timeout  = APP_ADV_TIMEOUT_IN_SECONDS;

Is there anything else that needs to be done to make whitelisting work?

I paired with an Iphone4s and then disconnected, but was still able to pair with a Nexus4 afterwards.

whitelist->addr_count + whitelist->irk_count = 0 even after both bonds.

  • Hi Chris add the below case statement to on_adv_evt()

        case BLE_ADV_EVT_WHITELIST_REQUEST:
        {
            ble_gap_whitelist_t whitelist;
            ble_gap_addr_t    * p_whitelist_addr[BLE_GAP_WHITELIST_ADDR_MAX_COUNT];
            ble_gap_irk_t     * p_whitelist_irk[BLE_GAP_WHITELIST_IRK_MAX_COUNT];
    
            whitelist.addr_count = BLE_GAP_WHITELIST_ADDR_MAX_COUNT;
            whitelist.irk_count  = BLE_GAP_WHITELIST_IRK_MAX_COUNT;
            whitelist.pp_addrs   = p_whitelist_addr;
            whitelist.pp_irks    = p_whitelist_irk;
    
            err_code = dm_whitelist_create(&m_app_handle, &whitelist);
            APP_ERROR_CHECK(err_code);
    
            err_code = ble_advertising_whitelist_reply(&whitelist);
            APP_ERROR_CHECK(err_code);
            break;
        }
    

    That app seems to have forgotten to handle whitelisting.

Related