00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <plugins/examples/ballposlog/thread.h>
00024 #include <interfaces/ObjectPositionInterface.h>
00025
00026
00027
00028
00029
00030
00031 using namespace fawkes;
00032
00033
00034
00035 BallPosLogThread::BallPosLogThread()
00036 : Thread("BallPosLogThread",
00037 Thread::OPMODE_WAITFORWAKEUP),
00038 BlockedTimingAspect(
00039 BlockedTimingAspect::WAKEUP_HOOK_THINK)
00040 {
00041 }
00042
00043
00044
00045 BallPosLogThread::~BallPosLogThread()
00046 {
00047 }
00048
00049
00050 void
00051 BallPosLogThread::init()
00052 {
00053 wm_ball_interface = NULL;
00054 try {
00055 wm_ball_interface =
00056 blackboard->open_for_reading<ObjectPositionInterface>("WM Ball");
00057 log_level = (Logger::LogLevel)config->
00058 get_uint("/ballposlog/log_level");
00059 } catch (Exception &e) {
00060 blackboard->close(wm_ball_interface);
00061 throw;
00062 }
00063 }
00064
00065
00066 void
00067 BallPosLogThread::finalize()
00068 {
00069 blackboard->close(wm_ball_interface);
00070 }
00071
00072
00073 void
00074 BallPosLogThread::loop()
00075 {
00076 wm_ball_interface->read();
00077
00078 logger->log(log_level, "BallPosLog",
00079 "Ball is at global (x,y) = (%f,%f)",
00080 wm_ball_interface->world_x(),
00081 wm_ball_interface->world_y());
00082 }