From 6d80c11f25befa85b52fff39ab9e5175bfa02513 Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 4 Jul 2015 15:29:00 +0200 Subject: [PATCH] Autopilot plugins: Generate audio strings --- .../AutoPilotPluginManager.cc | 11 ++++ src/AutoPilotPlugins/AutoPilotPluginManager.h | 3 + .../Generic/GenericAutoPilotPlugin.cc | 9 +++ .../Generic/GenericAutoPilotPlugin.h | 1 + .../PX4/PX4AutoPilotPlugin.cc | 57 +++++++++++++++++++ src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h | 1 + 6 files changed, 82 insertions(+) diff --git a/src/AutoPilotPlugins/AutoPilotPluginManager.cc b/src/AutoPilotPlugins/AutoPilotPluginManager.cc index 086400fe2..80172536b 100644 --- a/src/AutoPilotPlugins/AutoPilotPluginManager.cc +++ b/src/AutoPilotPlugins/AutoPilotPluginManager.cc @@ -124,6 +124,17 @@ QList AutoPilotPluginManager::getModes(int a } } +QString AutoPilotPluginManager::getAudioModeText(uint8_t baseMode, uint32_t customMode, int autopilotType) const +{ + switch (autopilotType) { + case MAV_AUTOPILOT_PX4: + return PX4AutoPilotPlugin::getAudioModeText(baseMode, customMode); + case MAV_AUTOPILOT_GENERIC: + default: + return GenericAutoPilotPlugin::getAudioModeText(baseMode, customMode); + } +} + QString AutoPilotPluginManager::getShortModeText(uint8_t baseMode, uint32_t customMode, int autopilotType) const { switch (autopilotType) { diff --git a/src/AutoPilotPlugins/AutoPilotPluginManager.h b/src/AutoPilotPlugins/AutoPilotPluginManager.h index aa3808bae..9abc69935 100644 --- a/src/AutoPilotPlugins/AutoPilotPluginManager.h +++ b/src/AutoPilotPlugins/AutoPilotPluginManager.h @@ -63,6 +63,9 @@ public: /// @brief Returns a human readable short description for the specified mode. QString getShortModeText(uint8_t baseMode, uint32_t customMode, int autopilotType) const; + /// @brief Returns a human hearable short description for the specified mode. + QString getAudioModeText(uint8_t baseMode, uint32_t customMode, int autopilotType) const; + private slots: void _uasCreated(UASInterface* uas); void _uasDeleted(UASInterface* uas); diff --git a/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc b/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc index f2ddfac47..3f0fbcc1a 100644 --- a/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.cc @@ -60,6 +60,15 @@ QList GenericAutoPilotPlugin::getModes(void) return modeList; } +QString GenericAutoPilotPlugin::getAudioModeText(uint8_t baseMode, uint32_t customMode) +{ + Q_UNUSED(customMode); + + QString mode = ""; + + return mode; +} + QString GenericAutoPilotPlugin::getShortModeText(uint8_t baseMode, uint32_t customMode) { Q_UNUSED(customMode); diff --git a/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h b/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h index 87f37de08..c9b2848e3 100644 --- a/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h +++ b/src/AutoPilotPlugins/Generic/GenericAutoPilotPlugin.h @@ -44,6 +44,7 @@ public: virtual const QVariantList& vehicleComponents(void); static QList getModes(void); + static QString getAudioModeText(uint8_t baseMode, uint32_t customMode); static QString getShortModeText(uint8_t baseMode, uint32_t customMode); static void clearStaticData(void); diff --git a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc index 643fe81f6..c282deb2d 100644 --- a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc +++ b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.cc @@ -141,6 +141,63 @@ QList PX4AutoPilotPlugin::getModes(void) return modeList; } +QString PX4AutoPilotPlugin::getAudioModeText(uint8_t baseMode, uint32_t customMode) +{ + QString mode; + + Q_ASSERT(baseMode & MAV_MODE_FLAG_CUSTOM_MODE_ENABLED); + + if (baseMode & MAV_MODE_FLAG_CUSTOM_MODE_ENABLED) { + union px4_custom_mode px4_mode; + px4_mode.data = customMode; + + if (px4_mode.main_mode == PX4_CUSTOM_MAIN_MODE_MANUAL) { + mode = "manual"; + } else if (px4_mode.main_mode == PX4_CUSTOM_MAIN_MODE_ACRO) { + mode = "caro"; + } else if (px4_mode.main_mode == PX4_CUSTOM_MAIN_MODE_STABILIZED) { + mode = "stabilized"; + } else if (px4_mode.main_mode == PX4_CUSTOM_MAIN_MODE_ALTCTL) { + mode = "altitude control"; + } else if (px4_mode.main_mode == PX4_CUSTOM_MAIN_MODE_POSCTL) { + mode = "position control"; + } else if (px4_mode.main_mode == PX4_CUSTOM_MAIN_MODE_AUTO) { + mode = "auto and "; + if (px4_mode.sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_READY) { + mode += "ready"; + } else if (px4_mode.sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_TAKEOFF) { + mode += "taking off"; + } else if (px4_mode.sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_LOITER) { + mode += "loitering"; + } else if (px4_mode.sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_MISSION) { + mode += "following waypoints"; + } else if (px4_mode.sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_RTL) { + mode += "returning to land"; + } else if (px4_mode.sub_mode == PX4_CUSTOM_SUB_MODE_AUTO_LAND) { + mode += "landing"; + } + } else if (px4_mode.main_mode == PX4_CUSTOM_MAIN_MODE_OFFBOARD) { + mode = "offboard controlled"; + } + + if (baseMode != 0) + { + mode += " mode"; + } + + // ARMED STATE DECODING + if (baseMode & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_SAFETY) + { + mode.append(" and armed"); + } + + } else { + mode = ""; + } + + return mode; +} + QString PX4AutoPilotPlugin::getShortModeText(uint8_t baseMode, uint32_t customMode) { QString mode; diff --git a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h index e757900d4..d391e3613 100644 --- a/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h +++ b/src/AutoPilotPlugins/PX4/PX4AutoPilotPlugin.h @@ -53,6 +53,7 @@ public: virtual const QVariantList& vehicleComponents(void); static QList getModes(void); + static QString getAudioModeText(uint8_t baseMode, uint32_t customMode); static QString getShortModeText(uint8_t baseMode, uint32_t customMode); static void clearStaticData(void); -- 2.22.0