カスタム 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);
その場合、id、タイムスタンプ、そしてホワイトボード データ オブジェクトが必要なように見えるため、wb::LogEntry オブジェクトへの入力を支援するヘルパー関数はありますか? それとも、自分でそれらを生成する必要がありますか?