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

Disable scan response

I would like to reduce current consumption on my beacon and I wonder if it is possible to disable sending scan response. I know that it is not a huge difference in a single advertising event, but when you have short advertising period it makes difference in the longer period of time.

I use SD110 version 8.0.0.

My advertising type is BLE_GAP_ADV_TYPE_ADV_IND. I wonder if I use BLE_GAP_ADV_FP_FILTER_SCANREQ filter policy and then in the whitelist I can supply one random address, will my beacon send scan response packets?

EDIT:

 /* Some random address */
ble_gap_addr_t scan_req_addr = {
	.addr_type = BLE_GAP_ADDR_TYPE_RANDOM_STATIC,
	.addr[0] = 0xC8,
	.addr[1] = 0xD2,
	.addr[2] = 0xEF,
	.addr[3] = 0x12,
	.addr[4] = 0x11,
	.addr[5] = 0xC8,
};

ble_gap_addr_t *filter_addrs[1] = {&scan_req_addr};

ble_gap_whitelist_t  whitelist = {
	.pp_addrs = filter_addrs,
	.addr_count = 1,
	.pp_irks = NULL,
	.irk_count = 0,
};

	/// Initialize advertising parameters structure
	/// Initially, advertising is fastened
	memset(&m_adv_params, 0, sizeof(m_adv_params));
	m_adv_params.type = 		BLE_GAP_ADV_TYPE_ADV_IND;
	m_adv_params.p_peer_addr = 	NULL;
//	m_adv_params.fp = 			BLE_GAP_ADV_FP_ANY;
	m_adv_params.fp = BLE_GAP_ADV_FP_FILTER_SCANREQ;
	m_adv_params.p_whitelist = &whitelist;
//	m_adv_params.p_whitelist = 	NULL;
	m_adv_params.interval = 	ADVERTISING_INTERVAL_FASTENED;
	m_adv_params.timeout = 		ADVERTISING_TIMEOUT;

sd_ble_gap_adv_start()

returns erro code 0x3201. When using commented out fp and whitelist pointer everything works OK.

Related