nRF 密码配对流程

static void pair_sec_params_init(void)
{
    memset(&sec_params,0,sizeof(ble_gap_sec_params_t));

    sec_params.bond = SEC_PARAM_BOND;
    sec_params.mitm = SEC_PARAM_MITM;
    sec_params.lesc = SEC_PARAM_LESC;
    sec_params.io_caps = SEC_PARAM_IO_CAPABILITIES;
    sec_params.oob = SEC_PARAM_OOB;
    sec_params.max_key_size = SEC_PARAM_MAX_KEY_SIZE;
    sec_params.min_key_size = SEC_PARAM_MIN_KEY_SIZE;
}

-->

static void set_password(void)
{
    ret_code_t err_code;

    memcpy(passkey,STATIC_PASSKEY,6);

    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);
}

 

参考中控瑞迪优项目

 

事件流程:

手机与从设备:

BLE_GAP_EVT_CONNECTED:sd_ble_gap_authenticate(m_conn_handle,&sec_params); --> BLE_GATTC_EVT_EXCHANGE_MTU_RSP:自带库处理 --> BLE_GAP_EVT_CONN_PARAM_UPDATE:自带库处理 --> BLE_GAP_OPT_SCAN_REQ_REPORT:? --> BLE_GAP_OPT_COMPAT_MODE_1:? --> BLE_GAP_EVT_CONN_PARAM_UPDATE:自带库处理 --> BLE_GAP_EVT_SEC_PARAMS_REQUEST:sd_ble_gap_sec_params_reply(m_conn_handle,BLE_GAP_SEC_STATUS_SUCCESS,&sec_params,NULL); --> BLE_GAP_EVT_PASSKEY_DISPLAY:? --> BLE_GAP_EVT_CONN_PARAM_UPDATE:自带库处理 --> BLE_GAP_EVT_CONN_SEC_UPDATE:自带库处理 --> BLE_GAP_EVT_AUTH_STATUS: if(p_ble_evt->evt.gap_evt.params.auth_status.auth_status == BLE_GAP_SEC_STATUS_SUCCESS)

{ }

else

{} --> BLE_GAP_EVT_CONN_PARAM_UPDATE:自带库处理

 

 

主设备与从设备:

主设备蓝牙事件

BLE_GAP_EVT_ADV_REPORT:Advertising report. --> BLE_GAP_EVT_CONNECTED:Connection established. --> BLE_GAP_EVT_SEC_REQUEST:sd_ble_gap_authenticate(p_ble_evt->evt.gap_evt.conn_handle, &sec_params); --> BLE_GATTC_EVT_EXCHANGE_MTU_RSP:自带库处理 --> BLE_GAP_EVT_SEC_PARAMS_REQUEST:sd_ble_gap_sec_params_reply(p_ble_evt->evt.gap_evt.conn_handle, BLE_GAP_SEC_STATUS_SUCCESS, NULL, NULL); --> BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP:自带库处理 --> BLE_GATTC_EVT_CHAR_DISC_RSP:自带库处理 --> BLE_GATTC_EVT_CHAR_DISC_RSP:自带库处理 --> BLE_GAP_EVT_CONN_SEC_UPDATE:自带库处理 --> BLE_GAP_EVT_AUTH_STATUS:? --> BLE_GATTC_EVT_DESC_DISC_RSP:自带库处理 --> BLE_GATTC_EVT_WRITE_RSP:?

 

从设备蓝牙事件

BLE_GAP_EVT_CONNECTED:sd_ble_gap_authenticate(m_conn_handle,&sec_params); --> BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST:自带库处理 --> BLE_GATTC_EVT_EXCHANGE_MTU_RSP:自带库处理 --> BLE_GAP_EVT_SEC_PARAMS_REQUEST:sd_ble_gap_sec_params_reply(m_conn_handle,BLE_GAP_SEC_STATUS_SUCCESS,&sec_params,NULL); --> BLE_GAP_EVT_CONN_SEC_UPDATE:自带库处理 --> BLE_GAP_EVT_AUTH_STATUS:

if(p_ble_evt->evt.gap_evt.params.auth_status.auth_status == BLE_GAP_SEC_STATUS_SUCCESS)
{ 

}
else
{

}

--> BLE_GATTS_EVT_WRITE:自带库处理

 

https://www.nordicsemi.com/DocLib/Content/SoftDevice_API_Doc/S132/v5-0-0/group_ble_gap_central_legacy_msc

https://www.nordicsemi.com/DocLib/Content/SoftDevice_API_Doc/S132/v5-0-0/group_ble_gap_periph_legacy_msc

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值