1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-02-20 10:54:14 +01:00

GCS/UAVObjectGenerator Added support for default field values (used to initialize settings with defaults)

git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@557 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
vassilis 2010-04-28 01:50:53 +00:00 committed by vassilis
parent 1e8abdcc39
commit ce4aa6efc6
23 changed files with 410 additions and 24 deletions

View File

@ -400,6 +400,23 @@ QString UAVObjectParser::processObjectFields(QDomNode& childNode, ObjectInfo* in
field->options = options;
}
}
// Get the default value attribute (required for settings objects, optional for the rest)
elemAttr = elemAttributes.namedItem("defaultvalue");
if ( elemAttr.isNull() )
{
if ( info->isSettings )
{
return QString("Object:field:defaultvalue attribute is missing (required for settings objects)");
}
else
{
field->defaultValue = QString();
}
}
else
{
field->defaultValue = elemAttr.nodeValue().trimmed();
}
// Add field to object
info->fields.append(field);
// Done
@ -573,7 +590,6 @@ bool UAVObjectParser::generateFlightObject(int objIndex, const QString& template
outInclude.replace(QString("$(DATAFIELDS)"), fields);
// Replace the $(DATAFIELDINFO) tag
QString name;
QString enums;
for (int n = 0; n < info->fields.length(); ++n)
{
@ -630,6 +646,34 @@ bool UAVObjectParser::generateFlightObject(int objIndex, const QString& template
}
outInclude.replace(QString("$(DATAFIELDINFO)"), enums);
// Replace the $(INITFIELDS) tag
QString initfields;
for (int n = 0; n < info->fields.length(); ++n)
{
if ( !info->fields[n]->defaultValue.isNull() && !info->fields[n]->defaultValue.isEmpty() )
{
if ( info->fields[n]->type == FIELDTYPE_ENUM )
{
initfields.append( QString(" data.%1 = %2;\n")
.arg( info->fields[n]->name )
.arg( info->fields[n]->options.indexOf( info->fields[n]->defaultValue ) ) );
}
else if ( info->fields[n]->type == FIELDTYPE_FLOAT32 )
{
initfields.append( QString(" data.%1 = %2;\n")
.arg( info->fields[n]->name )
.arg( info->fields[n]->defaultValue.toFloat() ) );
}
else
{
initfields.append( QString(" data.%1 = %2;\n")
.arg( info->fields[n]->name )
.arg( info->fields[n]->defaultValue.toInt() ) );
}
}
}
outCode.replace(QString("$(INITFIELDS)"), initfields);
// Done
return true;
}
@ -769,6 +813,34 @@ bool UAVObjectParser::generateGCSObject(int objIndex, const QString& templateInc
}
outInclude.replace(QString("$(DATAFIELDINFO)"), enums);
// Replace the $(INITFIELDS) tag
QString initfields;
for (int n = 0; n < info->fields.length(); ++n)
{
if ( !info->fields[n]->defaultValue.isNull() && !info->fields[n]->defaultValue.isEmpty() )
{
if ( info->fields[n]->type == FIELDTYPE_ENUM )
{
initfields.append( QString(" data.%1 = %2;\n")
.arg( info->fields[n]->name )
.arg( info->fields[n]->options.indexOf( info->fields[n]->defaultValue ) ) );
}
else if ( info->fields[n]->type == FIELDTYPE_FLOAT32 )
{
initfields.append( QString(" data.%1 = %2;\n")
.arg( info->fields[n]->name )
.arg( info->fields[n]->defaultValue.toFloat() ) );
}
else
{
initfields.append( QString(" data.%1 = %2;\n")
.arg( info->fields[n]->name )
.arg( info->fields[n]->defaultValue.toInt() ) );
}
}
}
outCode.replace(QString("$(INITFIELDS)"), initfields);
// Done
return true;
}

View File

@ -67,6 +67,7 @@ public:
QStringList elementNames;
QStringList options; // for enums only
bool defaultElementNames;
QString defaultValue;
} FieldInfo;
typedef struct {

View File

@ -33,6 +33,9 @@
const QString ExampleObject1::NAME = QString("ExampleObject1");
/**
* Constructor
*/
ExampleObject1::ExampleObject1(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -70,8 +73,13 @@ ExampleObject1::ExampleObject1(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS,
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata ExampleObject1::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -86,13 +94,29 @@ UAVObject::Metadata ExampleObject1::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void ExampleObject1::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
ExampleObject1::DataFields ExampleObject1::getData()
{
QMutexLocker locker(mutex);
return data;
}
void ExampleObject1::setData(DataFields& data)
/**
* Set the object data fields
*/
void ExampleObject1::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -100,6 +124,11 @@ void ExampleObject1::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* ExampleObject1::clone(quint32 instID)
{
ExampleObject1* obj = new ExampleObject1();

View File

@ -77,13 +77,15 @@ public:
ExampleObject1();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // EXAMPLEOBJECT1_H

View File

@ -33,6 +33,9 @@
const QString ExampleObject2::NAME = QString("ExampleObject2");
/**
* Constructor
*/
ExampleObject2::ExampleObject2(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -55,8 +58,13 @@ ExampleObject2::ExampleObject2(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS,
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata ExampleObject2::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -71,13 +79,29 @@ UAVObject::Metadata ExampleObject2::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void ExampleObject2::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
ExampleObject2::DataFields ExampleObject2::getData()
{
QMutexLocker locker(mutex);
return data;
}
void ExampleObject2::setData(DataFields& data)
/**
* Set the object data fields
*/
void ExampleObject2::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -85,6 +109,11 @@ void ExampleObject2::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* ExampleObject2::clone(quint32 instID)
{
ExampleObject2* obj = new ExampleObject2();

View File

@ -67,13 +67,15 @@ public:
ExampleObject2();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // EXAMPLEOBJECT2_H

View File

@ -33,6 +33,9 @@
const QString ExampleSettings::NAME = QString("ExampleSettings");
/**
* Constructor
*/
ExampleSettings::ExampleSettings(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -52,8 +55,13 @@ ExampleSettings::ExampleSettings(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTING
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata ExampleSettings::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -68,13 +76,32 @@ UAVObject::Metadata ExampleSettings::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void ExampleSettings::setDefaultFieldValues()
{
data.UpdatePeriod = 10;
data.StepSize = 1;
data.StepDirection = 0;
}
/**
* Get the object data fields
*/
ExampleSettings::DataFields ExampleSettings::getData()
{
QMutexLocker locker(mutex);
return data;
}
void ExampleSettings::setData(DataFields& data)
/**
* Set the object data fields
*/
void ExampleSettings::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -82,6 +109,11 @@ void ExampleSettings::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* ExampleSettings::clone(quint32 instID)
{
ExampleSettings* obj = new ExampleSettings();

View File

@ -65,13 +65,15 @@ public:
ExampleSettings();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // EXAMPLESETTINGS_H

View File

@ -33,6 +33,9 @@
const QString FlightTelemetryStats::NAME = QString("FlightTelemetryStats");
/**
* Constructor
*/
FlightTelemetryStats::FlightTelemetryStats(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -61,8 +64,13 @@ FlightTelemetryStats::FlightTelemetryStats(): UAVDataObject(OBJID, ISSINGLEINST,
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata FlightTelemetryStats::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -77,13 +85,29 @@ UAVObject::Metadata FlightTelemetryStats::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void FlightTelemetryStats::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
FlightTelemetryStats::DataFields FlightTelemetryStats::getData()
{
QMutexLocker locker(mutex);
return data;
}
void FlightTelemetryStats::setData(DataFields& data)
/**
* Set the object data fields
*/
void FlightTelemetryStats::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -91,6 +115,11 @@ void FlightTelemetryStats::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* FlightTelemetryStats::clone(quint32 instID)
{
FlightTelemetryStats* obj = new FlightTelemetryStats();

View File

@ -71,13 +71,15 @@ public:
FlightTelemetryStats();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // FLIGHTTELEMETRYSTATS_H

View File

@ -33,6 +33,9 @@
const QString GCSTelemetryStats::NAME = QString("GCSTelemetryStats");
/**
* Constructor
*/
GCSTelemetryStats::GCSTelemetryStats(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -61,8 +64,13 @@ GCSTelemetryStats::GCSTelemetryStats(): UAVDataObject(OBJID, ISSINGLEINST, ISSET
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata GCSTelemetryStats::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -77,13 +85,29 @@ UAVObject::Metadata GCSTelemetryStats::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void GCSTelemetryStats::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
GCSTelemetryStats::DataFields GCSTelemetryStats::getData()
{
QMutexLocker locker(mutex);
return data;
}
void GCSTelemetryStats::setData(DataFields& data)
/**
* Set the object data fields
*/
void GCSTelemetryStats::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -91,6 +115,11 @@ void GCSTelemetryStats::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* GCSTelemetryStats::clone(quint32 instID)
{
GCSTelemetryStats* obj = new GCSTelemetryStats();

View File

@ -71,13 +71,15 @@ public:
GCSTelemetryStats();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // GCSTELEMETRYSTATS_H

View File

@ -33,6 +33,9 @@
const QString GpsObject::NAME = QString("GpsObject");
/**
* Constructor
*/
GpsObject::GpsObject(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -55,8 +58,13 @@ GpsObject::GpsObject(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata GpsObject::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -71,13 +79,29 @@ UAVObject::Metadata GpsObject::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void GpsObject::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
GpsObject::DataFields GpsObject::getData()
{
QMutexLocker locker(mutex);
return data;
}
void GpsObject::setData(DataFields& data)
/**
* Set the object data fields
*/
void GpsObject::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -85,6 +109,11 @@ void GpsObject::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* GpsObject::clone(quint32 instID)
{
GpsObject* obj = new GpsObject();

View File

@ -67,13 +67,15 @@ public:
GpsObject();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // GPSOBJECT_H

View File

@ -33,6 +33,9 @@
const QString SettingsPersistence::NAME = QString("SettingsPersistence");
/**
* Constructor
*/
SettingsPersistence::SettingsPersistence(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -46,8 +49,13 @@ SettingsPersistence::SettingsPersistence(): UAVDataObject(OBJID, ISSINGLEINST, I
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata SettingsPersistence::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -62,13 +70,29 @@ UAVObject::Metadata SettingsPersistence::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void SettingsPersistence::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
SettingsPersistence::DataFields SettingsPersistence::getData()
{
QMutexLocker locker(mutex);
return data;
}
void SettingsPersistence::setData(DataFields& data)
/**
* Set the object data fields
*/
void SettingsPersistence::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -76,6 +100,11 @@ void SettingsPersistence::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* SettingsPersistence::clone(quint32 instID)
{
SettingsPersistence* obj = new SettingsPersistence();

View File

@ -61,13 +61,15 @@ public:
SettingsPersistence();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // SETTINGSPERSISTENCE_H

View File

@ -33,6 +33,9 @@
const QString SystemAlarms::NAME = QString("SystemAlarms");
/**
* Constructor
*/
SystemAlarms::SystemAlarms(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -53,8 +56,13 @@ SystemAlarms::SystemAlarms(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAM
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata SystemAlarms::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -69,13 +77,29 @@ UAVObject::Metadata SystemAlarms::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void SystemAlarms::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
SystemAlarms::DataFields SystemAlarms::getData()
{
QMutexLocker locker(mutex);
return data;
}
void SystemAlarms::setData(DataFields& data)
/**
* Set the object data fields
*/
void SystemAlarms::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -83,6 +107,11 @@ void SystemAlarms::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* SystemAlarms::clone(quint32 instID)
{
SystemAlarms* obj = new SystemAlarms();

View File

@ -65,13 +65,15 @@ public:
SystemAlarms();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // SYSTEMALARMS_H

View File

@ -33,6 +33,9 @@
const QString SystemStats::NAME = QString("SystemStats");
/**
* Constructor
*/
SystemStats::SystemStats(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -49,8 +52,13 @@ SystemStats::SystemStats(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata SystemStats::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -65,13 +73,29 @@ UAVObject::Metadata SystemStats::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void SystemStats::setDefaultFieldValues()
{
}
/**
* Get the object data fields
*/
SystemStats::DataFields SystemStats::getData()
{
QMutexLocker locker(mutex);
return data;
}
void SystemStats::setData(DataFields& data)
/**
* Set the object data fields
*/
void SystemStats::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -79,6 +103,11 @@ void SystemStats::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* SystemStats::clone(quint32 instID)
{
SystemStats* obj = new SystemStats();

View File

@ -63,13 +63,15 @@ public:
SystemStats();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // SYSTEMSTATS_H

View File

@ -33,6 +33,9 @@
const QString $(NAME)::NAME = QString("$(NAME)");
/**
* Constructor
*/
$(NAME)::$(NAME)(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
{
// Create fields
@ -40,8 +43,13 @@ $(NAME)::$(NAME)(): UAVDataObject(OBJID, ISSINGLEINST, ISSETTINGS, NAME)
$(FIELDSINIT)
// Initialize object
initializeFields(fields, (quint8*)&data, NUMBYTES);
// Set the default field values
setDefaultFieldValues();
}
/**
* Get the default metadata for this object
*/
UAVObject::Metadata $(NAME)::getDefaultMetadata()
{
UAVObject::Metadata metadata;
@ -56,13 +64,29 @@ UAVObject::Metadata $(NAME)::getDefaultMetadata()
return metadata;
}
/**
* Initialize object fields with the default values.
* If a default value is not specified the object fields
* will be initialized to zero.
*/
void $(NAME)::setDefaultFieldValues()
{
$(INITFIELDS)
}
/**
* Get the object data fields
*/
$(NAME)::DataFields $(NAME)::getData()
{
QMutexLocker locker(mutex);
return data;
}
void $(NAME)::setData(DataFields& data)
/**
* Set the object data fields
*/
void $(NAME)::setData(const DataFields& data)
{
QMutexLocker locker(mutex);
this->data = data;
@ -70,6 +94,11 @@ void $(NAME)::setData(DataFields& data)
emit objectUpdated(this);
}
/**
* Create a clone of this object, a new instance ID must be specified.
* Do not use this function directly to create new instances, the
* UAVObjectManager should be used instead.
*/
UAVDataObject* $(NAME)::clone(quint32 instID)
{
$(NAME)* obj = new $(NAME)();

View File

@ -57,13 +57,15 @@ $(DATAFIELDINFO)
$(NAME)();
DataFields getData();
void setData(DataFields& data);
void setData(const DataFields& data);
Metadata getDefaultMetadata();
UAVDataObject* clone(quint32 instID);
private:
DataFields data;
void setDefaultFieldValues();
};
#endif // $(NAMEUC)_H

View File

@ -1,8 +1,8 @@
<xml>
<object name="ExampleSettings" singleinstance="true" settings="true">
<field name="UpdatePeriod" units="ms" type="int32" elements="1"/>
<field name="StepSize" units="" type="int32" elements="1"/>
<field name="StepDirection" units="" type="enum" elements="1" options="up,down"/>
<field name="UpdatePeriod" units="ms" type="int32" elements="1" defaultvalue="10"/>
<field name="StepSize" units="" type="int32" elements="1" defaultvalue="1"/>
<field name="StepDirection" units="" type="enum" elements="1" options="up,down" defaultvalue="up"/>
<telemetrygcs acked="true" updatemode="onchange" period="0"/>
<telemetryflight acked="true" updatemode="onchange" period="0"/>
<logging updatemode="never" period="0"/>