有没有办法知道使用了多少EEPROM存储器?

时间:2018-07-04 16:26:09

标签: movesense

我已经浏览了“日志”和“数据记录器” API,但无法得知数据记录器几乎已满。我找到了具有以下路径“ / Mem / Logbook / IsFull”的API调用。如果我了解正确,则会在日志已满且数据记录器停止记录时通知我。

所以我的问题是:有没有办法知道当前正在使用多少内存,以便在EEPROM装满并清除之前对旧数据进行清理(需要对它们进行一些计算)。数据记录器停止记录?

1 个答案:

答案 0 :(得分:1)

Logbook / DataLogger的数据存储器在概念上是环形缓冲区。这就是 / Mem / DataLogger / IsFull 始终在Movesense传感器上返回 false 的原因(Suunto在情况不同的手表中使用相同的API)。因此,传感器永不停止记录,只是将最旧的数据替换为新的数据。

您可以使用以下两种策略:

计划A:

  1. 创建新日志(POST / Mem / Logbook / Entries =>返回其日志ID)
  2. 开始记录(PUT / Mem / DataLogger /状态:LOGGING)
  3. 每隔一段时间创建一个新日志(POST / Mem / Logbook / Entries)。注意:这可以在正在进行日志记录的同时完成!
  4. 如果您想知道日志的状态,请阅读/ Mem / Logbook / Entries。最旧的条目被完全覆盖后,它将从列表中消失。注意:GET / Entries是一项繁重的操作,因此当记录器运行时,您可能不想这样做!

B计划

每隔一段时间,然后启动一个新日志并处理上一个日志。这样,日志永远不会覆盖您尚未处理的内容。

计划C

(注意:此级别较低,可能会在以后的某些Movesense传感器版本中中断)

使用 / Component / EEPROM API获取EEPROM芯片#0的前256个字节。该区域包含许多ExtflashChunkStorage :: StorageHeader结构(请参见: ExtflashChunkStorage.h ),其余部分填充为0xFF。 0xFF之前的最后一个StorageHeader是当前的StorageHeader。使用该StorageHeader,可以看到环形缓冲区的起始位置( firstChunk )和下一个数据写入的位置( cursor )。两者的区别在于已使用的内存。 (注意:由于是环形缓冲区,所以差异可能为负。在这种情况下,请在其中添加“日志区域的大小-256”)

完全公开:我为Movesense团队工作