2017-04-19 90 views
0

如何在BLE中实施通知?在BLE中实施通知

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

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

我可以搭载广告套餐吗?例如,智能手机总是广播一个广告数据包来通知它的存在(这是其他设备可以找到它的方式)。我可以修改该数据包以进行时间同步吗?

回答

1

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

这可能有点棘手,因为如果两个设备充当客户端和服务器,它们可能不会同时履行其他角色。您需要随时切换角色,这对于各种问题都是一个开放的领域。

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

只是宣传当前时间可能会更好,但请记住,在广告时您无法将其作为服务器连接到智能手机,因为链接层可能不会同时处于扫描和广告模式,并且在出于类似原因进行广告时也可能无法连接。

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

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

此过程的优点是,只有在设备上确实需要时才更新时间,并且您不必切换客户端/服务器角色,因为服务器角色中的设备可能会正常发布广告,而且智能手机始终能够保持客户的角色。