diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobject.cpp b/ground/openpilotgcs/src/plugins/uavobjects/uavobject.cpp index 90a42be9e..4881a383e 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobject.cpp +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobject.cpp @@ -519,6 +519,20 @@ QString UAVObject::toStringData() return sout; } +void UAVObject::toXML(QXmlStreamWriter *xmlWriter) +{ + xmlWriter->writeStartElement("object"); + xmlWriter->writeAttribute("name", getName()); + xmlWriter->writeAttribute("objectid", QString::number(getObjID())); + xmlWriter->writeAttribute("instanceid", QString::number(getInstID())); + xmlWriter->writeStartElement("fields"); + foreach(UAVObjectField* field , fields) { + field->toXML(xmlWriter); + } + xmlWriter->writeEndElement(); // fields + xmlWriter->writeEndElement(); // object +} + /** * Emit the transactionCompleted event (used by the UAVTalk plugin) */ diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h b/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h index 9c34271c0..51ab38217 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobject.h @@ -37,6 +37,7 @@ #include #include #include +#include #include "uavobjectfield.h" #define UAVOBJ_ACCESS_SHIFT 0 @@ -127,6 +128,7 @@ public: QString toString(); QString toStringBrief(); QString toStringData(); + void toXML(QXmlStreamWriter *xmlWriter); void emitTransactionCompleted(bool success); void emitNewInstance(UAVObject *); diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.cpp b/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.cpp index e6c01d831..e85704d65 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.cpp +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.cpp @@ -654,6 +654,16 @@ QString UAVObjectField::toString() return sout; } +void UAVObjectField::toXML(QXmlStreamWriter *xmlWriter) +{ + xmlWriter->writeStartElement("field"); + xmlWriter->writeAttribute("name", getName()); + xmlWriter->writeAttribute("type", getTypeAsString()); + for (unsigned int n = 0; n < numElements; ++n) { + xmlWriter->writeTextElement("value", getValue(n).toString()); + } + xmlWriter->writeEndElement(); // field +} qint32 UAVObjectField::pack(quint8 *dataOut) { diff --git a/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h b/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h index c782a86f3..141fa6af7 100644 --- a/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h +++ b/ground/openpilotgcs/src/plugins/uavobjects/uavobjectfield.h @@ -34,6 +34,7 @@ #include #include #include +#include class UAVObject; @@ -72,6 +73,7 @@ public: bool isNumeric(); bool isText(); QString toString(); + void toXML(QXmlStreamWriter *xmlWriter); bool isWithinLimits(QVariant var, quint32 index, int board = 0); QVariant getMaxLimit(quint32 index, int board = 0);