00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __PLUGINS_TTMAINLOOP_THREAD_H_
00024 #define __PLUGINS_TTMAINLOOP_THREAD_H_
00025
00026 #include <core/threading/thread.h>
00027 #include <aspect/clock.h>
00028 #include <aspect/logging.h>
00029 #include <aspect/configurable.h>
00030 #include <aspect/blocked_timing.h>
00031 #include <aspect/mainloop.h>
00032
00033 namespace fawkes {
00034 class Time;
00035 class TimeTracker;
00036 }
00037
00038 class TimeTrackerMainLoopThread
00039 : public fawkes::Thread,
00040 public fawkes::LoggingAspect,
00041 public fawkes::ClockAspect,
00042 public fawkes::ConfigurableAspect,
00043 public fawkes::MainLoopAspect
00044 {
00045 public:
00046 TimeTrackerMainLoopThread();
00047 virtual ~TimeTrackerMainLoopThread();
00048
00049 virtual void init();
00050 virtual void loop();
00051 virtual void finalize();
00052
00053
00054 protected: virtual void run() { Thread::run(); }
00055
00056 private:
00057 float __output_interval;
00058 fawkes::Time *__last_outp_time;
00059 fawkes::Time *__now;
00060
00061 fawkes::Time *__loop_start;
00062 fawkes::Time *__loop_end;
00063
00064 fawkes::TimeTracker *__tt;
00065 unsigned int __tt_loopcount;
00066 unsigned int __ttc_pre_loop;
00067 unsigned int __ttc_sensor;
00068 unsigned int __ttc_worldstate;
00069 unsigned int __ttc_think;
00070 unsigned int __ttc_skill;
00071 unsigned int __ttc_act;
00072 unsigned int __ttc_post_loop;
00073 unsigned int __ttc_netproc;
00074 unsigned int __ttc_full_loop;
00075 unsigned int __ttc_real_loop;
00076
00077 };
00078
00079
00080 #endif