Orocos Real-Time Toolkit  2.5.0
AxisInterface.hpp
00001 /***************************************************************************
00002 
00003                        AxisInterface.hpp -  description
00004                           -------------------
00005    begin                : Thu October 21 2004
00006    copyright            : (C) 2002 Johan Rutgeerts
00007    email                : Johan.Rutgeerts@mech.kuleuven.be
00008 
00009    ***************************************************************************
00010    *   This library is free software; you can redistribute it and/or         *
00011    *   modify it under the terms of the GNU Lesser General Public            *
00012    *   License as published by the Free Software Foundation; either          *
00013    *   version 2.1 of the License, or (at your option) any later version.    *
00014    *                                                                         *
00015    *   This library is distributed in the hope that it will be useful,       *
00016    *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00017    *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00018    *   Lesser General Public License for more details.                       *
00019    *                                                                         *
00020    *   You should have received a copy of the GNU Lesser General Public      *
00021    *   License along with this library; if not, write to the Free Software   *
00022    *   Foundation, Inc., 59 Temple Place,                                    *
00023    *   Suite 330, Boston, MA  02111-1307  USA                                *
00024    *                                                                         *
00025    ***************************************************************************/
00026 
00027 #ifndef _AXISINTERFACE_HPP
00028 #define _AXISINTERFACE_HPP
00029 
00030 #include "SensorInterface.hpp"
00031 #include "DigitalInput.hpp"
00032 #include "DigitalOutput.hpp"
00033 #include "../../rtt-config.h"
00034 #include <string>
00035 #include <vector>
00036 
00037 namespace RTT
00038 { namespace dev {
00039 
00045     class RTT_API AxisInterface
00046     {
00047     public:
00048 
00049         AxisInterface() {};
00050         virtual ~AxisInterface() {};
00051 
00056         virtual bool stop() = 0;
00057 
00062         virtual bool lock() = 0;
00063 
00068         virtual bool unlock() = 0;
00069 
00073         virtual bool drive( double v ) = 0;
00074 
00078         virtual double getDriveValue() const = 0;
00079 
00083         virtual bool isLocked() const = 0;
00084 
00088         virtual bool isStopped() const = 0;
00089 
00093         virtual bool isDriven() const = 0;
00094 
00098         virtual DigitalOutput* getBrake() = 0;
00099 
00103         virtual DigitalOutput* getEnable() = 0;
00104 
00108         virtual SensorInterface<double>* getSensor(const std::string& name) const = 0;
00109 
00113         virtual std::vector<std::string> sensorList() const = 0;
00114 
00118         virtual DigitalInput* getSwitch(const std::string& name) const = 0;
00119 
00123         virtual std::vector<std::string> switchList() const = 0;
00124 
00128         virtual SensorInterface<int>* getCounter(const std::string& name) const = 0;
00129 
00133         virtual std::vector<std::string> counterList() const = 0;
00134 
00135     };
00136 
00137 
00138 }} // namespace RTT
00139 
00140 #endif //_AXISINTERFACE_HPP
00141