From e9387cac1d741799923f429d239c57744ab3d9c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Mon, 5 Sep 2022 08:20:14 +0200 Subject: [PATCH] mavlink: move get_px4_custom_mode to px4_custom_mode.h --- src/modules/commander/Commander.cpp | 1 + src/modules/commander/px4_custom_mode.h | 97 +++++++++++++++++++++++- src/modules/mavlink/mavlink_messages.cpp | 88 --------------------- src/modules/mavlink/mavlink_messages.h | 1 + 4 files changed, 96 insertions(+), 91 deletions(-) diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index 835f70ec42..6ee7c0509f 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -48,6 +48,7 @@ #include "Arming/ArmAuthorization/ArmAuthorization.h" #include "commander_helper.h" #include "esc_calibration.h" +#define DEFINE_GET_PX4_CUSTOM_MODE #include "px4_custom_mode.h" #include "state_machine_helper.h" #include "ModeUtil/control_mode.hpp" diff --git a/src/modules/commander/px4_custom_mode.h b/src/modules/commander/px4_custom_mode.h index 4b1353e139..b3d43652dd 100644 --- a/src/modules/commander/px4_custom_mode.h +++ b/src/modules/commander/px4_custom_mode.h @@ -37,8 +37,7 @@ * */ -#ifndef PX4_CUSTOM_MODE_H_ -#define PX4_CUSTOM_MODE_H_ +#pragma once #include @@ -86,4 +85,96 @@ union px4_custom_mode { }; }; -#endif /* PX4_CUSTOM_MODE_H_ */ +#ifdef DEFINE_GET_PX4_CUSTOM_MODE +#include + +static inline union px4_custom_mode get_px4_custom_mode(uint8_t nav_state) +{ + union px4_custom_mode custom_mode; + custom_mode.data = 0; + + switch (nav_state) { + case vehicle_status_s::NAVIGATION_STATE_MANUAL: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_MANUAL; + break; + + case vehicle_status_s::NAVIGATION_STATE_ALTCTL: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_ALTCTL; + break; + + case vehicle_status_s::NAVIGATION_STATE_POSCTL: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_POSCTL; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_MISSION: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_MISSION; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_LOITER: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_LOITER; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_RTL: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_RTL; + break; + + case vehicle_status_s::NAVIGATION_STATE_ACRO: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_ACRO; + break; + + case vehicle_status_s::NAVIGATION_STATE_DESCEND: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_LAND; + break; + + case vehicle_status_s::NAVIGATION_STATE_TERMINATION: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_MANUAL; + break; + + case vehicle_status_s::NAVIGATION_STATE_OFFBOARD: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_OFFBOARD; + break; + + case vehicle_status_s::NAVIGATION_STATE_STAB: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_STABILIZED; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_TAKEOFF: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_LAND: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_LAND; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_FOLLOW_TARGET: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_FOLLOW_TARGET; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_PRECLAND: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_PRECLAND; + break; + + case vehicle_status_s::NAVIGATION_STATE_ORBIT: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_POSCTL; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_POSCTL_ORBIT; + break; + + case vehicle_status_s::NAVIGATION_STATE_AUTO_VTOL_TAKEOFF: + custom_mode.main_mode = PX4_CUSTOM_MAIN_MODE_AUTO; + custom_mode.sub_mode = PX4_CUSTOM_SUB_MODE_AUTO_VTOL_TAKEOFF; + break; + } + + return custom_mode; +} + +#endif /* DEFINE_GET_PX4_CUSTOM_MODE */ + diff --git a/src/modules/mavlink/mavlink_messages.cpp b/src/modules/mavlink/mavlink_messages.cpp index 9c0edd4a42..d0128c6280 100644 --- a/src/modules/mavlink/mavlink_messages.cpp +++ b/src/modules/mavlink/mavlink_messages.cpp @@ -229,94 +229,6 @@ static_assert(MAV_SENSOR_ROTATION_ROLL_90_PITCH_315 == static_cast(), diff --git a/src/modules/mavlink/mavlink_messages.h b/src/modules/mavlink/mavlink_messages.h index 21cef651f5..cc246ecef1 100644 --- a/src/modules/mavlink/mavlink_messages.h +++ b/src/modules/mavlink/mavlink_messages.h @@ -43,6 +43,7 @@ #include "mavlink_stream.h" +#define DEFINE_GET_PX4_CUSTOM_MODE #include class StreamListItem