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
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef ORO_PERIODIC_ACTIVITY_HPP
00039 #define ORO_PERIODIC_ACTIVITY_HPP
00040
00041 #include "RunnableInterface.hpp"
00042
00043 #include "Time.hpp"
00044 #include "ActivityInterface.hpp"
00045 #include "TimerThread.hpp"
00046
00047 #ifdef ORO_PRAGMA_INTERFACE
00048 #pragma interface
00049 #endif
00050
00051 namespace RTT
00052 {
00053
00069 class PeriodicActivity
00070 : public ActivityInterface
00071 {
00072 public:
00073
00087 PeriodicActivity(int priority, Seconds period, RunnableInterface* r=0 );
00088
00104 PeriodicActivity(int scheduler, int priority, Seconds period, RunnableInterface* r=0 );
00105
00106
00116 PeriodicActivity(TimerThreadPtr thread, RunnableInterface* r=0);
00117
00129 PeriodicActivity(Seconds period, TimerThreadPtr thread, RunnableInterface* r=0 );
00130
00144 PeriodicActivity(secs sec, nsecs nsec, TimerThreadPtr thread, RunnableInterface* r=0 );
00145
00149 virtual ~PeriodicActivity();
00150
00158 bool run( RunnableInterface* r );
00159
00160 virtual bool start();
00161
00162 virtual bool execute();
00163
00164 virtual bool trigger();
00165
00166 virtual bool stop();
00167
00168 virtual bool isRunning() const;
00169
00170 virtual bool isActive() const;
00171
00172 virtual bool isPeriodic() const;
00173
00174 virtual Seconds getPeriod() const;
00175
00176 virtual OS::ThreadInterface* thread();
00177
00181 virtual bool initialize();
00182
00186 virtual void step();
00187
00191 virtual void finalize();
00192
00193 protected:
00194 void init();
00195
00200 RunnableInterface* runner;
00201
00205 bool running;
00206
00210 bool active;
00211
00215 TimerThreadPtr thread_;
00216 };
00217
00218 }
00219
00220 #endif