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

central device

main.c

something

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.

Parents Reply Children
No Data
Related