hello there i want to scan perticular device. can any one helo me?? . i am using heart rate sdk 11 example
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
uint32_t err_code;
uint8_t target_address[6] = {0xD1,0x2A,0xF7,0x62,0x2F,0xDB};
const ble_gap_evt_t * p_gap_evt = &p_ble_evt->evt.gap_evt;
switch (p_ble_evt->header.evt_id)
{
case BLE_GAP_EVT_ADV_REPORT:
{
data_t adv_data;
data_t type_data;
const ble_gap_evt_adv_report_t *p_adv_report = &p_gap_evt->params.adv_report;
// APPL_LOG("%x\r\n",p_adv_report->peer_addr);
APPL_LOG("%02x%02x%02x%02x%02x%02x\r\n",
p_adv_report->peer_addr.addr[0],
p_adv_report->peer_addr.addr[1],
p_adv_report->peer_addr.addr[2],
p_adv_report->peer_addr.addr[3],
p_adv_report->peer_addr.addr[4],
p_adv_report->peer_addr.addr[5]
);
APPL_LOG("\r\n");
nrf_delay_ms(1000);
uint8_t p,q,r,s,t,u;
p = p_adv_report->peer_addr.addr[5];
q = p_adv_report->peer_addr.addr[4];
r = p_adv_report->peer_addr.addr[3];
s = p_adv_report->peer_addr.addr[2];
t = p_adv_report->peer_addr.addr[1];
u = p_adv_report->peer_addr.addr[0];
if( p == 0xD1 && q == 0x2A && r == 0xF7 && s==0x62 && t ==0x2f && u ==0xdb)
{
APPL_LOG("yes\r\n");
adv_data.p_data = (uint8_t *)p_gap_evt->params.adv_report.data;
adv_data.data_len = p_gap_evt->params.adv_report.dlen;
int8_t rs = p_gap_evt->params.adv_report.rssi;
// if(rs < -100)
// {
// nrf_gpio_pin_set(LED_3);
// }
uint8_t k;
APPL_LOG("rsssi %d\r\n",rs);
APPL_LOG("data");
for(k=0; k<adv_data.data_len; k++)
{
APPL_LOG("%x,",adv_data.p_data[k]);
}
}
err_code = adv_report_parse(BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE,
&adv_data,
&type_data);
if (err_code != NRF_SUCCESS)
{
// Compare short local name in case complete name does not match.
err_code = adv_report_parse(BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE,
&adv_data,
&type_data);
}
// Verify if short or complete name matches target.
if (err_code == NRF_SUCCESS)
{
uint16_t extracted_uuid;
// UUIDs found, look for matching UUID
for (uint32_t u_index = 0; u_index < (type_data.data_len/UUID16_SIZE); u_index++)
{
UUID16_EXTRACT(&extracted_uuid,&type_data.p_data[u_index * UUID16_SIZE]);
APPL_LOG_DEBUG("\t[APPL]: %x\r\n",extracted_uuid);
if(extracted_uuid == TARGET_UUID)
{
// Stop scanning.
// err_code = sd_ble_gap_scan_stop();
if (err_code != NRF_SUCCESS)
{
APPL_LOG_DEBUG("[APPL]: Scan stop failed, reason %d\r\n", err_code);
}
err_code = bsp_indication_set(BSP_INDICATE_IDLE);
APP_ERROR_CHECK(err_code);
m_scan_param.selective = 0;
m_scan_param.p_whitelist = NULL;
// Initiate connection.
//err_code = sd_ble_gap_connect(&p_gap_evt->params.adv_report.peer_addr,
// &m_scan_param,
// &m_connection_param);
m_whitelist_temporarily_disabled = false;
if (err_code != NRF_SUCCESS)
{
APPL_LOG_DEBUG("[APPL]: Connection Request Failed, reason %d\r\n", err_code);
}
break;
}
}
}
break;
}
case BLE_GAP_EVT_TIMEOUT:
if (p_gap_evt->params.timeout.src == BLE_GAP_TIMEOUT_SRC_SCAN)
{
APPL_LOG_DEBUG("[APPL]: Scan timed out.\r\n");
scan_start();
}
else if (p_gap_evt->params.timeout.src == BLE_GAP_TIMEOUT_SRC_CONN)
{
APPL_LOG_DEBUG("[APPL]: Connection Request timed out.\r\n");
}
break;
case BLE_GAP_EVT_CONNECTED:
{ APPL_LOG("Device connected");
err_code = ble_hrs_c_handles_assign(&m_ble_hrs_c, p_gap_evt->conn_handle, NULL);
APP_ERROR_CHECK(err_code);
err_code = ble_bas_c_handles_assign(&m_ble_bas_c, p_gap_evt->conn_handle, NULL);
APP_ERROR_CHECK(err_code);
break;
}
case BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST:
// Accepting parameters requested by peer.
err_code = sd_ble_gap_conn_param_update(p_gap_evt->conn_handle,
&p_gap_evt->params.conn_param_update_request.conn_params);
APP_ERROR_CHECK(err_code);
break;
default:
break;
}
}
here when other device is in range, them i'm getting other device.