Nordic nRF5 SDK 学习笔记之十, 蓝牙 Central 扫描参数 ble_gap_scan_params_t 理解

软件: nRF SKD Ver 15.2, S140 SoftDevice API

文档路径: ~/nRF5_SDK_15.2.0_offline_doc/s140/structble__gap__scan__params__t.html


1. ble_gap_scan_params_t::active; 

    值:   1: 主动扫描, 0: 被动扫描; 

如果需要获得扫描响应,需要 Central 主机设置为主动扫描。如果只是需要广播数据则设置为被动扫描。

两者区别在于:主动扫描可以获得广播数据和扫描响应数据,而被动扫描只能获得广播数据。

2. ble_gap_scan_params_t::timeout;  (单位: 10 毫秒, 扫描超时 )

    值:   受限于 GAP Scan timeout max and min

        #define     BLE_GAP_SCAN_TIMEOUT_MIN   0x0001                // 1: 最小扫描时间周期  1* 10mS = 10 毫秒.
        #define     BLE_GAP_SCAN_TIMEOUT_UNLIMITED   0x0000   //0: 一直扫描直到被停止, 没有扫描超时限制;

3. ble_gap_scan_params_t::interval;  (单位: 625 微秒,扫描间隔 )

    值:   受限于 GAP Scan interval max and min 

        #define     BLE_GAP_SCAN_INTERVAL_MIN   0x0004    // Minimum Scan interval in 625 us units, i.e. 2.5 ms.
        #define     BLE_GAP_SCAN_INTERVAL_MAX   0xFFFF  // Maximum Scan interval in 625 us units, i.e. 40,959.375 s.

4. ble_gap_scan_params_t::window;  (单位: 625 微秒,扫描窗口 )

    值:    受限于 GAP Scan window max and min

        #define     BLE_GAP_SCAN_WINDOW_MIN   0x0004    // Minimum Scan interval in 625 us units, i.e. 2.5 ms.
        #define     BLE_GAP_SCAN_WINDOW_MAX   0xFFFF  // Maximum Scan interval in 625 us units, i.e. 40,959.375 s.

如果参数 ble_gap_scan_params_t::scan_phys 为  BLE_GAP_PHY_1MBPS 或 BLE_GAP_PHY_CODEDble_gap_scan_params_t::interval 设定值须大于或等于2倍  ble_gap_scan_params_t::window 设定值;

5. ble_gap_scan_params_t::filter_policy  (接收广播过滤,如白名单)

    值:    GAP Scanner filter policies

       #define     BLE_GAP_SCAN_FP_ACCEPT_ALL   0x00 
       #define     BLE_GAP_SCAN_FP_WHITELIST   0x01 
       #define     BLE_GAP_SCAN_FP_ALL_NOT_RESOLVED_DIRECTED   0x02 
       #define     BLE_GAP_SCAN_FP_WHITELIST_NOT_RESOLVED_DIRECTED   0x03

     注: 当使用 sd_ble_gap_connect() 函数时,仅仅参数  BLE_GAP_SCAN_FP_ACCEPT_ALL , BLE_GAP_SCAN_FP_WHITELIST 有效.

6. ble_gap_scan_params_t::scan_phys (扫描通讯速率)

    值:    默认值: BLE_GAP_PHY_1MBPS

     ble_gap_scan_params_t::extended 被设置为 0, 此参数仅能为 BLE_GAP_PHY_1MBPS

    使用  sd_ble_gap_scan_start() 时, 主机将使用此设置扫描主广播通道;主机也接受 BLE_GAP_PHYS_SUPPORTED 作为次要广播通道的物理配置。

    使用  sd_ble_gap_connect() 时,这位域指示可能用这参数进行初始化。如果scan_phys 包含 BLE_GAP_PHY_1MBPS 或BLE_GAP_PHY_2MBPS, 则主扫描速率为BLE_GAP_PHY_1MBPS. 如果scan_phys 也包含 BLE_GAP_PHY_CODED, 则主扫描速率包含 BLE_GAP_PHY_CODED. 如果scan_phys 只有 BLE_GAP_PHY_CODED, 则主扫描速率仅为 BLE_GAP_PHY_CODED

7. ble_gap_scan_params_t::channel_mask (通讯通道)

    值:   至少设置一个主广播通道 ( Channel: 37~39), 其值被设为 0;次要通道暂时不支持;

typedef uint8_t     ble_gap_ch_mask_t [5]
     Channel mask (40 bits). Every channel is represented with a bit positioned as per channel index defined in Bluetooth Core Specification v5.0, Vol 6, Part B, Section 1.4.1. The LSB contained in array element 0 represents channel index 0, and bit 39 represents channel index 39. If a bit is set to 1, the channel is not used. 

8. ble_gap_scan_params_t::extended (广播扩展)

    值:  1: 扫描主机将接受蓝牙扩展广播包 ;  0: 扫描主机不接收第二个广播通道的蓝牙广播包,且不能接收长广播包(PDU, protocol data unit ). 

9. ble_gap_scan_params_t::report_incomplete_evts

    值:  1: ble_gap_evt_adv_report_t 事件中可能, ble_gap_adv_report_type_t::status 被设为 BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA

当使用 sd_ble_gap_connect() 函数时, 此参数无效; 

注意:此参数可能被用来中止接收来自扩展广播事件的多个数据包,它仅有效于扩展扫描,详情请见 sd_ble_gap_scan_start().

当前 S140 SoftDevice 不支持此功能。


NORDIC 官方原文:

ble_gap_scan_params_t Struct Reference

Structures

GAP scanning parameters. More...

#include <ble_gap.h>

Data Fields

uint8_t  extended: 1
 
uint8_t  report_incomplete_evts: 1
 
uint8_t  active: 1
 
uint8_t  filter_policy: 2
 
uint8_t  scan_phys
 
uint16_t  interval
 
uint16_t  window
 
uint16_t  timeout
 
ble_gap_ch_mask_t  channel_mask
 

Detailed Description

GAP scanning parameters.

Field Documentation

uint8_t ble_gap_scan_params_t::active

If 1, perform active scanning by sending scan requests. This parameter is ignored when used with sd_ble_gap_connect.

ble_gap_ch_mask_t ble_gap_scan_params_t::channel_mask
               Channel mask for primary and secondary advertising channels.

At least one of the primary channels, that is channel index 37-39, must be set to 0. Masking away secondary channels is not supported.

uint8_t ble_gap_scan_params_t::extended

If 1, the scanner will accept extended advertising packets. If set to 0, the scanner will not receive advertising packets on secondary advertising channels, and will not be able to receive long advertising PDUs.

uint8_t ble_gap_scan_params_t::filter_policy

Scanning filter policy.

See Also

GAP Scanner filter policies.

Note

Only BLE_GAP_SCAN_FP_ACCEPT_ALL and BLE_GAP_SCAN_FP_WHITELIST are valid when used with sd_ble_gap_connect

uint16_t ble_gap_scan_params_t::interval

Scan interval in 625 us units.

See Also

GAP Scan interval max and min.

uint8_t ble_gap_scan_params_t::report_incomplete_evts

If 1, events of type ble_gap_evt_adv_report_t may have ble_gap_adv_report_type_t::status set to BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA. This parameter is ignored when used with sd_ble_gap_connect

Note

This may be used to abort receiving more packets from an extended advertising event, and is only available for extended scanning, see sd_ble_gap_scan_start.

This feature is not supported by this SoftDevice.

uint8_t ble_gap_scan_params_t::scan_phys
                  Bitfield of PHYs to scan on. If set to @ref BLE_GAP_PHY_AUTO,

scan_phys will default to BLE_GAP_PHY_1MBPS.

uint16_t ble_gap_scan_params_t::timeout

Scan timeout in 10 ms units.

See Also

GAP Scan timeout max and min.

uint16_t ble_gap_scan_params_t::window
                     Scan window in 625 us units.@sa BLE_GAP_SCAN_WINDOW.

If scan_phys contains both BLE_GAP_PHY_1MBPS and BLE_GAP_PHY_CODED interval shall be larger than or equal to twice the scan window.

猜你喜欢

转载自blog.csdn.net/weixin_42396877/article/details/85397047