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))
else if ((role == BLE_GAP_ROLE_CENTRAL) || (p_ble_evt->header.evt_id == BLE_GAP_EVT_ADV_REPORT))
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);
// 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 |
// 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?
For "But, when I erased my device and used iphone to connect again."
I mean I erase my device and flash image again.
Do I need to update the encrypted key for connection?
If yes, please advise how to do it.
Have you remember to erase your device from the phones paired device list?
We don't want to erase bonding information on our phone.
We would like to do repairing.
What function should I use after calling pm_handler_secure_on_connection?
Is this an issue or limitation?