如何禁用Movesense传感器蓝牙连接仅保留广播功能
你使用的BLE_COMMUNICATION(false)宏的作用仅为禁用Movesense专属的MDS(Movesense Data Service)GATT服务,不会修改蓝牙底层的连接权限,所以传感器默认仍然会对外暴露可连接的广播,允许其他设备建立连接访问默认开启的电池、设备信息等通用GATT服务。
要实现完全禁用蓝牙连接、仅保留广播功能,核心是将蓝牙广播类型从默认的可连接类型修改为不可连接类型,操作步骤如下:
- 第一步:保留你已经添加的
BLE_COMMUNICATION(false)代码,关闭MDS相关服务 - 第二步:在App初始化完成后修改蓝牙广播配置,将广播类型设置为非连接无向广播
- 第三步:重新启动蓝牙广播使配置生效
示例代码可参考:
// 在App的onInit()或蓝牙初始化完成的回调中添加以下代码 auto& bleManager = whiteboard::GetResource<wb::BLE::BleManager>("/net/ble"); bleManager.stopAdvertising(); // 修改广播参数,设置为不可连接 wb::BLE::AdvertisingSettings advSettings = bleManager.getAdvertisingSettings(); advSettings.type = wb::BLE::AdvertisingType::NON_CONNECTABLE_UNDIRECTED; // 可根据需要调整广播间隔、自定义广播数据等其他参数 advSettings.intervalMin = 100; // 单位ms,按需调整 advSettings.intervalMax = 200; bleManager.setAdvertisingSettings(advSettings); bleManager.startAdvertising();
修改完成后,传感器只会对外发送蓝牙广播包,所有外部设备都无法向传感器发起蓝牙连接请求,也就无法访问任何GATT服务。
内容的提问来源于stack exchange,提问作者Jussi Virkkala
相关产品推荐
相关产品推荐

