Hi,
I am using nRF5 SDK 12.1.0.
I have read the s132_nrf52_3.0.0_migration-document.pdf and I am trying to implement the whitelist without the private addresses i.e. just whitelisting public addresses
I would like to set a whitelist for advertising filter policy at the peripheral device. Please find my code as follows:
case BLE_ADV_EVT_WHITELIST_REQUEST:
{
//Public Address
ble_gap_addr_t public_device = {
.addr_type = BLE_GAP_ADDR_TYPE_PUBLIC,
.addr = {0x38, 0x32, 0x52, 0xCB, 0x9F, 0x77}
};
ble_gap_addr_t const * whitelist = &public_device;
err_code = sd_ble_gap_whitelist_set(&whitelist, 1);
//Check error codes after setting whitelist
if (err_code == NRF_SUCCESS)
SEGGER_RTT_WriteString(0, "Successfully set whitelist! Yeah baby\n");
if (err_code == NRF_ERROR_INVALID_ADDR)
SEGGER_RTT_WriteString(0, "NRF_ERROR_INVALID_ADDR\n");
if (err_code == BLE_ERROR_GAP_WHITELIST_IN_USE)
SEGGER_RTT_WriteString(0, "BLE_ERROR_GAP_WHITELIST_IN_USE\n");
if (err_code == BLE_ERROR_GAP_INVALID_BLE_ADDR)
SEGGER_RTT_WriteString(0, "BLE_ERROR_GAP_INVALID_BLE_ADDR\n");
if (err_code == NRF_ERROR_DATA_SIZE)
SEGGER_RTT_WriteString(0, "NRF_ERROR_DATA_SIZE\n");
ble_gap_adv_params_t adv_params = {0};
adv_params.fp = BLE_GAP_ADV_FP_FILTER_BOTH; //Filter scan and connection requests
err_code = sd_ble_gap_adv_start(&adv_params);
//Check error codes after starting advertising
if (err_code == NRF_SUCCESS)
SEGGER_RTT_WriteString(0, "Start advertising this baby!\n");
if (err_code == NRF_ERROR_INVALID_ADDR)
SEGGER_RTT_WriteString(0, "NRF_ERROR_INVALID_ADDR\n");
if (err_code == NRF_ERROR_INVALID_STATE)
SEGGER_RTT_WriteString(0, "NRF_ERROR_INVALID_STATE\n");
if (err_code == NRF_ERROR_INVALID_PARAM)
SEGGER_RTT_WriteString(0, "NRF_ERROR_INVALID_PARAM\n");
if (err_code == BLE_ERROR_GAP_INVALID_BLE_ADDR)
SEGGER_RTT_WriteString(0, "BLE_ERROR_GAP_INVALID_BLE_ADDR\n");
if (err_code == BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST)
SEGGER_RTT_WriteString(0, "BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST\n");
APP_ERROR_CHECK(err_code);
}
break;
I am getting an error message that says NRF_ERROR_INVALID_PARAM (in RTT Viewer) when trying to start the advertisement using the function sd_ble_gap_adv_start(). I have configured adv_params.fp to filter connection requests and scan requests.
May I know how can I overcome this issue? Am I missing some adv_params that should be configured as well?
Thank you.