1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-27 16:54:15 +01:00

OP-1244 Implemented xml export of flight logs.

This commit is contained in:
m_thread 2014-02-26 12:10:02 +01:00
parent b272948ff4
commit b7ab2701a4
3 changed files with 45 additions and 2 deletions

View File

@ -30,7 +30,6 @@
#include <QApplication>
#include <QFileDialog>
#include <QXmlStreamWriter>
#include "debuglogcontrol.h"
#include "uavobjecthelper.h"
@ -246,6 +245,24 @@ void FlightLogManager::exportToCSV(QString fileName)
void FlightLogManager::exportToXML(QString fileName)
{
QFile xmlFile(fileName);
if (xmlFile.open(QFile::ReadWrite)) {
QXmlStreamWriter xmlWriter(&xmlFile);
xmlWriter.setAutoFormatting(true);
xmlWriter.setAutoFormattingIndent(4);
xmlWriter.writeStartDocument("1.0", true);
xmlWriter.writeStartElement("logs");
xmlWriter.writeComment("This file was created by the export function in OpenPilot GCS.");
foreach (ExtendedDebugLogEntry *entry , m_logEntries) {
entry->toXML(&xmlWriter);
}
xmlWriter.writeEndElement();
xmlWriter.writeEndDocument();
xmlFile.flush();
xmlFile.close();
}
}
void FlightLogManager::exportLogs()
@ -334,6 +351,22 @@ QString ExtendedDebugLogEntry::getLogString()
}
}
void ExtendedDebugLogEntry::toXML(QXmlStreamWriter *xmlWriter)
{
xmlWriter->writeStartElement("entry");
xmlWriter->writeAttribute("flight", QString::number(getFlight()));
xmlWriter->writeAttribute("flighttime", QString::number(getFlightTime()));
xmlWriter->writeAttribute("entry", QString::number(getEntry()));
if (getType() == DebugLogEntry::TYPE_TEXT) {
xmlWriter->writeAttribute("type", "text");
xmlWriter->writeTextElement("message", QString((const char *)getData().Data));
} else if (getType() == DebugLogEntry::TYPE_UAVOBJECT) {
xmlWriter->writeAttribute("type", "uavobject");
m_object->toXML(xmlWriter);
}
xmlWriter->writeEndElement(); //entry
}
void ExtendedDebugLogEntry::setData(const DebugLogEntry::DataFields &data, UAVObjectManager *objectManager)
{
DebugLogEntry::setData(data);

View File

@ -32,6 +32,7 @@
#include <QList>
#include <QQmlListProperty>
#include <QSemaphore>
#include <QXmlStreamWriter>
#include "uavobjectmanager.h"
#include "debuglogentry.h"
@ -46,6 +47,7 @@ public:
~ExtendedDebugLogEntry();
QString getLogString();
void toXML(QXmlStreamWriter *xmlWriter);
UAVDataObject *uavObject()
{
return m_object;

View File

@ -659,8 +659,16 @@ void UAVObjectField::toXML(QXmlStreamWriter *xmlWriter)
xmlWriter->writeStartElement("field");
xmlWriter->writeAttribute("name", getName());
xmlWriter->writeAttribute("type", getTypeAsString());
if (!getUnits().isEmpty()) {
xmlWriter->writeAttribute("unit", getUnits());
}
for (unsigned int n = 0; n < numElements; ++n) {
xmlWriter->writeTextElement("value", getValue(n).toString());
xmlWriter->writeStartElement("value");
if(getElementNames().size() > 1) {
xmlWriter->writeAttribute("name", getElementNames().at(n));
}
xmlWriter->writeCharacters(getValue(n).toString());
xmlWriter->writeEndElement(); // value
}
xmlWriter->writeEndElement(); // field
}