00001 /* 00002 * MKInterface.hpp 00003 * 00004 * Created on: Nov 23, 2011 00005 * Author: mriedel 00006 */ 00007 00008 #ifndef MKINTERFACE_HPP_ 00009 #define MKINTERFACE_HPP_ 00010 00011 #include <telekyb_defines/telekyb_defines.hpp> 00012 00013 #include <tk_mkinterface/MKInterfaceOptions.hpp> 00014 #include <tk_mkinterface/MKData.hpp> 00015 00016 #include <tk_mkinterface/MKInterfaceConnection.hpp> 00017 00018 #include <tk_mkinterface/MKROSInterface.hpp> 00019 00020 #include <tk_mkinterface/MKSafeMod.hpp> 00021 00022 namespace TELEKYB_NAMESPACE { 00023 00028 class MKInterface : public MKSafeModDeleagte { 00029 protected: 00030 MKInterfaceOptions options; 00031 00032 // MKSafeMod 00033 MKSafeMod* safeModule; 00034 00035 // Connection 00036 MKInterfaceConnection* connection; 00037 00038 // ROS Interface 00039 MKROSInterface* rosInterface; 00040 00041 00042 public: 00043 MKInterface(); 00044 virtual ~MKInterface(); 00045 00046 bool hasConnection() const; 00047 void handleCommand(double estMass, double pitch, double roll, double yawrate, double thrust); 00048 00049 MKInterfaceConnection* getConnection() const; 00050 00051 bool performDriftEstim(); 00052 00053 // MKSafeModListener 00054 void safeModDidBecomeActive(); 00055 void safeModFinished(); 00056 00057 // Called by ROS Interface Timer. Emits Warning when Low. returns true if empty! 00058 bool checkBattery(MKInt& batteryValue, bool& landRequest); 00059 00060 void setEmergency(); 00061 00062 const MKInterfaceOptions& getOptions() const; 00063 }; 00064 00065 } 00066 00067 #endif /* MKINTERFACE_HPP_ */