我希望在我的自定义 movesense 固件中将日志记录集成到 EEPROM。阅读日志服务上的文档,我已经验证了我的日志系统配置了我的自定义白板对象,并且启用了日志记录(日志记录状态设置为 3),代码如下:
WB_RES::DataLoggerConfig dConfig;
WB_RES::DataEntry dEntry, dEntry1;
WB_RES::DataLoggerStateValues::Type dlstate = WB_RES::DataLoggerStateValues::Type::DATALOGGER_LOGGING;
dEntry.path = "/App/Object1";
dEntry1.path = "/App/Object2";
dConfig.dataEntries.dataEntry = {dEntry, dEntry1};
result = asyncPut(WB_RES::LOCAL::MEM_DATALOGGER_CONFIG(), AsyncRequestOptions::Empty, dConfig);
if(!wb::RETURN_OKC(result))
DebugLogger::info("asyncPut::datalogger config threw error: %u", result);
result = asyncPut(WB_RES::LOCAL::MEM_DATALOGGER_STATE(), AsyncRequestOptions::Empty, dlstate);
if(!wb::RETURN_OKC(result))
DebugLogger::info("asyncPut::datalogger start threw error: %u", result);
我在yaml文件中配置的白板对象路径为:
paths: /App/Object1/Subscription:
<blah, post/delete actions defined>
paths: /App/Object2/Subscription:
<blah, post/delete actions defined>
首先,在让 movesense 固件记录这些白板对象时,这是否正确?yaml文件中定义的白板路径和我们在代码中配置的数据输入路径是什么关系?它们必须完全匹配吗?
其次,如果我有上述正确的,那么当我向订阅的消费者发布通知时会自动记录条目(当前在 onNotify() 方法中完成),还是我必须创建一个特定的 wb::LogEntry 对象,然后填充它,然后对 MEM_LOGBOOK_ENTRIES() 目标执行 asyncPost,如下所示:
wb::LogEntry foo;
result = asyncPost(WB_RES::LOCAL::MEM_LOGBOOK_ENTRIES(), AsyncRequestOptions::Empty, foo);
如果是这种情况,它们是否有任何帮助函数来帮助填充 wb::LogEntry 对象,因为看起来您需要一个 id、时间戳,然后是白板数据对象?还是我们必须自己生成这些?