android - 能源经济 : BLE device - when to make connectable?

标签 android ios firmware bluetooth-lowenergy

我正在设计自定义 BLE 设备协议(protocol)。我的设备将是以下设备之一 - 体重秤、血压计、健身手环

协议(protocol) 定义了我的 Android/iOS 应用程序 (Collector) 将用于从这些设备之一收集传感器数据的收集过程。

我们可以假设 Collector 在 50% 的时间内都存在,并且正在扫描空气中的广播设备以连接并从中收集数据

我的问题是: 在考虑电池电量的情况下,使设备可连接的有效方法是什么?

我目前的做法:

设备是可连接的,如果

  • (A) 它有一些用户未发送的测量值,
  • (B) 用户打开它(通过踩秤、按按钮或其他方式)

如果 (B) 设备广播自身,例如每 1 秒一次,可连接到 Collector

如果 (A) 设备广播自身,例如每 5 秒一次,可以连接到 Collector

只要条件 (A)/(B) 不适用,设备就会进入休眠模式 - 不广播任何内容。

这种通过能源消耗的方法是否有效?或者是否有更好的做法来实现“设备可见性”?

附言找不到更好的资源来提问,但这个问题可以被认为是一个编程问题,因为它与固件编程有关

最佳答案

查看我的 decision tree为此。

如果您将 sleep /关闭和启动框链接在一起,代码将运行一个非常高效的无限循环,如果您打开设备或有数据要共享,它会打开设备。

开始-----

B) 用户让我兴奋了吗?

  • 否:继续 A)
  • 是:继续回答问题 1. 和 2。

A) 我有数据要发送吗?

  • 否:如果没有“用户开启”命令并且不需要发送数据,则:继续进入休眠/关闭状态(这可能会导致启动框并开始循环再来一遍)
  • 是:设备未被用户打开,但有数据要发送;然后:

    1. if connection=true --> 发送数据。
    2. if connection =/= true --> 启动计时器并在接下来的 2-5 分钟内以 1 或 5 秒的固定间隔开始连接循环

当计时器=2-5 分钟连接=true 时,连接循环结束。 当计时器用完时,进入关闭/ sleep 状态。

注意:您可能希望也可能不希望添加错误处理程序以使代码中断到 A) 以防万一。

关于android - 能源经济 : BLE device - when to make connectable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36055657/

相关文章:

linux - ONU设备是否有任何开源固件?

android - RxJava、Proguard 和 sun.misc.Unsafe

ios - 带有 unicode NSString 的 UILabel 文本

ios - Xcode 6.4 Playground CPU 使用率极高

ios - 如何使用 NSMutableURLRequest 或 Alamofire

android - AOSP 增量 OTA 签名验证失败

java - ObjectAnimator 的 ofInt、ofFloat 和 ofObject 有什么区别?

java - 将Kotlin转换为Java

android - flutter : How to launch the Google Map app with "directions" to a predefined location?

c - 需要将我的固件镜像迁移到 ROM 掩码