Commit 6813d2c1 authored by Don Gagne's avatar Don Gagne

Save log only if armed

parent a48b1192
...@@ -56,6 +56,7 @@ MAVLinkProtocol::MAVLinkProtocol(QObject* parent) : ...@@ -56,6 +56,7 @@ MAVLinkProtocol::MAVLinkProtocol(QObject* parent) :
systemId(QGC::defaultSystemId), systemId(QGC::defaultSystemId),
_logSuspendError(false), _logSuspendError(false),
_logSuspendReplay(false), _logSuspendReplay(false),
_logWasArmed(false),
_tempLogFile(QString("%2.%3").arg(_tempLogFileTemplate).arg(_logFileExtension)), _tempLogFile(QString("%2.%3").arg(_tempLogFileTemplate).arg(_logFileExtension)),
_linkMgr(LinkManager::instance()), _linkMgr(LinkManager::instance()),
_heartbeatRate(MAVLINK_HEARTBEAT_DEFAULT_RATE), _heartbeatRate(MAVLINK_HEARTBEAT_DEFAULT_RATE),
...@@ -330,6 +331,15 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link, QByteArray b) ...@@ -330,6 +331,15 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link, QByteArray b)
_stopLogging(); _stopLogging();
_logSuspendError = true; _logSuspendError = true;
} }
// Check for the vehicle arming going by. This is used to trigger log save.
if (!_logWasArmed && message.msgid == MAVLINK_MSG_ID_HEARTBEAT) {
mavlink_heartbeat_t state;
mavlink_msg_heartbeat_decode(&message, &state);
if (state.base_mode & MAV_MODE_FLAG_DECODE_POSITION_SAFETY) {
_logWasArmed = true;
}
}
} }
// ORDER MATTERS HERE! // ORDER MATTERS HERE!
...@@ -690,12 +700,13 @@ void MAVLinkProtocol::_stopLogging(void) ...@@ -690,12 +700,13 @@ void MAVLinkProtocol::_stopLogging(void)
{ {
if (_closeLogFile()) { if (_closeLogFile()) {
// If the signals are not connected it means we are running a unit test. In that case just delete log files // If the signals are not connected it means we are running a unit test. In that case just delete log files
if (qgcApp()->promptFlightDataSave()) { if (_logWasArmed && qgcApp()->promptFlightDataSave()) {
emit saveTempFlightDataLog(_tempLogFile.fileName()); emit saveTempFlightDataLog(_tempLogFile.fileName());
} else { } else {
QFile::remove(_tempLogFile.fileName()); QFile::remove(_tempLogFile.fileName());
} }
} }
_logWasArmed = false;
} }
/// @brief Checks the temp directory for log files which may have been left there. /// @brief Checks the temp directory for log files which may have been left there.
......
...@@ -292,6 +292,7 @@ private: ...@@ -292,6 +292,7 @@ private:
bool _logSuspendError; ///< true: Logging suspended due to error bool _logSuspendError; ///< true: Logging suspended due to error
bool _logSuspendReplay; ///< true: Logging suspended due to replay bool _logSuspendReplay; ///< true: Logging suspended due to replay
bool _logWasArmed; ///< true: vehicle was armed during logging
QGCTemporaryFile _tempLogFile; ///< File to log to QGCTemporaryFile _tempLogFile; ///< File to log to
static const char* _tempLogFileTemplate; ///< Template for temporary log file static const char* _tempLogFileTemplate; ///< Template for temporary log file
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment