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

Multilink central scan problem

Hi,

I am using the nRF51-DK board as a central running with ble_app_multilink_central_s130_pca10028 sample application. I am using SDK version 9.0 with Keil 5.14 version. I have third party peripheral devices like Estimote, Sensor Tag. With the central device, I am not able to scan these peripheral devices. Can you please help me to scan these devices with the central board ?

Parents
  • Hi Akshat,

    How did you test that ? Note that the multilink_central example only connect to and print out log when the device that has the short or complete name matches target.

    What you should do is to print out the advertising data you receive when BLE_GAP_EVT_ADV_REPORT occurs.

    Make sure you are scanning without any whitelist (selective scanning)

  • Hi Hung,

    Thanks for help. I am able to discover a service and it's characteristics. Now I want to discover more than one service of the same peripheral device. I have tried, but after discovering the second service my central device is restarting. My client handling init is look like:

    void client_handling_init(void) { uint32_t err_code; uint32_t i;

    ble_uuid128_t base_uuid = MULTILINK_PERIPHERAL_BASE_UUID;	
    err_code = sd_ble_uuid_vs_add(&base_uuid, &m_base_uuid_type);
    APP_ERROR_CHECK(err_code);
    ble_uuid128_t base_uuid1 = MULTILINK_PERIPHERAL_BASE_UUID1;	
    err_code = sd_ble_uuid_vs_add(&base_uuid1, &m_base_uuid_type);
    APP_ERROR_CHECK(err_code);
    
    for (i = 0; i < MAX_CLIENTS; i++)
    {
        m_client[i].state  = IDLE;
    }
    
    m_client_count = 0;
    db_discovery_init();
    
    // Register with discovery module for the discovery of the service.
    ble_uuid_t uuid[2];
    uuid[0].type = m_base_uuid_type;
    uuid[0].uuid = MULTILINK_PERIPHERAL_SERVICE_UUID;
    err_code = ble_db_discovery_evt_register(&uuid[0], db_discovery_evt_handler);
    APP_ERROR_CHECK(err_code);
    	
    uuid[1].type = m_base_uuid_type;
    uuid[1].uuid = MULTILINK_PERIPHERAL_SERVICE_UUID1;
    err_code = ble_db_discovery_evt_register(&uuid[1], db_discovery_evt_handler);
    APP_ERROR_CHECK(err_code);
    

    }

    can you please tell, where i am going wrong ?

Reply
  • Hi Hung,

    Thanks for help. I am able to discover a service and it's characteristics. Now I want to discover more than one service of the same peripheral device. I have tried, but after discovering the second service my central device is restarting. My client handling init is look like:

    void client_handling_init(void) { uint32_t err_code; uint32_t i;

    ble_uuid128_t base_uuid = MULTILINK_PERIPHERAL_BASE_UUID;	
    err_code = sd_ble_uuid_vs_add(&base_uuid, &m_base_uuid_type);
    APP_ERROR_CHECK(err_code);
    ble_uuid128_t base_uuid1 = MULTILINK_PERIPHERAL_BASE_UUID1;	
    err_code = sd_ble_uuid_vs_add(&base_uuid1, &m_base_uuid_type);
    APP_ERROR_CHECK(err_code);
    
    for (i = 0; i < MAX_CLIENTS; i++)
    {
        m_client[i].state  = IDLE;
    }
    
    m_client_count = 0;
    db_discovery_init();
    
    // Register with discovery module for the discovery of the service.
    ble_uuid_t uuid[2];
    uuid[0].type = m_base_uuid_type;
    uuid[0].uuid = MULTILINK_PERIPHERAL_SERVICE_UUID;
    err_code = ble_db_discovery_evt_register(&uuid[0], db_discovery_evt_handler);
    APP_ERROR_CHECK(err_code);
    	
    uuid[1].type = m_base_uuid_type;
    uuid[1].uuid = MULTILINK_PERIPHERAL_SERVICE_UUID1;
    err_code = ble_db_discovery_evt_register(&uuid[1], db_discovery_evt_handler);
    APP_ERROR_CHECK(err_code);
    

    }

    can you please tell, where i am going wrong ?

Children
No Data
Related