Movesense 2.0.0 HR+传感器订阅HR/ECG后无法获取状态变更通知咨询
我在HR+传感器上使用Movesense 2.0.0时遇到以下问题:内部订阅连接器状态变更通知功能运行符合预期,但同时订阅HR和/或ECG后,就无法再接收到连接器状态变更通知。我在hr_wakeup_app中订阅HR即可复现该问题,请问该行为是否属于预期情况?
问题解答
该行为不属于预期情况,是Movesense 2.0.0版本的已知底层资源限制导致的问题。
根因说明
- Movesense 2.0.0的蓝牙LE通知栈默认设置了固定数量的通知槽位,默认值为3,所有需要主动推送的事件都需要占用槽位才能投递
- 连接器状态变更通知本身占用1个槽位,HR数据订阅占用1个槽位,ECG数据订阅根据采样率不同会占用1~2个槽位,当你同时订阅HR/ECG后,所有通知槽位被占满,新产生的连接器状态变更事件无法分配到槽位,就会被系统静默丢弃
验证方法
你可以在hr_wakeup_app的订阅回调逻辑中添加日志,打印系统当前剩余的通知槽位计数,就能观察到订阅HR服务后,剩余槽位变为0,后续的连接器状态事件无法完成投递。
修复方案
- 最优方案:将固件升级到Movesense 2.1.0及以上版本,官方已经重构了通知槽位的动态分配逻辑,多订阅场景下不会再出现状态通知丢失的问题
- 如果你必须保留在2.0.0版本,可以手动修改固件配置:在
app_settings.h头文件中将MAX_BLE_NOTIFICATIONS的宏定义值从默认的3调整到5及以上,重新编译烧录固件即可解决冲突
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

