diff --git a/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h b/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h index 9af95336c1343d0f1ea4691627ed7b4499b6c406..8ee7ee817971ce0dcb13a9cc90c296f32672777c 100644 --- a/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h +++ b/source/RobotAPI/components/units/RobotUnit/JointControllers/JointController.h @@ -75,6 +75,18 @@ namespace armarx void rtActivate(); void rtDeactivate(); }; + + template<class ControlTargetType> + class JointControllerTemplate : public virtual JointController + { + static_assert(std::is_base_of<ControlTargetBase, ControlTargetType>::value, "ControlTargetType has to inherit SensorValueBase"); + public: + using JointController::JointController; + + virtual ControlTargetType* getControlTarget() final; + + ControlTargetType controlTarget; + }; } //inline functions @@ -152,5 +164,11 @@ namespace armarx rtPostDeactivateController(); rtResetTarget(); } + + template<class ControlTargetType> + inline ControlTargetType* JointControllerTemplate<ControlTargetType>::getControlTarget() + { + return &controlTarget; + } } #endif