diff --git a/src/comm/MAVLinkProtocol.cc b/src/comm/MAVLinkProtocol.cc index 8d3abf0..c992411 100644 --- a/src/comm/MAVLinkProtocol.cc +++ b/src/comm/MAVLinkProtocol.cc @@ -80,6 +80,11 @@ MAVLinkProtocol::MAVLinkProtocol() : MAVLinkProtocol::~MAVLinkProtocol() { + if (m_logfile) + { + m_logfile->close(); + delete m_logfile; + } } @@ -89,6 +94,11 @@ void MAVLinkProtocol::run() } +QString MAVLinkProtocol::getLogfileName() +{ + return QCoreApplication::applicationDirPath()+"/mavlink.log"; +} + /** * The bytes are copied by calling the LinkInterface::readBytes() method. * This method parses all incoming bytes and constructs a MAVLink packet. @@ -115,6 +125,15 @@ void MAVLinkProtocol::receiveBytes(LinkInterface* link) if (decodeState == 1) { + // Log data + if (m_loggingEnabled) + { + uint8_t buf[MAVLINK_MAX_PACKET_LEN]; + mavlink_msg_to_send_buffer(buf, &message); + m_logfile->write((const char*) buf); + qDebug() << "WROTE LOGFILE"; + } + // ORDER MATTERS HERE! // If the matching UAS object does not yet exist, it has to be created // before emitting the packetReceived signal @@ -324,7 +343,8 @@ void MAVLinkProtocol::enableLogging(bool enabled) { if (enabled && !m_loggingEnabled) { - m_logfile = new QFile(QCoreApplication::applicationDirPath()+"mavlink.log"); + m_logfile = new QFile(getLogfileName()); + m_logfile->open(QIODevice::WriteOnly | QIODevice::Append); } else { diff --git a/src/comm/MAVLinkProtocol.h b/src/comm/MAVLinkProtocol.h index 4a02a16..e2fbafb 100644 --- a/src/comm/MAVLinkProtocol.h +++ b/src/comm/MAVLinkProtocol.h @@ -68,6 +68,8 @@ public: bool heartbeatsEnabled(void); /** @brief Get logging state */ bool loggingEnabled(void); + /** @brief Get the name of the packet log file */ + QString getLogfileName(); public slots: /** @brief Receive bytes from a communication interface */ diff --git a/src/ui/MAVLinkSettingsWidget.ui b/src/ui/MAVLinkSettingsWidget.ui index de9b670..c65627d 100644 --- a/src/ui/MAVLinkSettingsWidget.ui +++ b/src/ui/MAVLinkSettingsWidget.ui @@ -25,6 +25,13 @@ + + + Log all MAVLink packets + + + + Qt::Vertical