00001 /* 00002 * FormationControlElement.hpp 00003 * 00004 * Created on: Feb 10, 2012 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef FORMATIONCONTROLELEMENT_HPP_ 00009 #define FORMATIONCONTROLELEMENT_HPP_ 00010 00011 #include <telekyb_interface/TeleKybCore.hpp> 00012 #include <telekyb_interface/MKInterface.hpp> 00013 00014 using namespace telekyb; 00015 00016 class FormationControlElement : telekyb_interface::ActiveBehaviorListener { 00017 private: 00018 void setupFormationControlElement(); 00019 00020 public: 00021 // ID 00022 int robotID; 00023 00024 // the System 00025 telekyb_interface::TeleKybCore* core; 00026 // BehaviorController 00027 telekyb_interface::BehaviorController* bController; 00028 telekyb_interface::OptionController *oController; 00029 00030 // Optional MKInterface 00031 telekyb_interface::MKInterface* mkInterface; 00032 00033 // Behavior 00034 telekyb_interface::Behavior* activeBehaviorPtr; 00035 00036 00037 FormationControlElement(int robotID_, bool useMKInterface_); 00038 virtual ~FormationControlElement(); 00039 00040 void activeBehaviorChanged(telekyb_interface::Behavior newActiveBehavior); 00041 00042 telekyb_interface::MKInterface* getMKInterfacePointer() const; 00043 telekyb_interface::TeleKybCore* getTeleKybCorePointer() const; 00044 00045 // for convienence 00046 bool mkSetEmergency(); 00047 00048 bool mkToggleMotors(); 00049 00050 // lift land 00051 bool liftland(); 00052 00053 00054 // void switchIntoFormation() const; 00055 00056 // Behaviors 00057 // System Behaviors 00058 telekyb_interface::Behavior ground; 00059 telekyb_interface::Behavior hover; 00060 telekyb_interface::Behavior normalBreak; 00061 telekyb_interface::Behavior takeOff; 00062 telekyb_interface::Behavior land; 00063 00064 // FormationControl 00065 telekyb_interface::Behavior formation4; 00066 telekyb_interface::Behavior formation3; 00067 telekyb_interface::Behavior tetraeder; 00068 telekyb_interface::Behavior square; 00069 telekyb_interface::Behavior triangle; 00070 00071 00072 }; 00073 00074 #endif /* FORMATIONCONTROLELEMENT_HPP_ */