Browse Source

UAS: Rely on autopilot plugin to provide audio string

QGC4.4
Lorenz Meier 10 years ago
parent
commit
509c7e9c0d
  1. 89
      src/uas/UAS.cc
  2. 2
      src/uas/UAS.h

89
src/uas/UAS.cc

@ -510,7 +510,7 @@ void UAS::receiveMessage(LinkInterface* link, mavlink_message_t message)
bool statechanged = false; bool statechanged = false;
bool modechanged = false; bool modechanged = false;
QString audiomodeText = getAudioModeTextFor(static_cast<int>(state.base_mode)); QString audiomodeText = getAudioModeTextFor(state.base_mode, state.custom_mode);
if ((state.system_status != this->status) && state.system_status != MAV_STATE_UNINIT) if ((state.system_status != this->status) && state.system_status != MAV_STATE_UNINIT)
{ {
@ -3141,60 +3141,63 @@ const QString& UAS::getShortState() const
* hardware in the loop is being used. * hardware in the loop is being used.
* @return the audio mode text for the id given. * @return the audio mode text for the id given.
*/ */
QString UAS::getAudioModeTextFor(int id) QString UAS::getAudioModeTextFor(uint8_t base_mode, uint32_t custom_mode) const
{ {
QString mode; QString mode = AutoPilotPluginManager::instance()->getAudioModeText(base_mode, custom_mode, autopilot);
uint8_t modeid = id;
// BASE MODE DECODING if (mode.length() == 0)
if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_AUTO)
{
mode += "autonomous";
}
else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_GUIDED)
{
mode += "guided";
}
else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_STABILIZE)
{
mode += "stabilized";
}
else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_MANUAL)
{
mode += "manual";
}
else
{ {
// Nothing else applies, we're in preflight // Fall back to generic decoding
mode += "preflight";
}
if (modeid != 0) QString mode;
{ uint8_t modeid = base_mode;
mode += " mode";
}
// ARMED STATE DECODING // BASE MODE DECODING
if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_SAFETY) if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_AUTO)
{ {
mode.append(" and armed"); mode += "autonomous";
} }
else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_GUIDED)
{
mode += "guided";
}
else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_STABILIZE)
{
mode += "stabilized";
}
else if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_MANUAL)
{
mode += "manual";
}
else
{
// Nothing else applies, we're in preflight
mode += "preflight";
}
// HARDWARE IN THE LOOP DECODING if (modeid != 0)
if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_HIL) {
{ mode += " mode";
mode.append(" using hardware in the loop simulation"); }
// ARMED STATE DECODING
if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_SAFETY)
{
mode.append(" and armed");
}
// HARDWARE IN THE LOOP DECODING
if (modeid & (uint8_t)MAV_MODE_FLAG_DECODE_POSITION_HIL)
{
mode.append(" using hardware in the loop simulation");
}
} }
return mode; return mode;
} }
/** /**
* The mode returned can be auto, stabilized, test, manual, preflight or unknown. * The mode returned depends on the specific autopilot used.
* @return the short text of the mode for the id given.
*/
/**
* The mode returned can be auto, stabilized, test, manual, preflight or unknown.
* @return the short text of the mode for the id given. * @return the short text of the mode for the id given.
*/ */
QString UAS::getShortModeTextFor(uint8_t base_mode, uint32_t custom_mode) const QString UAS::getShortModeTextFor(uint8_t base_mode, uint32_t custom_mode) const

2
src/uas/UAS.h

@ -76,7 +76,7 @@ public:
/** @brief Translate from mode id to text */ /** @brief Translate from mode id to text */
QString getShortModeTextFor(uint8_t base_mode, uint32_t custom_mode) const; QString getShortModeTextFor(uint8_t base_mode, uint32_t custom_mode) const;
/** @brief Translate from mode id to audio text */ /** @brief Translate from mode id to audio text */
static QString getAudioModeTextFor(int id); QString getAudioModeTextFor(uint8_t base_mode, uint32_t custom_mode) const;
/** @brief Get the unique system id */ /** @brief Get the unique system id */
int getUASID() const; int getUASID() const;
/** @brief Get the airframe */ /** @brief Get the airframe */

Loading…
Cancel
Save