Hi every one.
I am developing on S130 SDK 11 and I try to use whitelist connection for optimisation. I have currently a working project which scan for 1 sec for any BLE and then try to connect each one by one and look for services and so on.
Today I want to optimise my solution so I want to use whitelist to speed up the connection time.
But I the function send me back NRF_ERROR_INVALID_PARAM 0x07 and I can't figure out why.
Could some one explain me what did I make wrong ?
ble_gap_addr_t* m_addrstoConnectList[BLE_GAP_WHITELIST_ADDR_MAX_COUNT];
PeerCtxt* m_peersToConnectStack[BLE_GAP_WHITELIST_ADDR_MAX_COUNT];
uint8_t m_peersToConnectStackCount;
m_scan_params.interval = BLE_SCAN_INTERVAL_U; //47 ms
m_scan_params.window = BLE_SCAN_WINDOW_U; //24 ms
m_scan_params.timeout = BLE_SCAN_DURATION_S; //1 s
m_gapConnParams.min_conn_interval = BLE_CONN_MIN_INTERVAL_U; //10 ms
m_gapConnParams.max_conn_interval = BLE_CONN_MAX_INTERVAL_U; //50 ms
m_gapConnParams.conn_sup_timeout = BLE_CONN_SUPERVISION_TIMEOUT_U; //500 ms
m_gapConnParams.slave_latency = 0;
uint32_t _ble_app_connectPeers(void) {
uint32_t errorCode = 0;
PeerCtxt* pPeer = NULL;
ble_gap_whitelist_t whitelist = {0};
whitelist.pp_addrs = m_addrstoConnectList;
whitelist.addr_count = 0;
for (uint8_t index = 0;index < m_peersToConnectStackCount;++index) {
pPeer = (PeerCtxt*) m_peersToConnectStack[index];
if (pPeer->isUsed) {
m_addrstoConnectList[whitelist.addr_count] = &pPeer->peerAddr;
whitelist.addr_count += 1;
}
}
m_scan_params.selective = true;
m_scan_params.p_whitelist = &whitelist;
errorCode = sd_ble_gap_connect(NULL, &m_scan_params, &m_gapConnParams);
return errorCode;
}