diff --git a/source/RobotAPI/components/units/RobotUnit/util/RtTiming.h b/source/RobotAPI/components/units/RobotUnit/util/RtTiming.h index 243f1a119df65ab1f5a9f79a5f53d243fe8b102c..2fa3ffe573037a4c7b27b55a5a8fe43129156c7b 100644 --- a/source/RobotAPI/components/units/RobotUnit/util/RtTiming.h +++ b/source/RobotAPI/components/units/RobotUnit/util/RtTiming.h @@ -24,18 +24,25 @@ #pragma once #include <chrono> -//#include <ArmarXCore/core/time/TimeUtil.h> #include "ControlThreadOutputBuffer.h" namespace armarx { + namespace rt_timing::constants + { + inline constexpr const std::int64_t seconds2MicroSeconds = 1e6; + + static constexpr const std::int64_t nanoSeconds2MicroSeconds = 1000; + } // namespace rt_timing::constants inline IceUtil::Time rtNow() { + using namespace rt_timing::constants; struct timespec ts; clock_gettime(CLOCK_MONOTONIC, &ts); - return IceUtil::Time::microSeconds(ts.tv_sec * 1e6 + ts.tv_nsec / 1000); + return IceUtil::Time::microSeconds(ts.tv_sec * seconds2MicroSeconds + + ts.tv_nsec / nanoSeconds2MicroSeconds); } } // namespace armarx @@ -52,7 +59,7 @@ namespace armarx //! \ingroup VirtualTime //! Prints duration with comment in front of it if it took longer than threshold #define RT_TIMING_CEND_COMMENT(name, comment, thresholdMs) \ - if ((armarx::rtNow() - name).toMilliSeconds() >= thresholdMs) \ + if ((armarx::rtNow() - name).toMilliSecondsDouble() >= thresholdMs) \ RT_TIMING_END_COMMENT(name, comment) //! \ingroup VirtualTime //! Prints duration if it took longer than thresholdMs diff --git a/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp b/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp index b4c59389a918789222beb3595a29ec49320775df..5e79a0a8d032429dacc6ef9ccc69e8fa0edde788 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp +++ b/source/RobotAPI/libraries/armem_gui/instance/display_visitors/TypedDataDisplayVisitor.cpp @@ -97,6 +97,12 @@ namespace armarx::aron type::IntEnumPtr enumType = type::IntEnum::DynamicCast(type); data::IntPtr enumData = data::Int::DynamicCast(data); + if (enumType == nullptr or enumData == nullptr) + { + ARMARX_WARNING << "Enum Type or Data is NULL"; + return; + } + std::string name = enumType->getValueName(enumData->getValue()); value << name; }