00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef DEVICEDRIVERS_AXIS_HPP
00029 #define DEVICEDRIVERS_AXIS_HPP
00030
00031 #include <ocl/OCL.hpp>
00032 #include <rtt/dev/AxisInterface.hpp>
00033 #include <rtt/dev/DigitalInput.hpp>
00034 #include <rtt/dev/DigitalOutput.hpp>
00035 #include <rtt/dev/DriveInterface.hpp>
00036 #include <rtt/Event.hpp>
00037 #include <string>
00038 #include <map>
00039 #include <vector>
00040
00041 namespace OCL
00042 {
00055 class Axis : public AxisInterface
00056 {
00057 public:
00058
00064 Axis( DriveInterface* adrive );
00065
00070 virtual ~Axis();
00071
00072 virtual bool stop();
00073 virtual bool lock();
00074 virtual bool unlock();
00075 virtual bool drive( double v );
00076 virtual bool isLocked() const;
00077 virtual bool isStopped() const;
00078 virtual bool isDriven() const;
00079
00085 virtual void limitDrive( double lower, double higher, const Event<void(std::string)>& ev);
00086
00090 void setBrake( DigitalOutput* brk );
00091
00092 DigitalOutput* getBrake();
00093
00094 DigitalOutput* getEnable();
00095
00099 void setDrive( DriveInterface* a);
00100
00104 DriveInterface* getDrive() const;
00105
00109 double getDriveValue() const;
00110
00111 virtual SensorInterface<double>* getSensor(const std::string& name) const;
00112
00120 void setSensor(const std::string& name, SensorInterface<double>* _sens);
00121
00122 virtual std::vector<std::string> sensorList() const;
00123
00124 virtual DigitalInput* getSwitch(const std::string& name) const;
00125
00126 virtual std::vector<std::string> switchList() const;
00127
00135 void setSwitch(const std::string& name, DigitalInput* _digin);
00136
00137 virtual SensorInterface<int>* getCounter(const std::string& name) const;
00138
00139 virtual std::vector<std::string> counterList() const;
00140
00148 void setCounter(const std::string& name, SensorInterface<int>* _sens);
00149
00150 private:
00151 double _drive_value;
00152
00156 DriveInterface* act;
00157
00158 DigitalOutput* brakeswitch;
00159
00160 typedef std::map< std::string,SensorInterface<double>* > SensList;
00161 typedef std::map< std::string,SensorInterface<int>* > CountList;
00162 typedef std::map< std::string,DigitalInput* > SwitchList;
00163
00167 SensList sens;
00168 CountList count;
00169 SwitchList swtch;
00170
00171 bool _is_locked, _is_stopped, _is_driven;
00172
00173 };
00174
00175 }
00176
00177
00178 #endif
00179