Can't send data after re-bonding

Hi

I'm working on nRF52832 with SDK 15.2.0.

I have a device which is based on ble_app_hrs_rscs_relay.

I added pm_handler_secure_on_connection in ble_evt_handler and set PM_HANDLER_SEC_DELAY_MS to 4000.

static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context)
{
    uint16_t conn_handle = p_ble_evt->evt.gap_evt.conn_handle;
    uint16_t role        = ble_conn_state_role(conn_handle);

    // Based on the role this device plays in the connection, dispatch to the right handler.
    if (role == BLE_GAP_ROLE_PERIPH || ble_evt_is_advertising_timeout(p_ble_evt))
    {
        pm_handler_secure_on_connection(p_ble_evt);
        ble_hrs_on_ble_evt(p_ble_evt, &m_hrs);
        ble_rscs_on_ble_evt(p_ble_evt, &m_rscs);
        on_ble_peripheral_evt(p_ble_evt);
    }
    else if ((role == BLE_GAP_ROLE_CENTRAL) || (p_ble_evt->header.evt_id == BLE_GAP_EVT_ADV_REPORT))
    {
        ble_hrs_c_on_ble_evt(p_ble_evt, &m_hrs_c);
        ble_rscs_c_on_ble_evt(p_ble_evt, &m_rscs_c);
        on_ble_central_evt(p_ble_evt);
    }
}

I also set hrs_init.hrm_cccd_wr_sec/hrs_init.bsl_rd_sec/rscs_init.rsc_feature_rd_sec/rscs_init.rsc_meas_cccd_wr_sec to SEC_JUST_WORKS.

 

    hrs_init.evt_handler                 = NULL;
    hrs_init.is_sensor_contact_supported = true;
    hrs_init.p_body_sensor_location      = &body_sensor_location;

    // Here the sec level for the Heart Rate Service can be changed or increased.
    hrs_init.hrm_cccd_wr_sec = SEC_JUST_WORKS;//SEC_OPEN;
    hrs_init.bsl_rd_sec      = SEC_JUST_WORKS;//SEC_OPEN;

    err_code = ble_hrs_init(&m_hrs, &hrs_init);
    APP_ERROR_CHECK(err_code);

    // Initialize the Running Speed and Cadence Service.
    memset(&rscs_init, 0, sizeof(rscs_init));

    rscs_init.evt_handler = NULL;
    rscs_init.feature     = BLE_RSCS_FEATURE_INSTANT_STRIDE_LEN_BIT |
                            BLE_RSCS_FEATURE_WALKING_OR_RUNNING_STATUS_BIT;

    // Here the sec level for the Running Speed and Cadence Service can be changed or increased.
    rscs_init.rsc_feature_rd_sec   = SEC_JUST_WORKS;//SEC_OPEN;
    rscs_init.rsc_meas_cccd_wr_sec = SEC_JUST_WORKS;//SEC_OPEN;

The first time I used iphone to connect my device and everything went well.

But, when I erased my device and used iphone to connect again.

Iphone will show pairing request dialog, after I pressed "Pair" option, I can't send or receive any data from my device.

Does anyone know how to fix this issue?

Related