我希望Android手机能够粘合到DA14580设备,使得没有其他手机可以连接到它。我可以使用应用程序与我的设备配对,但绑定过程失败。
我需要做什么,以支持与DA14580键合?是否有相关文档?
嗨马特拉德,
请参阅第5.6章中的差距界面纸“RW-BLE-GAP-IS”,有关粘合的详细说明。
的问候!PY
如果我将中央设备的BD地址添加到白名单,我如何重新连接到这个中心设备?可以与否,哪个API?
作为对其他人的说明,我仔细阅读了文档/论坛,查看了参考项目,通读了白皮书,甚至直接联系了Dialog。经过这一切,我发现了一个关键点,我认为他们没有沟通。如果我错了,这里是纠正我的好地方。
我断言,如果您希望在iPhone或Android设备之间拥有独占连接,则该设备的BD地址必须在编译时以(并添加到白名单)。
也就是说,你当然可以使用一个需要密码的键合过程。问题是,至少对我来说,PIN对于外围设备的每个实例都是相同的。
所以如果我的5台设备在同一个房间里,任何使用我的应用程序的人都可以连接到5台设备中的任何一台(如果他们有通用的PIN)。
此外,iPhone/Android设备将无法区分它连接到我的哪个设备(两个设备之间的唯一区别是BD地址)。
对于我的设计,我希望用户能够将他的手机连接到自己的设备,忽略同一附近的其他用户的设备。我也不希望其他用户的手机能够连接到彼此的设备,只有他们先前已经建立了“绑定”(而不是债券,这是使用上面讨论的引脚的判配/加密的过程)))。
所以,请告诉我,我错了。如果我错了,请告诉我,如果我没有错,以下是一个简单但非常有价值的参考项目的大纲,我认为它将帮助任何打算使用iPhone/Android作为中心的开发者:
参考项目:按钮-按下绑定中心到外围设备- 允许任何中央设备启动扫描的项目,其中外设响应广告。参考项目有一个自定义的特征,在它的广告中,包含一些外围运行时数据(一个字节就足够了,最初的btye可能是0x00)。开发人员配置他的应用程序,首先打开,扫描特定名称的外设,然后查看自定义特征中的数据(不连接)。——开发人员配置他的应用程序拒绝连接任何外设的所有BD地址,直到该特征中的数据读取一个特定的值(比如0xFF)。- 当按下设备上的按钮时,参考项目配置为将自定义特性的值更改为0xFF 10秒钟。开发人员配置他的应用程序读取和存储外设的BD地址,显示自定义特征0xFF。——开发者配置他的应用程序,在启动时,它读取存储的BD地址列表,然后允许与存储的BD地址匹配的外设连接。
问题现在解决了。授予,其他应用程序开发人员可能会编写他的应用程序来连接到任何用户的设备,尽管是自定义特征的值。所以这不是一个'安全'连接。但如果我们不需要它,我们所需要的只是在同一区域运行的多个外围/中央设备,这会很好地解决问题。甚至更好,它使用户可以将他的iPhone / Android连接到多个外围设备,只要用户先前在每个外设上执行了“绑定”。
我们可以随时稍后将App / Wipheral配置为上述操作,但也执行键,此时连接现在安全。
最后,真正需要做的是开发人员编写自定义特征来完成我上面描述的事情,这也是我现在正在做的事情。如果我让这件事变得更困难,那么请让我知道。如果其他任何人看到了这个想法的价值,并希望Dialog把一个参考项目放在一起,请在这里评论。我打赌他们有人能在不到一小时内完成。至于我,我会看看它在....上的进展
干杯,klim
你好。具有不同广告数据的解决方案对于“可连接”设备和仅粘合设备的设备应该连接到实际上非常常见。这可以以任何方式实现,使得广告数据是不同的。例如,宣传包含0或1的服务数据项。我猜使用“制造商数据”类型更常见。
我认为蓝牙4.0标准并没有经过深思熟虑。有一种“定向广告”的解决方案,只用于连接到一个已知的中央,方法是将中央的bd地址包括在广告包内。但这在今天已经没用了,因为Android和iOS都使用“可解析的私有地址”。这意味着您首先必须建立连接,然后外设才能解析地址并查看它是否是已知的地址。蓝牙4.2将改变这一点。
我不明白你的意思,为了有一个“排他的”连接到一个中心,你需要知道中心的bd地址在编译时(这也没有意义,因为他们使用随机可解析的地址)。关于与PIN的配对,如何配置取决于DA14580的程序员。请查看“RW-BLE-GAP-IS”和蓝牙规范。首先,IO功能设置定义了PIN应该在中心侧输入还是在外围侧输入。另一个应该使用显示器显示一个随机的PIN码,或者用户可以通过某种方式找到的每个设备的硬编码的PIN码。如果您想为每个设备使用不同的硬编码PIN,例如,您可以使用OTP报头中的某些字段来存储这个信息。这样您就可以使用相同的应用程序代码。
嗨Joacimwe,
谢谢你的回复和你的见解,我在论坛上看到了你的许多评论和帖子,你给我的印象是一个可靠的信息来源。
我没有通读所有的RW-BLE-xx API文档,这是一个令人生畏的过程。我相信,对分层和抽象的更透彻的理解将对我大有裨益,并有助于作为一个BLE设备开发人员。
事实是我是一个孤独的开发人员,因此我是任务在我们的设备上开发从硬件设计(第4个Gen Prototyp)对我们的BLE设备的应用程序级开发(在IOS和Android中的第四个原型)上开发所有内容目前,胜利遵循)。
所以我按时缩短了我可以通过BLE API文档读取阅读。这就是为什么我看过这里的论坛的洞察力,以及为什么我在对话对话的非常有用的参考设计上放置这样的价值。这也是为什么我在上面的评论中问我是否错误或遗漏了一些东西,我很可能是我。如果是这样,在我看来,这是一个完美的校正所发布的地方,因为我没有能够找到一个我认为的解决方案是一个非常普遍的目标。
我将尝试更好地解释我对一个中央的“独家”的连接。我传达了我写到上面的对话的本质,他们足以向我发给我的白皮书,就白名单的主题发给我。我读过这篇论文(我现在没有和我在一起),我的白皮书的外卖就是白名单策略只能用来仅允许具有已知的BD地址的设备来连接,而必须知道该BD地址编程时间并将其放入OTP中的白名单。所以对我来说,白名单策略不起作用来限制与单个设备的连接。
写一个随机数PIN到OTP对我来说不起作用两个原因,一个原因,即我从外部闪存启动而不是没有编程OTP,更重要的是,我需要找到一种传达该PIN的方法来传达该PIN的方法最终用户如此,当他们第一次设置设备时,他们就会武装这些信息。将销钉压在设备上或在某种类型的文档中包括它伴随设备似乎充满了潜在问题;如果用户失去了纸张怎么办?如何在设备的壳体上启动正确的销钉?但也许我错过了一个明显的解决方案......
所以对我来说,最简单的解决方案就是我上面所描述的,而你也很好地确认了这是一个常见的需求——“为一个“可连接”设备提供不同的广告数据和一个只能连接到绑定设备的设备实际上是很常见的。”这就是我曾希望听到,这是一个常见的足够的需求,对话框将在他们的一个开发人员把一个小时或更少的参考设计简单地改变了广告数据时,外围设备上的一个按钮被按下。
再次感谢您对Joacimwe的投入,我希望我所要求的不是您和Dialog团队认为非常琐碎且不值得进一步关注的事情。我已经尝试在这个论坛上帮助别人,无论何时我的位置,我感谢你的时间和帮助,并将继续传递下去。
嗨了。不幸的是,我没有直接的代码,而是一些提示。
关于白名单的事。在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。然后,只要你想要重新启动广告的问题就是一个问题。
谢谢你的提示,我将探索改变广告数据的方法,这似乎是我问题的最好解决方案。
嗨马特拉德,
请参阅第5.6章中的差距界面纸“RW-BLE-GAP-IS”,有关粘合的详细说明。
的问候!
PY
如果我将中央设备的BD地址添加到白名单,我如何重新连接到这个中心设备?可以与否,哪个API?
作为对其他人的说明,我仔细阅读了文档/论坛,查看了参考项目,通读了白皮书,甚至直接联系了Dialog。经过这一切,我发现了一个关键点,我认为他们没有沟通。如果我错了,这里是纠正我的好地方。
我断言,如果您希望在iPhone或Android设备之间拥有独占连接,则该设备的BD地址必须在编译时以(并添加到白名单)。
也就是说,你当然可以使用一个需要密码的键合过程。问题是,至少对我来说,PIN对于外围设备的每个实例都是相同的。
所以如果我的5台设备在同一个房间里,任何使用我的应用程序的人都可以连接到5台设备中的任何一台(如果他们有通用的PIN)。
此外,iPhone/Android设备将无法区分它连接到我的哪个设备(两个设备之间的唯一区别是BD地址)。
对于我的设计,我希望用户能够将他的手机连接到自己的设备,忽略同一附近的其他用户的设备。我也不希望其他用户的手机能够连接到彼此的设备,只有他们先前已经建立了“绑定”(而不是债券,这是使用上面讨论的引脚的判配/加密的过程)))。
所以,请告诉我,我错了。如果我错了,请告诉我,如果我没有错,以下是一个简单但非常有价值的参考项目的大纲,我认为它将帮助任何打算使用iPhone/Android作为中心的开发者:
参考项目:按钮-按下绑定中心到外围设备
- 允许任何中央设备启动扫描的项目,其中外设响应广告。
参考项目有一个自定义的特征,在它的广告中,包含一些外围运行时数据(一个字节就足够了,最初的btye可能是0x00)。
开发人员配置他的应用程序,首先打开,扫描特定名称的外设,然后查看自定义特征中的数据(不连接)。
——开发人员配置他的应用程序拒绝连接任何外设的所有BD地址,直到该特征中的数据读取一个特定的值(比如0xFF)。
- 当按下设备上的按钮时,参考项目配置为将自定义特性的值更改为0xFF 10秒钟。
开发人员配置他的应用程序读取和存储外设的BD地址,显示自定义特征0xFF。
——开发者配置他的应用程序,在启动时,它读取存储的BD地址列表,然后允许与存储的BD地址匹配的外设连接。
问题现在解决了。授予,其他应用程序开发人员可能会编写他的应用程序来连接到任何用户的设备,尽管是自定义特征的值。所以这不是一个'安全'连接。但如果我们不需要它,我们所需要的只是在同一区域运行的多个外围/中央设备,这会很好地解决问题。甚至更好,它使用户可以将他的iPhone / Android连接到多个外围设备,只要用户先前在每个外设上执行了“绑定”。
我们可以随时稍后将App / Wipheral配置为上述操作,但也执行键,此时连接现在安全。
最后,真正需要做的是开发人员编写自定义特征来完成我上面描述的事情,这也是我现在正在做的事情。如果我让这件事变得更困难,那么请让我知道。如果其他任何人看到了这个想法的价值,并希望Dialog把一个参考项目放在一起,请在这里评论。我打赌他们有人能在不到一小时内完成。至于我,我会看看它在....上的进展
干杯,klim
你好。具有不同广告数据的解决方案对于“可连接”设备和仅粘合设备的设备应该连接到实际上非常常见。这可以以任何方式实现,使得广告数据是不同的。例如,宣传包含0或1的服务数据项。我猜使用“制造商数据”类型更常见。
我认为蓝牙4.0标准并没有经过深思熟虑。有一种“定向广告”的解决方案,只用于连接到一个已知的中央,方法是将中央的bd地址包括在广告包内。但这在今天已经没用了,因为Android和iOS都使用“可解析的私有地址”。这意味着您首先必须建立连接,然后外设才能解析地址并查看它是否是已知的地址。蓝牙4.2将改变这一点。
我不明白你的意思,为了有一个“排他的”连接到一个中心,你需要知道中心的bd地址在编译时(这也没有意义,因为他们使用随机可解析的地址)。关于与PIN的配对,如何配置取决于DA14580的程序员。请查看“RW-BLE-GAP-IS”和蓝牙规范。首先,IO功能设置定义了PIN应该在中心侧输入还是在外围侧输入。另一个应该使用显示器显示一个随机的PIN码,或者用户可以通过某种方式找到的每个设备的硬编码的PIN码。如果您想为每个设备使用不同的硬编码PIN,例如,您可以使用OTP报头中的某些字段来存储这个信息。这样您就可以使用相同的应用程序代码。
嗨Joacimwe,
谢谢你的回复和你的见解,我在论坛上看到了你的许多评论和帖子,你给我的印象是一个可靠的信息来源。
我没有通读所有的RW-BLE-xx API文档,这是一个令人生畏的过程。我相信,对分层和抽象的更透彻的理解将对我大有裨益,并有助于作为一个BLE设备开发人员。
事实是我是一个孤独的开发人员,因此我是任务在我们的设备上开发从硬件设计(第4个Gen Prototyp)对我们的BLE设备的应用程序级开发(在IOS和Android中的第四个原型)上开发所有内容目前,胜利遵循)。
所以我按时缩短了我可以通过BLE API文档读取阅读。这就是为什么我看过这里的论坛的洞察力,以及为什么我在对话对话的非常有用的参考设计上放置这样的价值。这也是为什么我在上面的评论中问我是否错误或遗漏了一些东西,我很可能是我。如果是这样,在我看来,这是一个完美的校正所发布的地方,因为我没有能够找到一个我认为的解决方案是一个非常普遍的目标。
我将尝试更好地解释我对一个中央的“独家”的连接。我传达了我写到上面的对话的本质,他们足以向我发给我的白皮书,就白名单的主题发给我。我读过这篇论文(我现在没有和我在一起),我的白皮书的外卖就是白名单策略只能用来仅允许具有已知的BD地址的设备来连接,而必须知道该BD地址编程时间并将其放入OTP中的白名单。所以对我来说,白名单策略不起作用来限制与单个设备的连接。
写一个随机数PIN到OTP对我来说不起作用两个原因,一个原因,即我从外部闪存启动而不是没有编程OTP,更重要的是,我需要找到一种传达该PIN的方法来传达该PIN的方法最终用户如此,当他们第一次设置设备时,他们就会武装这些信息。将销钉压在设备上或在某种类型的文档中包括它伴随设备似乎充满了潜在问题;如果用户失去了纸张怎么办?如何在设备的壳体上启动正确的销钉?但也许我错过了一个明显的解决方案......
所以对我来说,最简单的解决方案就是我上面所描述的,而你也很好地确认了这是一个常见的需求——“为一个“可连接”设备提供不同的广告数据和一个只能连接到绑定设备的设备实际上是很常见的。”这就是我曾希望听到,这是一个常见的足够的需求,对话框将在他们的一个开发人员把一个小时或更少的参考设计简单地改变了广告数据时,外围设备上的一个按钮被按下。
再次感谢您对Joacimwe的投入,我希望我所要求的不是您和Dialog团队认为非常琐碎且不值得进一步关注的事情。我已经尝试在这个论坛上帮助别人,无论何时我的位置,我感谢你的时间和帮助,并将继续传递下去。
干杯,klim
嗨了。不幸的是,我没有直接的代码,而是一些提示。
关于白名单的事。在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。
然后,只要你想要重新启动广告的问题就是一个问题。
嗨Joacimwe,
谢谢你的提示,我将探索改变广告数据的方法,这似乎是我问题的最好解决方案。
干杯,klim