作为一个新手,我想知道是否有一种方法可以在外设上硬编码,只允许一个独特的中央/主控连接.....?
即。 /例如 我在RedBearLab Blend-Micro上有一个'简单聊天'Arduino应用程序(用于所有密集目的,与带有BLE屏蔽的Arduino Uno相同)我只想要一个单独/独特的手机可以连接它和因此可以使用它。
我的理解是GAP在BLE连接期间处理安全功能。
因此,是否有某种方法可以在下列其中一项中包含以下内容来“编码”外围设备: spi.h? boards.h? EEPROM.h? RBL_nRF8001.h(或类似的)? 其他
未能从Restricting the BLE peripheral device to connect to only one Master
得到答案或
我是否坚持使用一切连接但是在GATT配置文件中以其他方式编写外设(我认为)只能使用预定义的唯一中心/主机(如何/在哪里编码?)执行某些操作。
非常感谢提前的想法
答案 0 :(得分:0)
作为一个新手,我想知道是否有办法在外围设备上硬编码,只允许一个独特的中央/主设备连接.....? < / p>
“{3}}规范中指定的”广告过滤策略“。它是广告参数中的一个字节,如第7.8.5 LE Set Advertising Parameters Command
节中所述。
例如,值0x02
读取允许来自任意的扫描请求,仅允许来自白名单的连接请求。
然后theres部分7.8.16 LE Add Device To White List Command
。
也就是说,如果您的设备确认蓝牙4.0规范,它应该支持这些HCI命令。但是,可能存在简化这些过程的函数,包装这些HCI命令以便于使用。请查看设备的文档以了解此类方法。
祝你好运!
答案 1 :(得分:0)
我被要求通过电子邮件回答这个问题。离开BLE工作已近一年了。所以我只根据我的记忆回答这个问题。
基本上@dominik没错。
如果设备是新的,它应该正常通告(不设置白名单位),然后任何中央设备可以连接和绑定。一旦绑定,您应该将此绑定标志和绑定主机的bd_addr保存到EEPROM。如果下次主节目丢失,您将使用该白名单标志集进行广告宣传。如果新的中心尝试连接,您可以验证其地址是否与主服务器相同。
我手头没有BLE规格,我已经忘记了很多关于BLE的事情。可能规范说某个地方,如果中央看到一个外围设备正在广播,只设置了白名单标志,如果它不能识别该外围设备,它就不会尝试连接。这节省了一些努力。
但无论是否只有white-list-only标志,master都可以始终启动与外围设备的连接。因此,检查连接中央设备的地址是否与先前保护的主设备相同是最后的选择。
[更新]
我使用的是CSR1010芯片。我记得BLE堆栈实际上允许我将bd_addr列表插入到堆栈维护的白名单数据结构中。然后,在设置了white-list-only标志的情况下,较低级别的堆栈层将帮助您在不知情的情况下过滤不在该白名单中的设备。
但是,您始终可以从应用程序代码中过滤bd_addrs。