在BLE

时间:2017-04-19 01:50:59

标签: bluetooth-lowenergy

如何在BLE中实施通知?

我有一部智能手机,它每小时都会向所有附近的BLE设备(智能手表,RFduino等)发送通知,以便进行时间同步。

其他设备现在是服务器(因为它提供数据),智能手机是收集数据的客户端。

我可以搭载广告包吗?例如,智能手机总是广播广告包以宣告其存在(其他设备可以如何找到它)。我可以将该数据包修改为时间同步吗?

1 个答案:

答案 0 :(得分:1)

为了发送通知或广告,您的智能手机必须充当服务器,这也意味着为了能够接收通知或扫描广告,您的外围设备必须充当客户端。

这可能有点棘手,因为如果两个设备充当客户端和服务器,它们可能无法同时完成另一个角色。您需要在需要时切换角色,这是一个针对各种问题的开放字段。

此外,我不相信让智能手机定期通知附近的所有设备是最佳选择。每个想要接收通知的设备都必须与设备连接才能接收通知,并且在发送通知时该连接必须已经处于活动状态才能真正获得正确的时间。因此,所有这些设备都需要提前连接到预期的通知时间,并在通知到来之前保持连接。

宣传当前时间可能会更好,但请记住,在广告时,您无法作为服务器连接到智能手机,因为链接层可能不会同时处于扫描和广告模式时间,出于类似原因做广告时,您也可能没有联系。

如果您想这样做,可以在广告数据中包含时间信息。有关广告数据结构的更多信息,请参阅蓝牙核心规范v6的补充,A部分。您可以将其放入制造商特定数据中。

但是,另一种选择是使用写请求将时间直接写入设备。您可以定义自己的服务和特征。您可以包含必要的时间同步"服务器广告数据中的信息,当智能手机评估广告时,它可以连接到相应的设备并直接发送时间。

此过程的优点是,只有在设备上真正需要时才更新时间,并且您不必切换客户端/服务器角色,因为服务器角色中的设备可能正常播放,智能手机可以永远留在客户角色。