|
|
|
@ -756,6 +756,10 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
@@ -756,6 +756,10 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes
|
|
|
|
|
case MAVLINK_MSG_ID_ESTIMATOR_STATUS: |
|
|
|
|
_handleEstimatorStatus(message); |
|
|
|
|
break; |
|
|
|
|
case MAVLINK_MSG_ID_STATUSTEXT: |
|
|
|
|
_handleStatusText(message); |
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
case MAVLINK_MSG_ID_PING: |
|
|
|
|
_handlePing(link, message); |
|
|
|
|
break; |
|
|
|
@ -813,6 +817,41 @@ void Vehicle::_handleCameraImageCaptured(const mavlink_message_t& message)
@@ -813,6 +817,41 @@ void Vehicle::_handleCameraImageCaptured(const mavlink_message_t& message)
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Vehicle::_handleStatusText(mavlink_message_t& message) |
|
|
|
|
{ |
|
|
|
|
QByteArray b; |
|
|
|
|
|
|
|
|
|
b.resize(MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN+1); |
|
|
|
|
mavlink_msg_statustext_get_text(&message, b.data()); |
|
|
|
|
b[b.length()-1] = '\0'; |
|
|
|
|
QString messageText = QString(b); |
|
|
|
|
int severity = mavlink_msg_statustext_get_severity(&message); |
|
|
|
|
|
|
|
|
|
bool skipSpoken = false; |
|
|
|
|
bool ardupilotPrearm = messageText.startsWith(QStringLiteral("PreArm")); |
|
|
|
|
bool px4Prearm = messageText.startsWith(QStringLiteral("preflight"), Qt::CaseInsensitive) && severity >= MAV_SEVERITY_CRITICAL; |
|
|
|
|
if (ardupilotPrearm || px4Prearm) { |
|
|
|
|
// Limit repeated PreArm message to once every 10 seconds
|
|
|
|
|
if (_noisySpokenPrearmMap.contains(messageText) && _noisySpokenPrearmMap[messageText].msecsTo(QTime::currentTime()) < (10 * 1000)) { |
|
|
|
|
skipSpoken = true; |
|
|
|
|
} else { |
|
|
|
|
_noisySpokenPrearmMap[messageText] = QTime::currentTime(); |
|
|
|
|
setPrearmError(messageText); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// If the message is NOTIFY or higher severity, or starts with a '#',
|
|
|
|
|
// then read it aloud.
|
|
|
|
|
if (messageText.startsWith("#") || severity <= MAV_SEVERITY_NOTICE) { |
|
|
|
|
messageText.remove("#"); |
|
|
|
|
if (!skipSpoken) { |
|
|
|
|
qgcApp()->toolbox()->audioOutput()->say(messageText); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
emit textMessageReceived(id(), message.compid, severity, messageText); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Vehicle::_handleVfrHud(mavlink_message_t& message) |
|
|
|
|
{ |
|
|
|
|
mavlink_vfr_hud_t vfrHud; |
|
|
|
|