From 840c0f200bec42da0f5dc72c478970854a59a6f9 Mon Sep 17 00:00:00 2001 From: Raphael Grimm <raphael.grimm@kit.edu> Date: Thu, 15 Oct 2020 08:23:58 +0200 Subject: [PATCH] Add ARMARX_TRACE --- .../NJointControllers/NJointController.cpp | 11 +++++++++++ .../RobotUnitModules/RobotUnitModuleBase.cpp | 17 +++++++++++++++++ .../RobotUnitModules/RobotUnitModuleDevices.cpp | 8 ++++++++ .../RobotUnitModules/RobotUnitModuleUnits.cpp | 1 + 4 files changed, 37 insertions(+) diff --git a/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointController.cpp b/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointController.cpp index 57e87b49d..7f86a607d 100644 --- a/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointController.cpp +++ b/source/RobotAPI/components/units/RobotUnit/NJointControllers/NJointController.cpp @@ -69,6 +69,7 @@ namespace armarx NJointControllerDescription NJointControllerBase::getControllerDescription(const Ice::Current&) const { + ARMARX_TRACE; NJointControllerDescription d; d.className = getClassName(); ARMARX_CHECK_EXPRESSION(getProxy(-1)); @@ -82,6 +83,7 @@ namespace armarx std::optional<std::vector<char> > NJointControllerBase::isNotInConflictWith(const std::vector<char>& used) const { + ARMARX_TRACE; ARMARX_CHECK_EXPRESSION(used.size() == controlDeviceUsedBitmap.size()); auto result = used; for (std::size_t i = 0; i < controlDeviceUsedBitmap.size(); ++i) @@ -101,6 +103,7 @@ namespace armarx NJointControllerStatus NJointControllerBase::getControllerStatus(const Ice::Current&) const { + ARMARX_TRACE; NJointControllerStatus s; s.active = isActive; s.instanceName = getInstanceName(); @@ -144,6 +147,7 @@ namespace armarx void NJointControllerBase::publish(const SensorAndControl& sac, const DebugDrawerInterfacePrx& draw, const DebugObserverInterfacePrx& observer) { + ARMARX_TRACE; const bool active = isActive; if (publishActive.exchange(active) != active) { @@ -199,6 +203,7 @@ namespace armarx void NJointControllerBase::deactivatePublish(const DebugDrawerInterfacePrx& draw, const DebugObserverInterfacePrx& observer) { + ARMARX_TRACE; if (publishActive.exchange(false)) { ARMARX_DEBUG << "forced deactivation of publishing for " << getInstanceName(); @@ -261,21 +266,25 @@ namespace armarx void NJointControllerBase::onInitComponent() { + ARMARX_TRACE; onInitNJointController(); } void NJointControllerBase::onConnectComponent() { + ARMARX_TRACE; onConnectNJointController(); } void NJointControllerBase::onDisconnectComponent() { + ARMARX_TRACE; onDisconnectNJointController(); } void NJointControllerBase::onExitComponent() { + ARMARX_TRACE; onExitNJointController(); // make sure the destructor of the handles does not throw an exception and triggers a termination of the process ARMARX_DEBUG << "Deleting thread handles"; @@ -331,6 +340,7 @@ namespace armarx const SensorValueBase* NJointControllerBase::useSensorValue(const std::string& deviceName) const { + ARMARX_TRACE; ARMARX_CHECK_EXPRESSION( NJointControllerRegistryEntry::ConstructorIsRunning()) << "The function '" << BOOST_CURRENT_FUNCTION << "' must only be called during the construction of an NJointController."; @@ -356,6 +366,7 @@ namespace armarx ControlTargetBase* NJointControllerBase::useControlTarget(const std::string& deviceName, const std::string& controlMode) { + ARMARX_TRACE; ARMARX_CHECK_EXPRESSION( NJointControllerRegistryEntry::ConstructorIsRunning()) << "The function '" << BOOST_CURRENT_FUNCTION << "' must only be called during the construction of an NJointController."; diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp index 8432b4b53..aa324e0c1 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleBase.cpp @@ -24,6 +24,7 @@ #include <ArmarXCore/core/exceptions/local/ExpressionException.h> #include <ArmarXCore/core/util/Preprocessor.h> +#include <ArmarXCore/util/CPPUtility/trace.h> #include "../NJointControllers/NJointController.h" #include "RobotUnitModuleBase.h" @@ -62,6 +63,7 @@ namespace armarx::RobotUnitModule // /////////////////////////// call for each module /////////////////////////// // // //////////////////////////////////////////////////////////////////////////// // #define cast_to_and_call(Type, fn, rethrow) \ + ARMARX_TRACE; \ try \ { \ dynamic_cast<Type*>(this)->Type::fn; \ @@ -112,6 +114,7 @@ namespace armarx::RobotUnitModule // ManagedIceObject life cycle void ModuleBase::onInitComponent() { + ARMARX_TRACE; checkDerivedClasses(); auto guard = getGuard(); throwIfStateIsNot(RobotUnitState::InitializingComponent, __FUNCTION__); @@ -134,6 +137,7 @@ namespace armarx::RobotUnitModule void ModuleBase::onConnectComponent() { + ARMARX_TRACE; checkDerivedClasses(); #define call_module_hook(Type) cast_to_and_call(::armarx::RobotUnitModule::Type, _preOnConnectRobotUnit(), true) @@ -148,6 +152,7 @@ namespace armarx::RobotUnitModule } void ModuleBase::onDisconnectComponent() { + ARMARX_TRACE; checkDerivedClasses(); #define call_module_hook(Type) cast_to_and_call(::armarx::RobotUnitModule::Type, _preOnDisconnectRobotUnit(), true) @@ -163,6 +168,7 @@ namespace armarx::RobotUnitModule void ModuleBase::onExitComponent() { + ARMARX_TRACE; checkDerivedClasses(); auto guard = getGuard(); @@ -196,6 +202,7 @@ namespace armarx::RobotUnitModule // RobotUnit life cycle void ModuleBase::finishComponentInitialization() { + ARMARX_TRACE; checkDerivedClasses(); auto guard = getGuard(); throwIfStateIsNot(RobotUnitState::InitializingComponent, __FUNCTION__); @@ -212,6 +219,7 @@ namespace armarx::RobotUnitModule } void ModuleBase::finishDeviceInitialization() { + ARMARX_TRACE; checkDerivedClasses(); auto guard = getGuard(); throwIfStateIsNot(RobotUnitState::InitializingDevices, __FUNCTION__); @@ -229,6 +237,7 @@ namespace armarx::RobotUnitModule void ModuleBase::finishUnitInitialization() { + ARMARX_TRACE; checkDerivedClasses(); auto guard = getGuard(); throwIfStateIsNot(RobotUnitState::InitializingUnits, __FUNCTION__); @@ -246,6 +255,7 @@ namespace armarx::RobotUnitModule void ModuleBase::finishControlThreadInitialization() { + ARMARX_TRACE; checkDerivedClasses(); auto guard = getGuard(); throwIfStateIsNot(RobotUnitState::InitializingControlThread, __FUNCTION__); @@ -263,6 +273,7 @@ namespace armarx::RobotUnitModule void ModuleBase::finishRunning() { + ARMARX_TRACE; checkDerivedClasses(); shutDown(); GuardType guard {dataMutex}; //DO NOT USE getGuard here! @@ -299,6 +310,7 @@ namespace armarx::RobotUnitModule void ModuleBase::setRobotUnitState(RobotUnitState to) { + ARMARX_TRACE; auto guard = getGuard(); const auto transitionErrorMessage = [ = ](RobotUnitState expectedFrom) @@ -363,6 +375,7 @@ namespace armarx::RobotUnitModule void ModuleBase::throwIfInControlThread(const std::string& fnc) const { + ARMARX_TRACE; if (inControlThread()) { std::stringstream str; @@ -374,6 +387,7 @@ namespace armarx::RobotUnitModule ModuleBase::GuardType ModuleBase::getGuard() const { + ARMARX_TRACE; if (inControlThread()) { throw LogicError @@ -400,6 +414,7 @@ namespace armarx::RobotUnitModule void ModuleBase::throwIfStateIsNot(const std::set<RobotUnitState>& stateSet, const std::string& fnc, bool onlyWarn) const { + ARMARX_TRACE; if (! stateSet.count(state)) { std::stringstream ss; @@ -430,6 +445,7 @@ namespace armarx::RobotUnitModule void ModuleBase::throwIfStateIs(const std::set<RobotUnitState>& stateSet, const std::string& fnc, bool onlyWarn) const { + ARMARX_TRACE; if (stateSet.count(state)) { std::stringstream ss; @@ -468,6 +484,7 @@ namespace armarx::RobotUnitModule ModuleBase::ModuleBase() { + ARMARX_TRACE; if (Instance_ && this != Instance_) { ARMARX_FATAL << "This class is a Singleton. It was already instantiated. (Instance = " << Instance_ << ", this = " << this << ")"; diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp index c0874a794..6d5e0bdb0 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleDevices.cpp @@ -451,11 +451,13 @@ namespace armarx::RobotUnitModule void Devices::_postFinishDeviceInitialization() { + ARMARX_TRACE; throwIfInControlThread(BOOST_CURRENT_FUNCTION); std::lock_guard<MutexType> guardS {sensorDevicesMutex}; std::lock_guard<MutexType> guardC {controlDevicesMutex}; ARMARX_DEBUG << "checking " << controlDevices.size() << " ControlDevices:"; { + ARMARX_TRACE; for (const ControlDevicePtr& controlDevice : controlDevices.values()) { ARMARX_CHECK_EXPRESSION(controlDevice); @@ -485,6 +487,7 @@ namespace armarx::RobotUnitModule } ARMARX_DEBUG << "checking " << controlDevices.size() << " SensorDevices:"; { + ARMARX_TRACE; for (const SensorDevicePtr& sensorDevice : sensorDevices.values()) { ARMARX_CHECK_EXPRESSION(sensorDevice); @@ -501,6 +504,7 @@ namespace armarx::RobotUnitModule } ARMARX_DEBUG << "copying device ptrs to const ptr map"; { + ARMARX_TRACE; for (const auto& dev : controlDevices.values()) { controlDevicesConstPtr[dev->getDeviceName()] = dev; @@ -512,6 +516,7 @@ namespace armarx::RobotUnitModule } ARMARX_DEBUG << "copy sensor values"; { + ARMARX_TRACE; ARMARX_CHECK_EXPRESSION(sensorValues.empty()); sensorValues.reserve(sensorDevices.values().size()); for (const SensorDevicePtr& dev : sensorDevices.values()) @@ -523,6 +528,7 @@ namespace armarx::RobotUnitModule } ARMARX_DEBUG << "copy control targets"; { + ARMARX_TRACE; ARMARX_CHECK_EXPRESSION(controlTargets.empty()); controlTargets.reserve(controlDevices.values().size()); for (const ControlDevicePtr& dev : controlDevices.values()) @@ -540,6 +546,7 @@ namespace armarx::RobotUnitModule } ARMARX_DEBUG << "setup ControlDeviceHardwareControlModeGroups"; { + ARMARX_TRACE; ctrlModeGroups.groupIndices.assign(getNumberOfControlDevices(), IndexSentinel()); if (!ctrlModeGroups.groupsMerged.empty()) @@ -631,6 +638,7 @@ namespace armarx::RobotUnitModule } ARMARX_DEBUG << "create mapping from sensor values to robot nodes"; { + ARMARX_TRACE; ARMARX_CHECK_EXPRESSION(simoxRobotSensorValueMapping.empty()); VirtualRobot::RobotPtr r = _module<RobotData>().cloneRobot(); const auto nodes = r->getRobotNodes(); diff --git a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp index 76e2811dc..6ade7b907 100644 --- a/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp +++ b/source/RobotAPI/components/units/RobotUnit/RobotUnitModules/RobotUnitModuleUnits.cpp @@ -193,6 +193,7 @@ namespace armarx::RobotUnitModule const std::string& torqueControlMode ) { + ARMARX_TRACE; throwIfInControlThread(BOOST_CURRENT_FUNCTION); /// TODO move init code to Kinematic sub unit using UnitT = KinematicSubUnit; -- GitLab