I am trying to run BLE central peripheral dual role on nrf52 pca10040 with nrf_uart as service. Also, I have redbearlab BLE nano as peripheral (nrf51822 based).
I am getting device manager's DM_EVT_CONNECTION event but after that I don't receive any event's or data. here is my DM_EVT_CONNECTION handler code :
printf("inside device manager event handler with event %x \n\r", p_event->event_id);
switch (p_event->event_id)
{
case DM_EVT_CONNECTION:
{
APPL_LOG("[APPL]: >> DM_EVT_CONNECTION\r\n");
ble_gap_addr_t * peer_addr;
peer_addr = &p_event->event_param.p_gap_param->params.connected.peer_addr;
APPL_LOG("[APPL]:[%02X %02X %02X %02X %02X %02X]: Connection Established\r\n",
peer_addr->addr[0], peer_addr->addr[1], peer_addr->addr[2],
peer_addr->addr[3], peer_addr->addr[4], peer_addr->addr[5]);
LEDS_OFF(CENTRAL_CONNECTED_LED);
if(memcmp(&m_nus_peripheral_address, &p_event->event_param.p_gap_param->params.connected.peer_addr, sizeof(ble_gap_addr_t)) == 0)
{
m_conn_handle_central_nus = p_event->event_param.p_gap_param->conn_handle;
printf("BLE connection handle valid \n\r");
}
if((m_conn_handle_central_nus != BLE_CONN_HANDLE_INVALID))
{
LEDS_OFF(CENTRAL_SCANNING_LED);
printf("BLE connection handle invalid \n\r");
}
m_dm_device_handle = (*p_handle);
// Discover peer's services.
err_code = ble_db_discovery_start(&m_ble_db_discovery,
p_event->event_param.p_gap_param->conn_handle);
APP_ERROR_CHECK(err_code);
m_peer_count++;
err_code = dm_security_setup_req(&m_dm_device_handle);
APP_ERROR_CHECK(err_code);
printf("[APPL]: << DM_EVT_CONNECTION done with service discovery error code %x \r\n",err_code );
APPL_LOG("[APPL]: << DM_EVT_CONNECTION\r\n");
break;
}
The log is here :
BLE event 20002924
field type is 1, field length is 2
field type is 7, field length is 11
Decoded UUID is 1 and UUID type is 2
Central Connected !! Connecting to target 0e79b2e74ad3
BLE event 20002924
inside device manager event handler with event 11
[APPL]: >> DM_EVT_CONNECTION
[APPL]:[0E 79 B2 E7 4A D3]: Connection Established
[APPL]: << DM_EVT_CONNECTION done with service discovery error code 0
[APPL]: << DM_EVT_CONNECTION
Is there something missing ? Central device suppose to receive DM_EVT_SECURITY_SETUP event but it is not happening. Is there anything wrong at peripheral side ?