做个简单的记录。
基于NDK11做的,在nrf52板子上跑没问题。
Nordic主机、从机设置静态密码方式相同。
设置方法如下:
#define DEFAULT_PASS_KEY “123456”
static void device_manager_init(bool erase_bonds)
{
...
...
uint8_t passkey[] = DEFAULT_PASS_KEY; //设置静态配对码
ble_opt_t m_static_pin_option;
m_static_pin_option.gap_opt.passkey.p_passkey= passkey;
err_code=sd_ble_opt_set(BLE_GAP_OPT_PASSKEY,&m_static_pin_option);
APP_ERROR_CHECK(err_code);
}
设置完毕,建立连接时,需要输入密码,如下:
static void on_ble_evt(ble_evt_t * p_ble_evt)
{
。。。
。。。
case BLE_GAP_EVT_PASSKEY_DISPLAY: //显示密码
NRF_LOG_PRINTF("[APPL]:Show passkey: ");
for ( int i = 0; i < 6; i++)
{
NRF_LOG_PRINTF("%c",p_ble_evt->evt.gap_evt.params.\
passkey_display.passkey[i]);
}
NRF_LOG_PRINTF("\n");
break;
case BLE_GAP_EVT_AUTH_KEY_REQUEST: //回复密码,可以通过按键输入。这里直接回复静态密码
if (p_ble_evt->evt.gap_evt.params.auth_key_request.key_type == BLE_GAP_AUTH_KEY_TYPE_OOB)
{
err_code = sd_ble_gap_auth_key_reply(p_ble_evt->evt.gap_evt.conn_handle,
BLE_GAP_AUTH_KEY_TYPE_PASSKEY,
(const uint8_t *)DEFAULT_PASS_KEY);
}
break;
}
主机与从机设置的代码相同,把主机从机都这么设置就可以了。