functions.h
Go to the documentation of this file.
00001 //=================================================================================================
00002 // Copyright (c) 2012, Johannes Meyer, TU Darmstadt
00003 // All rights reserved.
00004 
00005 // Redistribution and use in source and binary forms, with or without
00006 // modification, are permitted provided that the following conditions are met:
00007 //     * Redistributions of source code must retain the above copyright
00008 //       notice, this list of conditions and the following disclaimer.
00009 //     * Redistributions in binary form must reproduce the above copyright
00010 //       notice, this list of conditions and the following disclaimer in the
00011 //       documentation and/or other materials provided with the distribution.
00012 //     * Neither the name of the Flight Systems and Automatic Control group,
00013 //       TU Darmstadt, nor the names of its contributors may be used to
00014 //       endorse or promote products derived from this software without
00015 //       specific prior written permission.
00016 
00017 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
00018 // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
00019 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00020 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY
00021 // DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
00022 // (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00023 // LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
00024 // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
00025 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
00026 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
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 } // namespace hector_uav_msgs
00102 
00103 #endif // HECTOR_UAV_MSGS_RC_FUNCTIONS_H


hector_uav_msgs
Author(s): Johannes Meyer
autogenerated on Thu Aug 27 2015 13:17:25