From 634efb743e5ec99ab757e0113435266962917d2a Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Tue, 22 Mar 2022 14:13:52 +0100 Subject: [PATCH] Update usage of time in armem/core --- .../RobotAPI/libraries/armem/CMakeLists.txt | 1 + .../libraries/armem/client/Writer.cpp | 5 +-- source/RobotAPI/libraries/armem/core/Commit.h | 8 ++--- .../libraries/armem/core/MemoryID.cpp | 10 +++--- .../RobotAPI/libraries/armem/core/MemoryID.h | 23 ++++++------ .../libraries/armem/core/aron_conversions.cpp | 5 +-- .../libraries/armem/core/aron_conversions.h | 8 +++-- .../libraries/armem/core/base/EntityBase.h | 10 +++--- .../armem/core/base/ice_conversions.cpp | 15 ++++---- .../armem/core/base/ice_conversions.h | 2 +- .../armem/core/forward_declarations.h | 22 ++++++++++++ .../libraries/armem/core/ice_conversions.cpp | 35 ++++++++++--------- .../libraries/armem/core/ice_conversions.h | 20 ++--------- .../libraries/armem/core/json_conversions.cpp | 4 +-- .../armem/core/wm/aron_conversions.cpp | 14 ++++---- .../armem/core/wm/ice_conversions.cpp | 1 + 16 files changed, 102 insertions(+), 81 deletions(-) diff --git a/source/RobotAPI/libraries/armem/CMakeLists.txt b/source/RobotAPI/libraries/armem/CMakeLists.txt index 5feda749b..afd231ffb 100644 --- a/source/RobotAPI/libraries/armem/CMakeLists.txt +++ b/source/RobotAPI/libraries/armem/CMakeLists.txt @@ -9,6 +9,7 @@ set(LIBS ArmarXCore RemoteGui aron + aroncommon ) set(LIB_FILES diff --git a/source/RobotAPI/libraries/armem/client/Writer.cpp b/source/RobotAPI/libraries/armem/client/Writer.cpp index 7ffeeca7a..3c4edce62 100644 --- a/source/RobotAPI/libraries/armem/client/Writer.cpp +++ b/source/RobotAPI/libraries/armem/client/Writer.cpp @@ -1,6 +1,7 @@ #include "Writer.h" #include <ArmarXCore/core/exceptions/local/ExpressionException.h> +#include <ArmarXCore/core/time/ice_conversions.h> #include "../error.h" @@ -111,10 +112,10 @@ namespace armarx::armem::client * anyway. */ - const Time timeSent = armem::Time::now(); + const Time timeSent = armem::Time::Now(); for (data::EntityUpdate& update : commit.updates) { - update.timeSentMicroSeconds = timeSent.toMicroSeconds(); + toIce(update.timeSent, timeSent); } data::CommitResult result; diff --git a/source/RobotAPI/libraries/armem/core/Commit.h b/source/RobotAPI/libraries/armem/core/Commit.h index 433703a5a..8a1da2075 100644 --- a/source/RobotAPI/libraries/armem/core/Commit.h +++ b/source/RobotAPI/libraries/armem/core/Commit.h @@ -36,7 +36,7 @@ namespace armarx::armem * @brief Time when this entity update was created (e.g. time of image recording). * This is the key of the entity's history. */ - Time timeCreated = Time::microSeconds(-1); + Time timeCreated = Time::Invalid(); // OPTIONAL @@ -52,14 +52,14 @@ namespace armarx::armem * * Set automatically when sending the commit. */ - Time timeSent = Time::microSeconds(-1); + Time timeSent = Time::Invalid(); /** * @brief Time when this update arrived at the memory server. * * Set by memory server on arrival. */ - Time timeArrived = Time::microSeconds(-1); + Time timeArrived = Time::Invalid(); friend std::ostream& operator<<(std::ostream& os, const EntityUpdate& rhs); @@ -74,7 +74,7 @@ namespace armarx::armem bool success = false; MemoryID snapshotID; - Time timeArrived = Time::microSeconds(-1); + Time timeArrived = Time::Invalid(); std::string errorMessage; diff --git a/source/RobotAPI/libraries/armem/core/MemoryID.cpp b/source/RobotAPI/libraries/armem/core/MemoryID.cpp index f3b8c662d..5757bf196 100644 --- a/source/RobotAPI/libraries/armem/core/MemoryID.cpp +++ b/source/RobotAPI/libraries/armem/core/MemoryID.cpp @@ -251,7 +251,7 @@ namespace armarx::armem { return getEntitySnapshotID(); } - if (timestamp != Time::microSeconds(-1)) + if (timestamp.isValid()) { return getEntityID(); } @@ -350,7 +350,7 @@ namespace armarx::armem std::string MemoryID::timestampStr() const { - return hasTimestamp() ? std::to_string(timestamp.toMicroSeconds()) : ""; + return hasTimestamp() ? std::to_string(timestamp.toMicroSecondsSinceEpoch()) : ""; } std::string MemoryID::instanceIndexStr() const @@ -358,9 +358,9 @@ namespace armarx::armem return hasInstanceIndex() ? std::to_string(instanceIndex) : ""; } - IceUtil::Time MemoryID::timestampFromStr(const std::string& string) + Time MemoryID::timestampFromStr(const std::string& string) { - return Time::microSeconds(parseInteger(string, "timestamp")); + return Time(Duration::MicroSeconds(parseInteger(string, "timestamp"))); } int MemoryID::instanceIndexFromStr(const std::string& string) @@ -506,7 +506,7 @@ namespace armarx::armem return false; } - if (general.timestamp.toMicroSeconds() < 0) + if (general.timestamp.isInvalid()) { return true; } diff --git a/source/RobotAPI/libraries/armem/core/MemoryID.h b/source/RobotAPI/libraries/armem/core/MemoryID.h index d583e7522..64850ddef 100644 --- a/source/RobotAPI/libraries/armem/core/MemoryID.h +++ b/source/RobotAPI/libraries/armem/core/MemoryID.h @@ -1,5 +1,6 @@ #pragma once +#include <functional> // for std::hash #include <string> #include <vector> @@ -52,7 +53,7 @@ namespace armarx::armem std::string coreSegmentName = ""; std::string providerSegmentName = ""; std::string entityName = ""; - Time timestamp = Time::microSeconds(-1); + Time timestamp = Time::Invalid(); int instanceIndex = -1; @@ -67,7 +68,7 @@ namespace armarx::armem const std::string& coreSegmentName, const std::string& providerSegmentName = "", const std::string& entityName = "", - Time timestamp = Time::microSeconds(-1), + Time timestamp = Time::Invalid(), int instanceIndex = -1); @@ -97,27 +98,27 @@ namespace armarx::armem bool hasMemoryName() const { - return !memoryName.empty(); + return not memoryName.empty(); } bool hasCoreSegmentName() const { - return !coreSegmentName.empty(); + return not coreSegmentName.empty(); } bool hasProviderSegmentName() const { - return !providerSegmentName.empty(); + return not providerSegmentName.empty(); } bool hasEntityName() const { - return !entityName.empty(); + return not entityName.empty(); } bool hasTimestamp() const { - return timestamp.toMicroSeconds() >= 0; + return timestamp.isValid(); } void clearTimestamp() { - timestamp = Time::microSeconds(-1); + timestamp = Time::Invalid(); } bool hasInstanceIndex() const { @@ -208,7 +209,7 @@ namespace armarx::armem bool operator ==(const MemoryID& other) const; inline bool operator !=(const MemoryID& other) const { - return !(*this == other); + return not (*this == other); } bool operator< (const MemoryID& rhs) const; @@ -218,11 +219,11 @@ namespace armarx::armem } inline bool operator<=(const MemoryID& rhs) const { - return !operator> (rhs); + return not operator> (rhs); } inline bool operator>=(const MemoryID& rhs) const { - return !operator< (rhs); + return not operator< (rhs); } friend std::ostream& operator<<(std::ostream& os, const MemoryID id); diff --git a/source/RobotAPI/libraries/armem/core/aron_conversions.cpp b/source/RobotAPI/libraries/armem/core/aron_conversions.cpp index 4eafef35a..62ff85270 100644 --- a/source/RobotAPI/libraries/armem/core/aron_conversions.cpp +++ b/source/RobotAPI/libraries/armem/core/aron_conversions.cpp @@ -1,5 +1,6 @@ #include "aron_conversions.h" +#include <RobotAPI/libraries/aron/common/aron_conversions/armarx.h> #include <RobotAPI/libraries/armem/core/MemoryID.h> #include <RobotAPI/libraries/armem/aron/MemoryID.aron.generated.h> @@ -10,7 +11,7 @@ void armarx::armem::fromAron(const arondto::MemoryID& dto, MemoryID& bo) bo.coreSegmentName = dto.coreSegmentName; bo.providerSegmentName = dto.providerSegmentName; bo.entityName = dto.entityName; - bo.timestamp = dto.timestamp; + fromAron(dto.timestamp, bo.timestamp); bo.instanceIndex = dto.instanceIndex; } @@ -20,7 +21,7 @@ void armarx::armem::toAron(arondto::MemoryID& dto, const MemoryID& bo) dto.coreSegmentName = bo.coreSegmentName; dto.providerSegmentName = bo.providerSegmentName; dto.entityName = bo.entityName; - dto.timestamp = bo.timestamp; + toAron(dto.timestamp, bo.timestamp); dto.instanceIndex = bo.instanceIndex; } diff --git a/source/RobotAPI/libraries/armem/core/aron_conversions.h b/source/RobotAPI/libraries/armem/core/aron_conversions.h index 064aafe8d..f0b1a2659 100644 --- a/source/RobotAPI/libraries/armem/core/aron_conversions.h +++ b/source/RobotAPI/libraries/armem/core/aron_conversions.h @@ -1,12 +1,16 @@ #pragma once -#include "forward_declarations.h" - #include <ostream> +#include "forward_declarations.h" + namespace armarx::armem { + // Implemented in <RobotAPI/libraries/aron/common/aron_conversions/armarx.h> + // void fromAron(const IceUtil::Time& dto, Time& bo); + // void toAron(IceUtil::Time& dto, const Time& bo); + void fromAron(const arondto::MemoryID& dto, MemoryID& bo); void toAron(arondto::MemoryID& dto, const MemoryID& bo); } diff --git a/source/RobotAPI/libraries/armem/core/base/EntityBase.h b/source/RobotAPI/libraries/armem/core/base/EntityBase.h index 9b34e11bd..5a3b55a80 100644 --- a/source/RobotAPI/libraries/armem/core/base/EntityBase.h +++ b/source/RobotAPI/libraries/armem/core/base/EntityBase.h @@ -311,7 +311,7 @@ namespace armarx::armem::base */ const EntitySnapshotT* findLatestSnapshotBeforeOrAt(const Time& time) const { - return findLatestSnapshotBefore(time + Time::microSeconds(1)); + return findLatestSnapshotBefore(time + Duration::MicroSeconds(1)); } /** @@ -339,7 +339,7 @@ namespace armarx::armem::base */ const EntitySnapshotT* findFirstSnapshotAfter(const Time& time) const { - return findFirstSnapshotAfter(time - Time::microSeconds(1)); + return findFirstSnapshotAfter(time - Duration::MicroSeconds(1)); } @@ -418,7 +418,7 @@ namespace armarx::armem::base template <class FunctionT> void forEachSnapshotBeforeOrAt(const Time& time, FunctionT&& func) const { - getSnapshotsBefore(time + Time::microSeconds(1), func); + getSnapshotsBefore(time + Duration::MicroSeconds(1), func); } @@ -432,9 +432,9 @@ namespace armarx::armem::base void forEachSnapshotInTimeRange(const Time& min, const Time& max, FunctionT&& func) const { // Returns an iterator pointing to the first element that is not less than (i.e. greater or equal to) key. - auto begin = min.toMicroSeconds() > 0 ? this->_container.lower_bound(min) : this->_container.begin(); + auto begin = min.isValid() ? this->_container.lower_bound(min) : this->_container.begin(); // Returns an iterator pointing to the first element that is *greater than* key. - auto end = max.toMicroSeconds() > 0 ? this->_container.upper_bound(max) : this->_container.end(); + auto end = max.isValid() ? this->_container.upper_bound(max) : this->_container.end(); for (auto it = begin; it != end && it != this->_container.end(); ++it) { diff --git a/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp b/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp index 1e19f25a7..a71881a57 100644 --- a/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp +++ b/source/RobotAPI/libraries/armem/core/base/ice_conversions.cpp @@ -1,5 +1,7 @@ #include "ice_conversions.h" +#include <ArmarXCore/core/time/ice_conversions.h> + #include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h> #include <RobotAPI/libraries/aron/core/type/variant/container/Object.h> @@ -50,19 +52,20 @@ namespace armarx::armem::base } namespace armarx::armem { + void base::toIce(data::EntityInstanceMetadata& ice, const EntityInstanceMetadata& metadata) { ice.confidence = metadata.confidence; - toIce(ice.timeArrivedMicroSeconds, metadata.timeArrived); - toIce(ice.timeCreatedMicroSeconds, metadata.timeCreated); - toIce(ice.timeSentMicroSeconds, metadata.timeSent); + toIce(ice.timeArrived, metadata.timeArrived); + toIce(ice.timeCreated, metadata.timeCreated); + toIce(ice.timeSent, metadata.timeSent); } void base::fromIce(const data::EntityInstanceMetadata& ice, EntityInstanceMetadata& metadata) { metadata.confidence = ice.confidence; - fromIce(ice.timeArrivedMicroSeconds, metadata.timeArrived); - fromIce(ice.timeCreatedMicroSeconds, metadata.timeCreated); - fromIce(ice.timeSentMicroSeconds, metadata.timeSent); + fromIce(ice.timeArrived, metadata.timeArrived); + fromIce(ice.timeCreated, metadata.timeCreated); + fromIce(ice.timeSent, metadata.timeSent); } diff --git a/source/RobotAPI/libraries/armem/core/base/ice_conversions.h b/source/RobotAPI/libraries/armem/core/base/ice_conversions.h index 21316623c..a660ad488 100644 --- a/source/RobotAPI/libraries/armem/core/base/ice_conversions.h +++ b/source/RobotAPI/libraries/armem/core/base/ice_conversions.h @@ -86,7 +86,7 @@ namespace armarx::armem::base ice.history.clear(); entity.forEachSnapshot([&ice](const auto & snapshot) { - armem::toIce(ice.history[armem::toIce<long>(snapshot.time())], snapshot); + armem::toIce(ice.history[toIce<armarx::core::time::dto::DateTime>(snapshot.time())], snapshot); }); } template <class ...Args> diff --git a/source/RobotAPI/libraries/armem/core/forward_declarations.h b/source/RobotAPI/libraries/armem/core/forward_declarations.h index 9a2bbf881..4b6d38266 100644 --- a/source/RobotAPI/libraries/armem/core/forward_declarations.h +++ b/source/RobotAPI/libraries/armem/core/forward_declarations.h @@ -2,7 +2,10 @@ #include <ArmarXCore/core/time/forward_declarations.h> + +namespace IceInternal { + template<typename T> class Handle; } namespace armarx::armem @@ -61,3 +64,22 @@ namespace armarx::armem::server::wm class Memory; } +namespace armarx::armem::data +{ + struct MemoryID; + struct Commit; + struct CommitResult; + struct EntityUpdate; + struct EntityUpdateResult; +} + +namespace armarx::armem::actions +{ + class Menu; +} + +namespace armarx::armem::actions::data +{ + class Menu; + using MenuPtr = ::IceInternal::Handle<Menu>; +} diff --git a/source/RobotAPI/libraries/armem/core/ice_conversions.cpp b/source/RobotAPI/libraries/armem/core/ice_conversions.cpp index 20df9176b..1dd76ae47 100644 --- a/source/RobotAPI/libraries/armem/core/ice_conversions.cpp +++ b/source/RobotAPI/libraries/armem/core/ice_conversions.cpp @@ -1,17 +1,20 @@ #include "ice_conversions.h" +#include <ArmarXCore/core/time/ice_conversions.h> + #include <RobotAPI/libraries/aron/core/data/variant/container/Dict.h> +#include <RobotAPI/interface/armem/actions.h> +#include <RobotAPI/interface/armem/commit.h> +#include <RobotAPI/interface/armem/memory.h> -void IceUtil::toIce(long& ice, const IceUtil::Time& time) -{ - ice = time.toMicroSeconds(); -} +#include "ice_conversions_templates.h" + +#include "actions.h" +#include "Commit.h" +#include "MemoryID.h" +#include "Time.h" -void IceUtil::fromIce(const long& ice, IceUtil::Time& time) -{ - time = Time::microSeconds(ice); -} namespace armarx { @@ -22,7 +25,7 @@ namespace armarx ice.coreSegmentName = id.coreSegmentName; ice.providerSegmentName = id.providerSegmentName; ice.entityName = id.entityName; - toIce(ice.timestampMicroSeconds, id.timestamp); + toIce(ice.timestamp, id.timestamp); ice.instanceIndex = id.instanceIndex; } @@ -32,7 +35,7 @@ namespace armarx id.coreSegmentName = ice.coreSegmentName; id.providerSegmentName = ice.providerSegmentName; id.entityName = ice.entityName; - fromIce(ice.timestampMicroSeconds, id.timestamp); + fromIce(ice.timestamp, id.timestamp); id.instanceIndex = ice.instanceIndex; } @@ -85,10 +88,10 @@ namespace armarx std::transform(ice.instancesData.begin(), ice.instancesData.end(), std::back_inserter(update.instancesData), aron::data::Dict::FromAronDictDTO); - update.timeCreated = Time::microSeconds(ice.timeCreatedMicroSeconds); + fromIce(ice.timeCreated, update.timeCreated); update.confidence = ice.confidence; - update.timeSent = Time::microSeconds(ice.timeSentMicroSeconds); + fromIce(ice.timeSent, update.timeSent); } void armem::toIce(data::EntityUpdate& ice, const EntityUpdate& update) @@ -100,17 +103,17 @@ namespace armarx std::transform(update.instancesData.begin(), update.instancesData.end(), std::back_inserter(ice.instancesData), aron::data::Dict::ToAronDictDTO); - ice.timeCreatedMicroSeconds = update.timeCreated.toMicroSeconds(); + toIce(ice.timeCreated, update.timeCreated); ice.confidence = update.confidence; - ice.timeSentMicroSeconds = update.timeSent.toMicroSeconds(); + toIce(ice.timeSent, update.timeSent); } void armem::fromIce(const data::EntityUpdateResult& ice, EntityUpdateResult& result) { result.success = ice.success; fromIce(ice.snapshotID, result.snapshotID); - result.timeArrived = Time::microSeconds(ice.timeArrivedMicroSeconds); + fromIce(ice.timeArrived, result.timeArrived); result.errorMessage = ice.errorMessage; } @@ -118,7 +121,7 @@ namespace armarx { ice.success = result.success; toIce(ice.snapshotID, result.snapshotID); - ice.timeArrivedMicroSeconds = result.timeArrived.toMicroSeconds(); + toIce(ice.timeArrived, result.timeArrived); ice.errorMessage = result.errorMessage; } diff --git a/source/RobotAPI/libraries/armem/core/ice_conversions.h b/source/RobotAPI/libraries/armem/core/ice_conversions.h index a8ef35e79..2a4daf725 100644 --- a/source/RobotAPI/libraries/armem/core/ice_conversions.h +++ b/source/RobotAPI/libraries/armem/core/ice_conversions.h @@ -1,23 +1,6 @@ #pragma once -#include <RobotAPI/interface/armem/actions.h> -#include <RobotAPI/interface/armem/commit.h> -#include <RobotAPI/interface/armem/memory.h> - -#include "ice_conversions_templates.h" - -#include "actions.h" -#include "Commit.h" -#include "MemoryID.h" -#include "Time.h" - - -namespace IceUtil -{ - // Define in original namespace to allow ADL. - void toIce(long& ice, const Time& time); - void fromIce(const long& ice, Time& time); -} +#include "forward_declarations.h" namespace armarx::armem @@ -48,5 +31,6 @@ namespace armarx::armem void fromIce(const actions::data::MenuPtr& ice, actions::Menu& menu); void toIce(actions::data::MenuPtr& ice, const actions::Menu& menu); + } diff --git a/source/RobotAPI/libraries/armem/core/json_conversions.cpp b/source/RobotAPI/libraries/armem/core/json_conversions.cpp index e4da9d89b..2a6f2a1f6 100644 --- a/source/RobotAPI/libraries/armem/core/json_conversions.cpp +++ b/source/RobotAPI/libraries/armem/core/json_conversions.cpp @@ -9,7 +9,7 @@ void armarx::armem::to_json(nlohmann::json& j, const MemoryID& bo) j["coreSegmentName"] = bo.coreSegmentName; j["providerSegmentName"] = bo.providerSegmentName; j["entityName"] = bo.entityName; - j["timestamp_usec"] = bo.timestamp.toMicroSeconds(); + j["timestamp_usec"] = bo.timestamp.toMicroSecondsSinceEpoch(); j["timestamp_datetime"] = toDateTimeMilliSeconds(bo.timestamp); j["instanceIndex"] = bo.instanceIndex; } @@ -20,7 +20,7 @@ void armarx::armem::from_json(const nlohmann::json& j, MemoryID& bo) j.at("coreSegmentName").get_to(bo.coreSegmentName); j.at("providerSegmentName").get_to(bo.providerSegmentName); j.at("entityName").get_to(bo.entityName); - bo.timestamp = Time::microSeconds(j.at("timestamp_usec").get<int64_t>()); + bo.timestamp = Time(Duration::MicroSeconds(j.at("timestamp_usec").get<int64_t>())); // j.at("timestamp_datetime").get_to(toDateTimeMilliSeconds(bo.timestamp)); j.at("instanceIndex").get_to(bo.instanceIndex); } diff --git a/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp b/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp index dacedd5e0..d24ce36b5 100644 --- a/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp +++ b/source/RobotAPI/libraries/armem/core/wm/aron_conversions.cpp @@ -23,13 +23,13 @@ void armarx::armem::from_aron(const aron::data::DictPtr& metadata, const aron::d e.data() = data; auto timeCreated = aron::data::Long::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_TIME_CREATED_FIELD)); - m.timeCreated = Time::microSeconds(timeCreated->toAronLongDTO()->value); + m.timeCreated = Time(Duration::MicroSeconds(timeCreated->toAronLongDTO()->value)); auto timeSent = aron::data::Long::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_TIME_SENT_FIELD)); - m.timeSent = Time::microSeconds(timeSent->toAronLongDTO()->value); + m.timeSent = Time(Duration::MicroSeconds(timeSent->toAronLongDTO()->value)); auto timeArrived = aron::data::Long::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_TIME_ARRIVED_FIELD)); - m.timeArrived = Time::microSeconds(timeArrived->toAronLongDTO()->value); + m.timeArrived = Time(Duration::MicroSeconds(timeArrived->toAronLongDTO()->value)); auto confidence = aron::data::Double::DynamicCastAndCheck(metadata->getElement(DATA_WRAPPER_CONFIDENCE_FIELD)); m.confidence = static_cast<float>(confidence->toAronDoubleDTO()->value); @@ -42,20 +42,20 @@ void armarx::armem::to_aron(aron::data::DictPtr& metadata, aron::data::DictPtr& metadata = std::make_shared<aron::data::Dict>(); auto timeWrapped = std::make_shared<aron::data::Long>(); - timeWrapped->setValue(Time::now().toMicroSeconds()); + timeWrapped->setValue(Time::Now().toMicroSecondsSinceEpoch()); metadata->addElement(DATA_WRAPPER_TIME_STORED_FIELD, timeWrapped); const wm::EntityInstanceMetadata& m = e.metadata(); auto timeCreated = std::make_shared<aron::data::Long>(); - timeCreated->setValue(m.timeCreated.toMicroSeconds()); + timeCreated->setValue(m.timeCreated.toMicroSecondsSinceEpoch()); metadata->addElement(DATA_WRAPPER_TIME_CREATED_FIELD, timeCreated); auto timeSent = std::make_shared<aron::data::Long>(); - timeSent->setValue(m.timeSent.toMicroSeconds()); + timeSent->setValue(m.timeSent.toMicroSecondsSinceEpoch()); metadata->addElement(DATA_WRAPPER_TIME_SENT_FIELD, timeSent); auto timeArrived = std::make_shared<aron::data::Long>(); - timeArrived->setValue(m.timeArrived.toMicroSeconds()); + timeArrived->setValue(m.timeArrived.toMicroSecondsSinceEpoch()); metadata->addElement(DATA_WRAPPER_TIME_ARRIVED_FIELD, timeArrived); auto confidence = std::make_shared<aron::data::Double>(); diff --git a/source/RobotAPI/libraries/armem/core/wm/ice_conversions.cpp b/source/RobotAPI/libraries/armem/core/wm/ice_conversions.cpp index ba6c9782e..826bf6d9f 100644 --- a/source/RobotAPI/libraries/armem/core/wm/ice_conversions.cpp +++ b/source/RobotAPI/libraries/armem/core/wm/ice_conversions.cpp @@ -1,5 +1,6 @@ #include "ice_conversions.h" +#include <RobotAPI/libraries/armem/core/ice_conversions.h> #include <RobotAPI/libraries/armem/core/base/ice_conversions.h> -- GitLab