Catalog
Nordic蓝牙学习笔记(一)

基于 NORDIC softDevice 蓝牙协议栈 S132, nRF5 SDK Ver 15.0.0

蓝牙角色: 主机,ble_central
文章内容: 蓝牙主机与从机建立联结及服务发现过程 程序样例:
nRF5_SDK_15.0.0\examples\ble_central\ble_app_uart_c 关于NORDIC softDevice 蓝牙协议栈主机的蓝牙初始化,请参见博客文章: NORDIC softDevice
蓝牙协议栈初始化程序分析(蓝牙主机,ble_central)
发现广播从机,并触发广播报告事件;
回调函数 ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context) 处理 BLE_GAP_EVT_ADV_REPORT

static void on_adv_report(ble_gap_evt_adv_report_t const * p_adv_report)
{
ret_code_t err_code;

if (ble_advdata_uuid_find(p_adv_report->data.p_data, p_adv_report->data.len, &m_nus_uuid))
{
...
}
}

联结蓝牙从机,并触发联结事件 (注: 蓝牙实际是通过 MAC 地址进行联结的)
BLE 联结函数 sd_ble_gap_connect(&p_adv_report->peer_addr,
&m_scan_params,&m_connection_param,APP_BLE_CONN_CFG_TAG);

static void on_adv_report(ble_gap_evt_adv_report_t const * p_adv_report)
{
ret_code_t err_code;

if (ble_advdata_uuid_find(p_adv_report->data.p_data, p_adv_report->data.len, &m_nus_uuid))
{
err_code = sd_ble_gap_connect(&p_adv_report->peer_addr,
&m_scan_params,
&m_connection_param,
APP_BLE_CONN_CFG_TAG);
...
}
}
Author: Jone-Mark
Link: http://94.191.80.102:4000/2019/05/16/Nordic%E8%93%9D%E7%89%99%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%EF%BC%88%E4%B8%80%EF%BC%89/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.