我正在设计自定义BLE设备协议.我的设备将是-体重秤,血压计,健身带之一.
该协议定义了我的Android / iOS应用(Collector)将用于从这些设备之一收集传感器数据的收集过程.
我们可以假设收集器存在的时间是50%,并且正在广播中搜索广播设备以连接并从中收集数据
我的问题是:
在考虑电池电量的情况下,使设备可连接的有效方法是什么?
我目前的做法:
设备是可连接的,如果
>(A)对于某些用户,它的测量值尚未发送,
>(B)用户将其打开(通过踩秤,按按钮或其他操作)
在情况(B)中,设备进行自身广播,例如每1秒可用于连接到收集器
在(A)的情况下,设备广播自身,例如.每5秒可用于连接到收集器
一旦不满足条件(A)/(B),设备便进入睡眠模式-不广播任何内容.
这是通过能源消耗的有效方法吗?还是有更好的做法来实现“设备可见性”?
附言找不到更好的资源来询问该问题,但该问题可以视为编程问题,因为它与固件编程有关
解决方法:
看到我的decision tree.
如果将sleep / off和Start框链接在一起,则代码会运行一个非常高效的无限循环,如果您打开设备或有要共享的数据,它将打开设备.
开始—–
B)用户打开了我吗?
>否:继续到A)
>是:继续进行问题1.和2.
A)我有要发送的数据吗?
>否:如果没有“用户打开”命令并且不需要发送任何数据,则:进入睡眠/关闭状态(大概会导致启动框并重新开始循环)
>是:用户未打开设备,但是有数据要发送;然后:
>如果connection = true->发送数据.
>如果connection = / = true->启动一个计时器,并在接下来的2-5分钟内以1或5秒的固定间隔开始连接循环.
当timer = 2-5min或connection = true时,连接循环结束.
当计时器用尽时,进入关闭/睡眠状态.
注意:为了以防万一,您可能会或可能不想添加错误处理程序以使代码中断到A).