Hi all,
I am trying to develop a simple windows application using pc-ble-driver writing my own C# bindings on a nrf52840 dongle with nrf-ble-driver-sd_api_v6-mt-4_1_4.dll as a soft device and connectivity firmware connectivity_4.1.4_usb_with_s140_6.1.1_dfu_pkg.zip. I have hit a road block while implementing bonding. Currently I am expected to do legacy pairing (IT just works). The first step in bonding works as expected and I receive BLE_GAP_EVT_SEC_PARAMS_REQUEST event.
#define SEC_PARAM_MIN_KEY_SIZE 7
#define SEC_PARAM_MAX_KEY_SIZE 16
int nrfDemo::ManagedNordicBLEChannel::AuthenticateConnection(uint16_t connectionHandle)
{
ble_gap_sec_params_t sec_param;
memset(&sec_param, 0, sizeof(sec_param));
/*Set the Security parameters*/
sec_param.bond = 1;
sec_param.mitm = 0;
sec_param.lesc = 0;
sec_param.keypress = 0;
sec_param.io_caps = 0;
sec_param.oob = 0;
sec_param.min_key_size = SEC_PARAM_MIN_KEY_SIZE;
sec_param.max_key_size = SEC_PARAM_MAX_KEY_SIZE;
sec_param.kdist_own.enc = 1;
sec_param.kdist_own.id = 1;
sec_param.kdist_peer.enc = 1;
sec_param.kdist_peer.id = 1;
auto err_code = sd_ble_gap_authenticate(m_adapter, connectionHandle, &sec_param);
return err_code;
}
Upon receiving BLE_GAP_EVT_SEC_PARAMS event I am trying to do a reply like below:
static ble_gap_sec_keys_t ble_gap_sec_keys;
static ble_gap_sec_keyset_t ble_gap_sec_keyset;
void nrfDemo::ManagedNordicBLEChannel::on_sd_ble_gap_sec_params_reply(ble_gap_evt_t* evt)
{
memset(&ble_gap_sec_keyset, 0, sizeof(ble_gap_sec_keyset));
memset(&ble_gap_sec_keys, 0, sizeof(ble_gap_sec_keys));
ble_gap_sec_keyset.keys_peer.p_pk = NULL;
ble_gap_sec_keyset.keys_peer.p_enc_key = NULL;
ble_gap_sec_keyset.keys_peer.p_id_key = NULL;
ble_gap_sec_keyset.keys_peer.p_sign_key = NULL;
ble_gap_sec_keyset.keys_peer = ble_gap_sec_keys;
auto err_code = sd_ble_gap_sec_params_reply(m_adapter, evt->conn_handle, BLE_GAP_SEC_STATUS_SUCCESS, nullptr, &ble_gap_sec_keyset);
printf("on_sd_ble_gap_sec_params_reply status: %d \n", err_code);
}
sd_ble_gap_sec_params_reply returns an error with code 0x10. Any suggestions?