nordic51 52 设置静态密码的方法



做个简单的记录。

基于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;

}


主机与从机设置的代码相同,把主机从机都这么设置就可以了。

你可能感兴趣的:(nordic51 52 设置静态密码的方法)