Pull Request已成功合入, 合并人@openharmony_ci
(感谢 cnhesai 的贡献)感谢提交 Pull Requests!如果您提交的PR已经开发完毕,请评论 "start build" 触发门禁,更多交互操作,请访问OpenHarmony社区支持命令清单。如果需要调整订阅PR、Issue的变更状态,请访问订阅链接。
Thanks for submitting the pull request. If your Pull Request has already been developed, you can leave a "start build" comment to trigger the gated system. For more commands, please visit OpenHarmony Command List. If you need to change the subscription of a Pull Request or Issue, please visit the link.


PerceptionAdvStop 存在逻辑错误。当蓝牙关闭时,PerceptionAdvOnBtStateChanged 会将 isAdvertising 设为 false 但保留 currentType。此时调用 PerceptionAdvStop 会因 isAdvertising 为 false 而直接返回,不清理 currentType。当蓝牙重新打开时,会错误地恢复本应已停止的广播。
PerceptionAdvStop 不应仅依赖 isAdvertising 判断是否需要清理状态,应无论广播是否正在运行都清理 currentType 等期望状态,或者在蓝牙关闭时不修改 isAdvertising 而是使用单独的标志位记录底层状态。


PerceptionAdvertiserDeinit 在持有 opLock 锁的情况下调用 SchedulerUnregisterBroadcaster。如果该函数是同步的并触发回调,或内部有同步等待逻辑,极易导致死锁。
在持有锁期间仅拷贝 bcId 并清理状态,释放锁后再调用 SchedulerUnregisterBroadcaster 进行反注册。


在函数 PerceptionAdvOnBtStateChanged 中,未检查 GetLooper 返回的 looper 是否为 NULL,可能导致程序崩溃。
在调用 GetLooper 后,应检查返回的 looper 是否为 NULL,以避免空指针解引用。


在函数 PerceptionAdvOnBtStateChanged 中,未检查 SoftBusMutexLock 的返回值,可能导致程序崩溃。
在调用 SoftBusMutexLock 后,应检查返回值是否为 SOFTBUS_OK,以避免在锁未成功获取时继续执行。


在函数 PerceptionAdvertiserDeinit 中,未释放 looper 资源,可能导致资源泄漏。
在函数结束前,应释放 looper 资源,以避免资源泄漏。


新增 lane_hub perception 模块,包含 advertiser/scanner/manager,提供近场设备感知与广播能力。
变更范围:
Co-Authored-By: Agent