Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #ifndef HECTOR_UAV_MSGS_RC_FUNCTIONS_H
00030 #define HECTOR_UAV_MSGS_RC_FUNCTIONS_H
00031
00032 #include <hector_uav_msgs/RC.h>
00033 #include <algorithm>
00034
00035 namespace hector_uav_msgs {
00036
00037 static inline const char *getFunctionString(uint8_t function)
00038 {
00039 switch(function) {
00040 case RC::ROLL: return "ROLL";
00041 case RC::PITCH: return "PITCH";
00042 case RC::YAW: return "YAW";
00043 case RC::STEER: return "STEER";
00044 case RC::HEIGHT: return "HEIGHT";
00045 case RC::THRUST: return "THRUST";
00046 case RC::BRAKE: return "BRAKE";
00047 }
00048 return 0;
00049 }
00050
00051 static inline bool hasAxis(const RC& rc, RC::_axis_function_type::value_type function)
00052 {
00053 return std::find(rc.axis_function.begin(), rc.axis_function.end(), function) != rc.axis_function.end();
00054 }
00055
00056 static inline bool getAxis(const RC& rc, RC::_axis_function_type::value_type function, RC::_axis_type::value_type& value)
00057 {
00058 if (!rc.valid) return false;
00059 const RC::_axis_function_type::const_iterator it = std::find(rc.axis_function.begin(), rc.axis_function.end(), function);
00060 if (it == rc.axis_function.end()) return false;
00061 value = rc.axis.at(it - rc.axis_function.begin());
00062 return true;
00063 }
00064
00065 static inline void setAxis(RC& rc, RC::_axis_function_type::value_type function, RC::_axis_type::value_type value)
00066 {
00067 const RC::_axis_function_type::iterator it = std::find(rc.axis_function.begin(), rc.axis_function.end(), function);
00068 if (it == rc.axis_function.end()) {
00069 rc.axis_function.push_back(function);
00070 rc.axis.push_back(value);
00071 } else {
00072 rc.axis.at(it - rc.axis_function.begin()) = value;
00073 }
00074 }
00075
00076 static inline bool hasSwitch(const RC& rc, RC::_swit_function_type::value_type function)
00077 {
00078 return std::find(rc.swit_function.begin(), rc.swit_function.end(), function) != rc.swit_function.end();
00079 }
00080
00081 static inline bool getSwitch(const RC& rc, RC::_swit_function_type::value_type function, RC::_swit_type::value_type& value)
00082 {
00083 if (!rc.valid) return false;
00084 const RC::_swit_function_type::const_iterator it = std::find(rc.swit_function.begin(), rc.swit_function.end(), function);
00085 if (it == rc.swit_function.end()) return false;
00086 value = rc.swit.at(it - rc.swit_function.begin());
00087 return true;
00088 }
00089
00090 static inline void setSwitch(RC& rc, RC::_swit_function_type::value_type function, RC::_swit_type::value_type value)
00091 {
00092 const RC::_swit_function_type::iterator it = std::find(rc.swit_function.begin(), rc.swit_function.end(), function);
00093 if (it == rc.swit_function.end()) {
00094 rc.swit_function.push_back(function);
00095 rc.swit.push_back(value);
00096 } else {
00097 rc.swit.at(it - rc.swit_function.begin()) = value;
00098 }
00099 }
00100
00101 }
00102
00103 #endif // HECTOR_UAV_MSGS_RC_FUNCTIONS_H