00001 /* 00002 * TeleKybCore.hpp 00003 * 00004 * Created on: Nov 15, 2011 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef INTERFACE_TELEKYBCORE_HPP_ 00009 #define INTERFACE_TELEKYBCORE_HPP_ 00010 00011 #include <telekyb_defines/telekyb_defines.hpp> 00012 00013 #include <telekyb_interface/OptionController.hpp> 00014 #include <telekyb_interface/BehaviorController.hpp> 00015 00016 #include <ros/ros.h> 00017 00018 namespace TELEKYB_INTERFACE_NAMESPACE { 00019 00020 class TeleKybCore { 00021 private: 00022 // use factory to get System 00023 TeleKybCore(int robotID_, const std::string& mainHandleNamespace); 00024 00025 protected: 00026 int robotID; 00027 ros::NodeHandle mainNodeHandle; 00028 00029 // OptionController requires TelekybSystem :) 00030 OptionController* optionController; 00031 00032 // BehaviorController requires TelekybSystem & OptionController. 00033 BehaviorController* behaviorController; 00034 00035 // create Controllers 00036 void createBehaviorController(); 00037 void createOptionController(); 00038 00039 // System check. 00040 bool isOk() const; 00041 00042 public: 00043 virtual ~TeleKybCore(); 00044 00045 static TeleKybCore* getTeleKybCore(int robotID_); 00046 static bool getTeleKybCoreMainNodeHandle(int robotID_, ros::NodeHandle& nodeHandle_, double waitTime_ = 0.0); 00047 00048 OptionController* getOptionController() const; 00049 BehaviorController* getBehaviorController() const; 00050 00051 00052 }; 00053 00054 } 00055 00056 #endif /* TELEKYBSYSTEM_HPP_ */