我必须在嵌入式设备上编写一个 BLE 应用程序,并且有一些功能我不确定 BLE 是否支持它,或者我是否必须为所有内容创建一些包装器,或者它是否可能根本不可能。我在互联网上找到的关于蓝牙和 BLE 的一般描述通常只涵盖整体功能,但不会太详细。如果这篇文章变得太复杂,我会将它分成不同的较小的。
我用的是STM32 BlueNRG-MS芯片
1. 可发现性(已解决)
如果有多个设备可以访问,用户必须能够禁用 BLE 功能。我看到有功能aci_gap_set_discoverable()
,或者aci_gap_set_non_discoverable()
尽管我将其设置为不可发现,但我仍然可以在我的手机上的 LightBlue 应用程序中看到它。如何正确禁用设备的 BLE 功能以确保没有人可以看到或连接到它?
更新:好吧,这是我的错误,如果我调用该aci_gap_set_non_discoverable()
函数,它实际上是不可发现的。所以没关系。
2.只接受配对设备的连接
我想实现这样的行为,如果您有一部未配对的手机,您必须将 BLE 设备设置为配对模式才能连接。如果手机已经配对,无论当前是否处于配对模式,BLE 设备都应接受连接请求。这是白名单应该存在的内容,还是我必须在成功配对后通过保存设备地址手动执行此操作?如果白名单是正确的方法,我读到较新的手机会导致白名单出现问题,因为它们会定期更改地址,我该如何处理?这实际上就是我认为我要使用“可发现性”的地方。
3.自动重连
我不确定这个话题是否必须在 BLE 设备或手机上处理。例如,我的手机与我的汽车收音机配对,所以只要手机在车内,它就会自动连接 - 这是如何完成的?我认为它仍然是充当中央设备的电话吗?