Nordic 建立連線的過程之(一)

2021-09-11 01:10:59 字數 1546 閱讀 8264

建立流程:

scan_start()

1. 發現廣播從機,並觸發廣播報告事件;

nrf_ble_scan_on_ble_evt

case ble_gap_evt_adv_report:

nrf_ble_scan_on_adv_report(p_scan_data, p_adv_report);

break;

2. 判斷廣播報告中 uuid 是否為需要的 uuid ?

adv_uuid_compare

ble_a***ata_uuid_find

// 在什麼時機可以拿到,mac位址????

3. 聯結藍芽從機,並觸發聯結事件 (注: 藍芽實際是通過 mac 位址進行聯結的) 

建立ble的連線

nrf_ble_scan_on_adv_report

if (is_whitelist_used(p_scan_ctx))

4. 藍芽聯結成功後,啟動藍芽服務資料發現 ble_db_discovery_start(), (ble_evt_handler)

switch (p_ble_evt->header.evt_id)

{// upon connection, check which peripheral is connected, initiate db

// discovery, update leds status, and resume scanning, if necessary.

case ble_gap_evt_connected:

{nrf_log_info("connection 0x%x established, starting db discovery.",

p_gap_evt->conn_handle);

err_code = ble_db_discovery_start(&m_db_disc[p_gap_evt->conn_handle],

p_gap_evt->conn_handle);

5. 藍芽發現主服務事件處理, 處理函式: ble_db_discovery_on_ble_evt();

void ble_db_discovery_on_ble_evt(ble_evt_t const * p_ble_evt,

void            * p_context)

{verify_param_not_null_void(p_ble_evt);

verify_param_not_null_void(p_context);

verify_module_initialized_void();

ble_db_discovery_t * p_db_discovery = (ble_db_discovery_t *)p_context;

switch (p_ble_evt->header.evt_id)

{case ble_gattc_evt_prim_srvc_disc_rsp:

on_primary_srv_discovery_rsp(p_db_discovery, &(p_ble_evt->evt.gattc_evt));

break;

SpringBoot開發過程之一

建立完成 編寫乙個簡單的類然後在配置檔案設定屬性,在controller中獲取該屬性值 寫乙個studnet實體類 package com.bdqn.spring boot 10 31 5.entity import org.springframework.boot.context.properti...

機器學習基本過程(之一)

基本過程 定義模型 訓練模型 採用tensorflow不同介面的實現方法 使用keras 使用 estimator 構建模型 tensorflow低階api 1.繼承 tf.keras.model,定義網路每一層。import tensorflow as tf class mymodel tf.ke...

Web Web請求過程之一 HTTP

請求過程 1 使用者在瀏覽器輸入 www.sdjtu.edu.cn 這個url。2 瀏覽器請求 dns 伺服器將這個 url 解析成對應的 ip 位址。3 瀏覽器向 ip 位址對應的這個伺服器發起乙個get請求。4 伺服器返回資料資源。一 http解析 1 常見的http請求頭 2 常見的http響...