BlueZ中le_set_scan_parameters_cp结构体各字段的含义是什么?
typedef struct { uint8_t type; uint16_t interval; uint16_t window; uint8_t own_bdaddr_type; uint8_t filter; } __attribute__ ((packed)) le_set_scan_parameters_cp;
该结构体是BlueZ中对应BLE LE Set Scan Parameters HCI命令的入参结构体,用于配置BLE扫描的核心参数,各字段含义如下:
type:BLE扫描类型,可选值为0x00(被动扫描,仅监听广播包不发送扫描请求)、0x01(主动扫描,监听到可扫描广播后会主动发送SCAN_REQ请求获取额外广播数据)interval:扫描间隔,单位为0.625ms,取值范围0x0004(2.5ms)~0x4000(10240ms),代表两次连续扫描启动的时间间隔。数值越大扫描频率越低、功耗越低,但漏检广播包的概率越高。window:扫描窗口,单位同样为0.625ms,取值范围0x0004(2.5ms)~0x4000(10240ms),代表每个扫描周期间内实际用于监听射频通道的时长,必须小于等于interval的数值。window越接近interval说明扫描占空比越高,发现设备的速度越快,功耗也越高。例如interval设为100ms、window设为50ms时,每100ms周期内有50ms处于扫描状态,功耗占空比为50%。own_bdaddr_type:本机蓝牙地址类型,可选值包括0x00(公有地址)、0x01(随机静态地址)、0x02(可解析私有地址)、0x03(不可解析私有地址)filter:扫描过滤策略,用于配置是否过滤陌生设备的广播包,可选值如下:- 0x00:接受所有广播包,不根据广播地址过滤
- 0x01:仅接受白名单内设备发送的广播包
- 0x02:接受所有广播包,仅对来自白名单设备的定向广播包返回响应
- 0x03:仅接受白名单内设备的广播包,且仅对来自白名单设备的定向广播包返回响应
所有参数的定义均可参考蓝牙核心规范4.0及以上版本的「Volume 2, Part E, 7.8.10 LE Set Scan Parameters command」章节,BlueZ的结构体字段完全对齐该命令的协议参数定义实现。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

