Seeed Studio XIAO BLE短名称扫描过滤器添加失败(ENOMEM错误)
Zephyr BLE短名称扫描过滤:ENOMEM错误与配置问题
环境与需求
- 系统:Windows
- 开发工具:VS Code + nRF Connect扩展
- 开发板:Seeed Studio XIAO nRF52840
- 目标:基于
<bluetooth/scan.h>实现带短名称过滤的BLE扫描功能
预期实现步骤
按照Zephyr BLE扫描API的逻辑,实现过滤扫描的步骤如下:
- 通过
bt_scan_filter_add将过滤器添加至扫描参数(过滤器结构需参考源码定义) - 通过
bt_scan_filter_enable启用过滤器,指定所需过滤模式 - 通过
bt_scan_cb_register注册回调函数,其中scan_filter_match回调负责定义过滤匹配后的处理逻辑 - 通过
bt_scan_start启动扫描
遇到的问题
内存分配失败(ENOMEM -12)
调用bt_scan_filter_add添加短名称过滤器时,返回ENOMEM错误。已尝试调整内存相关配置:CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=4096 CONFIG_MAIN_STACK_SIZE=4096 CONFIG_HEAP_MEM_POOL_SIZE=8192 CONFIG_LOG_BUFFER_SIZE=4096配置项无效
参考相关资料得知需通过BT_SCAN_SHORT_NAME_CNT配置短名称过滤器数量,但在proj.config中添加BT_SCAN_SHORT_NAME_CNT=1时,工具提示:ignoring malformed line 'BT_SCAN_SHORT_NAME_CNT=1'且查询Zephyr配置项列表,未找到该配置标识。
求助
请说明上述错误的原因,以及如何正确配置并实现带短名称过滤的BLE扫描功能。
内容的提问来源于stack exchange,提问作者Harmandeep Dubb
相关产品推荐
相关产品推荐

