Program Listing for File utils.hpp

Return to documentation for file (include/mavros/utils.hpp)

/*
 * Copyright 2014,2015,2016,2021 Vladimir Ermakov.
 *
 * This file is part of the mavros package and subject to the license terms
 * in the top-level LICENSE file of the mavros repository.
 * https://github.com/mavlink/mavros/tree/master/LICENSE.md
 */
#pragma once

#ifndef MAVROS__UTILS_HPP_
#define MAVROS__UTILS_HPP_

#include <string>
#include <Eigen/Geometry>   // NOLINT

#include "mavconn/thread_utils.hpp"
#include "mavros_msgs/mavlink_convert.hpp"
#include "mavconn/mavlink_dialect.hpp"

// OS X compat: missing error codes
#ifdef __APPLE__
#define EBADE 50        /* Invalid exchange */
#define EBADFD 81       /* File descriptor in bad state */
#define EBADRQC 54      /* Invalid request code */
#define EBADSLT 55      /* Invalid slot */
#endif

namespace mavros
{
namespace utils
{
using mavconn::utils::format;
using mavconn::utils::set_this_thread_name;

enum class timesync_mode
{
  NONE = 0,
  MAVLINK,
  ONBOARD,
  PASSTHROUGH,
};

template<typename _T>
constexpr typename std::underlying_type<_T>::type enum_value(_T e)
{
  return static_cast<typename std::underlying_type<_T>::type>(e);
}

std::string to_string(timesync_mode e);

std::string to_string(mavlink::common::MAV_SENSOR_ORIENTATION e);

std::string to_string(mavlink::minimal::MAV_AUTOPILOT e);
std::string to_string(mavlink::minimal::MAV_TYPE e);
std::string to_string(mavlink::minimal::MAV_STATE e);
std::string to_string(mavlink::minimal::MAV_COMPONENT e);
std::string to_string(mavlink::common::MAV_ESTIMATOR_TYPE e);
std::string to_string(mavlink::common::ADSB_ALTITUDE_TYPE e);
std::string to_string(mavlink::common::ADSB_EMITTER_TYPE e);
std::string to_string(mavlink::common::MAV_MISSION_RESULT e);
std::string to_string(mavlink::common::MAV_FRAME e);
std::string to_string(mavlink::common::MAV_DISTANCE_SENSOR e);
std::string to_string(mavlink::common::LANDING_TARGET_TYPE e);
template<typename _T>
std::string to_string_enum(int e)
{
  return to_string(static_cast<_T>(e));
}

std::string enum_to_name(mavlink::minimal::MAV_TYPE e);

Eigen::Quaterniond sensor_orientation_matching(mavlink::common::MAV_SENSOR_ORIENTATION orientation);

int sensor_orientation_from_str(const std::string & sensor_orientation);

timesync_mode timesync_mode_from_str(const std::string & mode);

mavlink::common::MAV_FRAME mav_frame_from_str(const std::string & mav_frame);

mavlink::minimal::MAV_TYPE mav_type_from_str(const std::string & mav_type);

mavlink::common::LANDING_TARGET_TYPE landing_target_type_from_str(
  const std::string & landing_target_type);

}       // namespace utils
}       // namespace mavros

#endif  // MAVROS__UTILS_HPP_