|
|
@ -339,20 +339,15 @@ void APMFirmwarePlugin::_handleOutgoingParamSet(Vehicle* vehicle, LinkInterface* |
|
|
|
mavlink_msg_param_set_encode_chan(message->sysid, message->compid, outgoingLink->mavlinkChannel(), message, ¶mSet); |
|
|
|
mavlink_msg_param_set_encode_chan(message->sysid, message->compid, outgoingLink->mavlinkChannel(), message, ¶mSet); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool APMFirmwarePlugin::_handleIncomingStatusText(Vehicle* vehicle, mavlink_message_t* message, bool longVersion) |
|
|
|
bool APMFirmwarePlugin::_handleIncomingStatusText(Vehicle* vehicle, mavlink_message_t* message) |
|
|
|
{ |
|
|
|
{ |
|
|
|
QString messageText; |
|
|
|
QString messageText; |
|
|
|
APMFirmwarePluginInstanceData* instanceData = qobject_cast<APMFirmwarePluginInstanceData*>(vehicle->firmwarePluginInstanceData()); |
|
|
|
APMFirmwarePluginInstanceData* instanceData = qobject_cast<APMFirmwarePluginInstanceData*>(vehicle->firmwarePluginInstanceData()); |
|
|
|
|
|
|
|
|
|
|
|
int severity; |
|
|
|
int severity = mavlink_msg_statustext_get_severity(message); |
|
|
|
if (longVersion) { |
|
|
|
|
|
|
|
severity = mavlink_msg_statustext_long_get_severity(message); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
severity = mavlink_msg_statustext_get_severity(message); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (vehicle->firmwareMajorVersion() == Vehicle::versionNotSetValue || severity < MAV_SEVERITY_NOTICE) { |
|
|
|
if (vehicle->firmwareMajorVersion() == Vehicle::versionNotSetValue || severity < MAV_SEVERITY_NOTICE) { |
|
|
|
messageText = _getMessageText(message, longVersion); |
|
|
|
messageText = _getMessageText(message); |
|
|
|
qCDebug(APMFirmwarePluginLog) << messageText; |
|
|
|
qCDebug(APMFirmwarePluginLog) << messageText; |
|
|
|
|
|
|
|
|
|
|
|
if (!messageText.contains(APM_SOLO_REXP)) { |
|
|
|
if (!messageText.contains(APM_SOLO_REXP)) { |
|
|
@ -423,14 +418,14 @@ bool APMFirmwarePlugin::_handleIncomingStatusText(Vehicle* vehicle, mavlink_mess |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (messageText.isEmpty()) { |
|
|
|
if (messageText.isEmpty()) { |
|
|
|
messageText = _getMessageText(message, longVersion); |
|
|
|
messageText = _getMessageText(message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// The following messages are incorrectly labeled as warning message.
|
|
|
|
// The following messages are incorrectly labeled as warning message.
|
|
|
|
// Fixed in newer firmware (unreleased at this point), but still in older firmware.
|
|
|
|
// Fixed in newer firmware (unreleased at this point), but still in older firmware.
|
|
|
|
if (messageText.contains(APM_COPTER_REXP) || messageText.contains(APM_PLANE_REXP) || messageText.contains(APM_ROVER_REXP) || messageText.contains(APM_SUB_REXP) || |
|
|
|
if (messageText.contains(APM_COPTER_REXP) || messageText.contains(APM_PLANE_REXP) || messageText.contains(APM_ROVER_REXP) || messageText.contains(APM_SUB_REXP) || |
|
|
|
messageText.contains(APM_PX4NUTTX_REXP) || messageText.contains(APM_FRAME_REXP) || messageText.contains(APM_SYSID_REXP)) { |
|
|
|
messageText.contains(APM_PX4NUTTX_REXP) || messageText.contains(APM_FRAME_REXP) || messageText.contains(APM_SYSID_REXP)) { |
|
|
|
_setInfoSeverity(message, longVersion); |
|
|
|
_setInfoSeverity(message); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (messageText.contains(APM_SOLO_REXP)) { |
|
|
|
if (messageText.contains(APM_SOLO_REXP)) { |
|
|
@ -438,7 +433,7 @@ bool APMFirmwarePlugin::_handleIncomingStatusText(Vehicle* vehicle, mavlink_mess |
|
|
|
vehicle->setSoloFirmware(true); |
|
|
|
vehicle->setSoloFirmware(true); |
|
|
|
|
|
|
|
|
|
|
|
// Fix up severity
|
|
|
|
// Fix up severity
|
|
|
|
_setInfoSeverity(message, longVersion); |
|
|
|
_setInfoSeverity(message); |
|
|
|
|
|
|
|
|
|
|
|
// Start TCP video handshake with ARTOO
|
|
|
|
// Start TCP video handshake with ARTOO
|
|
|
|
_soloVideoHandshake(vehicle, true /* originalSoloFirmware */); |
|
|
|
_soloVideoHandshake(vehicle, true /* originalSoloFirmware */); |
|
|
@ -499,9 +494,7 @@ bool APMFirmwarePlugin::adjustIncomingMavlinkMessage(Vehicle* vehicle, mavlink_m |
|
|
|
_handleIncomingParamValue(vehicle, message); |
|
|
|
_handleIncomingParamValue(vehicle, message); |
|
|
|
break; |
|
|
|
break; |
|
|
|
case MAVLINK_MSG_ID_STATUSTEXT: |
|
|
|
case MAVLINK_MSG_ID_STATUSTEXT: |
|
|
|
return _handleIncomingStatusText(vehicle, message, false /* longVersion */); |
|
|
|
return _handleIncomingStatusText(vehicle, message); |
|
|
|
case MAVLINK_MSG_ID_STATUSTEXT_LONG: |
|
|
|
|
|
|
|
return _handleIncomingStatusText(vehicle, message, true /* longVersion */); |
|
|
|
|
|
|
|
case MAVLINK_MSG_ID_RC_CHANNELS: |
|
|
|
case MAVLINK_MSG_ID_RC_CHANNELS: |
|
|
|
_handleRCChannels(vehicle, message); |
|
|
|
_handleRCChannels(vehicle, message); |
|
|
|
break; |
|
|
|
break; |
|
|
@ -523,17 +516,12 @@ void APMFirmwarePlugin::adjustOutgoingMavlinkMessage(Vehicle* vehicle, LinkInter |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
QString APMFirmwarePlugin::_getMessageText(mavlink_message_t* message, bool longVersion) const |
|
|
|
QString APMFirmwarePlugin::_getMessageText(mavlink_message_t* message) const |
|
|
|
{ |
|
|
|
{ |
|
|
|
QByteArray b; |
|
|
|
QByteArray b; |
|
|
|
|
|
|
|
|
|
|
|
if (longVersion) { |
|
|
|
b.resize(MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN+1); |
|
|
|
b.resize(MAVLINK_MSG_STATUSTEXT_LONG_FIELD_TEXT_LEN+1); |
|
|
|
mavlink_msg_statustext_get_text(message, b.data()); |
|
|
|
mavlink_msg_statustext_long_get_text(message, b.data()); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
b.resize(MAVLINK_MSG_STATUSTEXT_FIELD_TEXT_LEN+1); |
|
|
|
|
|
|
|
mavlink_msg_statustext_get_text(message, b.data()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Ensure NUL-termination
|
|
|
|
// Ensure NUL-termination
|
|
|
|
b[b.length()-1] = '\0'; |
|
|
|
b[b.length()-1] = '\0'; |
|
|
@ -595,33 +583,21 @@ void APMFirmwarePlugin::_adjustSeverity(mavlink_message_t* message) const |
|
|
|
&statusText); |
|
|
|
&statusText); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void APMFirmwarePlugin::_setInfoSeverity(mavlink_message_t* message, bool longVersion) const |
|
|
|
void APMFirmwarePlugin::_setInfoSeverity(mavlink_message_t* message) const |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Re-Encoding is always done using mavlink 1.0
|
|
|
|
// Re-Encoding is always done using mavlink 1.0
|
|
|
|
mavlink_status_t* mavlinkStatusReEncode = mavlink_get_channel_status(0); |
|
|
|
mavlink_status_t* mavlinkStatusReEncode = mavlink_get_channel_status(0); |
|
|
|
mavlinkStatusReEncode->flags |= MAVLINK_STATUS_FLAG_IN_MAVLINK1; |
|
|
|
mavlinkStatusReEncode->flags |= MAVLINK_STATUS_FLAG_IN_MAVLINK1; |
|
|
|
|
|
|
|
|
|
|
|
if (longVersion) { |
|
|
|
mavlink_statustext_t statusText; |
|
|
|
mavlink_statustext_long_t statusTextLong; |
|
|
|
mavlink_msg_statustext_decode(message, &statusText); |
|
|
|
mavlink_msg_statustext_long_decode(message, &statusTextLong); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statusTextLong.severity = MAV_SEVERITY_INFO; |
|
|
|
statusText.severity = MAV_SEVERITY_INFO; |
|
|
|
mavlink_msg_statustext_long_encode_chan(message->sysid, |
|
|
|
mavlink_msg_statustext_encode_chan(message->sysid, |
|
|
|
message->compid, |
|
|
|
message->compid, |
|
|
|
0, // Re-encoding uses reserved channel 0
|
|
|
|
0, // Re-encoding uses reserved channel 0
|
|
|
|
message, |
|
|
|
message, |
|
|
|
&statusTextLong); |
|
|
|
&statusText); |
|
|
|
} else { |
|
|
|
|
|
|
|
mavlink_statustext_t statusText; |
|
|
|
|
|
|
|
mavlink_msg_statustext_decode(message, &statusText); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
statusText.severity = MAV_SEVERITY_INFO; |
|
|
|
|
|
|
|
mavlink_msg_statustext_encode_chan(message->sysid, |
|
|
|
|
|
|
|
message->compid, |
|
|
|
|
|
|
|
0, // Re-encoding uses reserved channel 0
|
|
|
|
|
|
|
|
message, |
|
|
|
|
|
|
|
&statusText); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void APMFirmwarePlugin::_adjustCalibrationMessageSeverity(mavlink_message_t* message) const |
|
|
|
void APMFirmwarePlugin::_adjustCalibrationMessageSeverity(mavlink_message_t* message) const |
|
|
|