8个职位/ 0个新职位
最后发表
motred
离线
最后看到:5年6个月前
专家
加入:2014-01-20 21:48
与中心设备绑定

我希望Android手机能够绑定DA14580设备,这样其他手机就不能连接到它。我可以通过应用程序与我的设备配对,但结合过程失败了。

我需要做什么,以支持与DA14580键合?是否有相关文档?

PY_Dialog
离线
最后看到:2年10个月前
工作人员
加入:2014-08-25“
嗨Motred,

嗨Motred,

请参阅GAP界面论文“RW-BLE-GAP-IS”,在5.6章中对bonding有详细的描述。

的问候!
PY

mansonhui
离线
最后看到:1年5个月前
加入:2014-07-15 33
如果我加上BD地址

如果将中心设备的BD地址加入白名单,如何重新连接到该中心设备?可以还是不能,哪个API?

klim9531
离线
最后看到:4年5个月前
加入:2015-01-28 23:52
作为对其他人的提醒,我有

作为对其他人的说明,我仔细阅读了文档/论坛,查看了参考项目,通读了白皮书,甚至直接联系了Dialog。经过这一切,我发现了一个关键点,我认为他们没有沟通。如果我错了,这里是纠正我的好地方。

我断言,如果你想在iPhone或Android设备之间有一个排他连接,该设备的BD地址必须在编译时被知道(并添加到白名单)。

也就是说,你当然可以使用一个需要密码的键合过程。问题是,至少对我来说,PIN对于外围设备的每个实例都是相同的。

所以如果我的5台设备在同一个房间里,任何使用我的应用程序的人都可以连接到5台设备中的任何一台(如果他们有通用的PIN)。

此外,iPhone/Android设备将无法区分它连接到我的哪个设备(两个设备之间的唯一区别是BD地址)。

在我的设计中,我希望用户能够将自己的手机连接到自己的设备上,而忽略附近其他用户的设备。我也不希望其他用户的手机能够连接到彼此的设备,只与他们之前建立了一个“绑定”(不是BOND,这是一个使用我们上面讨论的PIN进行配对/加密的过程))。

所以,请告诉我,我错了。如果我错了,请告诉我,如果我没有错,以下是一个简单但非常有价值的参考项目的大纲,我认为它将帮助任何打算使用iPhone/Android作为中心的开发者:

参考项目:按钮-按下绑定中心到外围设备
—允许任何中心设备启动扫描的项目,其中外围设备像往常一样响应广告。
参考项目有一个自定义的特征,在它的广告中,包含一些外围运行时数据(一个字节就足够了,最初的btye可能是0x00)。
开发人员配置他的应用程序,首先打开,扫描特定名称的外设,然后查看自定义特征中的数据(不连接)。
——开发人员配置他的应用程序拒绝连接任何外设的所有BD地址,直到该特征中的数据读取一个特定的值(比如0xFF)。
——参考项目被配置为更改自定义特性的值为0xFF 10秒,当设备上的一个按钮被按下。
开发人员配置他的应用程序读取和存储外设的BD地址,显示自定义特征0xFF。
——开发者配置他的应用程序,在启动时,它读取存储的BD地址列表,然后允许与存储的BD地址匹配的外设连接。

现在问题解决了。当然,另一个应用开发人员可以编写应用程序连接到任何用户的设备,尽管自定义特征的价值。所以这不是一个“安全”连接。但如果我们不需要它,我们只需要多个外围/中心设备在同一个区域运行,这就很好地解决了问题。更棒的是,它使得用户可以将他的iPhone/Android连接到多个外围设备,只要用户之前在每个外围设备上执行过“BIND”。

我们总是可以稍后配置应用/外设来做上述的事情,但也可以执行BOND,此时连接是安全的。

最后,真正需要做的是开发人员编写自定义特征来完成我上面描述的事情,这也是我现在正在做的事情。如果我让这件事变得更困难,那么请让我知道。如果其他任何人看到了这个想法的价值,并希望Dialog把一个参考项目放在一起,请在这里评论。我打赌他们有人能在不到一小时内完成。至于我,我会看看它在....上的进展

干杯,klim

Joacimwe
离线
最后看到:1年5个月前
大师
加入:2014-01-14 06:45
嗨。解决方案

嗨。对于一个“可连接的”设备和一个只能连接到绑定设备的设备,有不同的广告数据的解决方案实际上是相当普遍的。这可以以任何方式实现,使广告数据不同。例如,发布包含0或1的服务数据项。我想使用“制造商数据”类型更常见。

我认为蓝牙4.0标准并没有经过深思熟虑。有一种“定向广告”的解决方案,只用于连接到一个已知的中央,方法是将中央的bd地址包括在广告包内。但这在今天已经没用了,因为Android和iOS都使用“可解析的私有地址”。这意味着您首先必须建立连接,然后外设才能解析地址并查看它是否是已知的地址。蓝牙4.2将改变这一点。

我不明白你的意思,为了有一个“排他的”连接到一个中心,你需要知道中心的bd地址在编译时(这也没有意义,因为他们使用随机可解析的地址)。关于与PIN的配对,如何配置取决于DA14580的程序员。请查看“RW-BLE-GAP-IS”和蓝牙规范。首先,IO功能设置定义了PIN应该在中心侧输入还是在外围侧输入。另一个应该使用显示器显示一个随机的PIN码,或者用户可以通过某种方式找到的每个设备的硬编码的PIN码。如果您想为每个设备使用不同的硬编码PIN,例如,您可以使用OTP报头中的某些字段来存储这个信息。这样您就可以使用相同的应用程序代码。

klim9531
离线
最后看到:4年5个月前
加入:2015-01-28 23:52
嗨Joacimwe,

嗨Joacimwe,

谢谢你的回复和你的见解,我在论坛上看到了你的许多评论和帖子,你给我的印象是一个可靠的信息来源。

我没有通读所有的RW-BLE-xx API文档,这是一个令人生畏的过程。我相信,对分层和抽象的更透彻的理解将对我大有裨益,并有助于作为一个BLE设备开发人员。

事实是,我是一个孤独的开发人员,我负责开发一切对我们设备的硬件设计(4日创原型功能齐全)应用水平发展为我们祝福设备(在iOS和Android,目前,赢得跟随)。

所以我没有足够的时间来阅读BLE API文档。这就是为什么我在这里的论坛寻求见解,以及为什么我如此重视Dialog非常有用的参考设计。这也是为什么我在上面的评论中问我是否错了或遗漏了什么,很有可能我错了。如果是这样的话,那么对我来说,这似乎是一个完美的地方有一个更正贴,因为我还没有找到一个解决方案,我认为这是一个非常普遍的目标。

我会尽量更好地解释我提到的“独家”连接到一个中心。我将上述内容的精髓传达给了Dialog,他们很好地给我发了一份关于白名单主题的白皮书。pdf。我阅读报纸(我没有现在和我)我的外卖的白皮书,虽然白名单策略可以用来只允许一个设备与一个已知的BD地址连接,BD地址必须是已知的编程和OTP放入白名单。因此,对我来说,白名单策略无法限制对单个设备的连接。

写一个随机数销OTP不为我工作有两个原因,一,我从外部flash,而不是编程OTP,引导,更重要的是,我将需要找到一个交流方式销给最终用户,当他们设置设备第一次他们掌握了这样做的信息。在设备上盖章或将其包含在设备附带的某些类型的文档中似乎充满了潜在的问题;如果用户丢失了那张纸怎么办?如何在设备的外壳上装饰正确的PIN码?但也许我缺少一个显而易见的解决方案……

所以对我来说,最简单的解决方案就是我上面所描述的,而你也很好地确认了这是一个常见的需求——“为一个“可连接”设备提供不同的广告数据和一个只能连接到绑定设备的设备实际上是很常见的。”这就是我曾希望听到,这是一个常见的足够的需求,对话框将在他们的一个开发人员把一个小时或更少的参考设计简单地改变了广告数据时,外围设备上的一个按钮被按下。

再次感谢您对Joacimwe的投入,我希望我所要求的不是您和Dialog团队认为非常琐碎且不值得进一步关注的事情。我已经尝试在这个论坛上帮助别人,无论何时我的位置,我感谢你的时间和帮助,并将继续传递下去。

干杯,klim

Joacimwe
离线
最后看到:1年5个月前
大师
加入:2014-01-14 06:45
嗨了。我遗憾的是

嗨了。不幸的是,我没有直接的代码,而是一些提示。

关于白名单的事。在OTP中存储地址并不是强制的。如果你查看RW-BLE-GAP-IS,在GAPM_WHITE_LIST_MGT_CMD中有一些api用于从白名单中添加/删除设备。出于某些原因,你只能拥有3个设备……但这个解决方案在iOS/Android系统中毫无价值,因为这些手机使用的都是可解析的随机地址。

快要失去希望的时候如果你想阻止中央、连接到你,你需要使用GAPM_RESOLV_ADDR_CMD功能,在响应给你一个GAPM_ADDR_SOLVED_IND消息如果一个已知的中央连接(除非有人恶搞的地址所以你应该还需要确定你想要加密安全性),或者状态为GAP_ERR_NOT_FOUND的GAPM_CMP_EVT,如果是,可以断开链接。

我不知道你的用例,但看起来你并不是真的需要安全?

无论如何,要更改广告数据,如果使用SDK3,请查看app_adv_func。在SDK5中,在ble_app_profile示例中查看user_profile.c。
然后只要你想重新启动广告就可以了。

klim9531
离线
最后看到:4年5个月前
加入:2015-01-28 23:52
嗨Joacimwe,

嗨Joacimwe,

谢谢你的提示,我将探索改变广告数据的方法,这似乎是我问题的最好解决方案。

干杯,klim