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:
parent
b272948ff4
commit
b7ab2701a4
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user