mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-01-29 14:52:12 +01:00
Make object IDs depend on the names of any enums so if field names change then
bad settings won't be picked up.
This commit is contained in:
parent
d41260d54c
commit
2ab57910ce
@ -43,7 +43,7 @@ UAVObjectParser::UAVObjectParser()
|
||||
int(4) << int(1);
|
||||
|
||||
accessModeStrXML << "readwrite" << "readonly";
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -228,7 +228,7 @@ QString UAVObjectParser::parseXML(QString& xml, QString& filename)
|
||||
node = node.nextSibling();
|
||||
}
|
||||
|
||||
all_units.removeDuplicates();
|
||||
all_units.removeDuplicates();
|
||||
// Done, return null string
|
||||
return QString();
|
||||
}
|
||||
@ -251,6 +251,11 @@ void UAVObjectParser::calculateID(ObjectInfo* info)
|
||||
hash = updateHash(info->fields[n]->name, hash);
|
||||
hash = updateHash(info->fields[n]->numElements, hash);
|
||||
hash = updateHash(info->fields[n]->type, hash);
|
||||
if(info->fields[n]->type == FIELDTYPE_ENUM) {
|
||||
QStringList options = info->fields[n]->options;
|
||||
for (int m = 0; m < options.length(); m++)
|
||||
hash = updateHash(options[m], hash);
|
||||
}
|
||||
}
|
||||
// Done
|
||||
info->id = hash & 0xFFFFFFFE;
|
||||
@ -377,7 +382,7 @@ QString UAVObjectParser::processObjectFields(QDomNode& childNode, ObjectInfo* in
|
||||
return QString("Object:field:units attribute is missing");
|
||||
|
||||
field->units = elemAttr.nodeValue();
|
||||
all_units << field->units;
|
||||
all_units << field->units;
|
||||
|
||||
// Get type attribute
|
||||
elemAttr = elemAttributes.namedItem("type");
|
||||
@ -385,14 +390,14 @@ QString UAVObjectParser::processObjectFields(QDomNode& childNode, ObjectInfo* in
|
||||
return QString("Object:field:type attribute is missing");
|
||||
|
||||
int index = fieldTypeStrXML.indexOf(elemAttr.nodeValue());
|
||||
if (index >= 0) {
|
||||
if (index >= 0) {
|
||||
field->type = (FieldType)index;
|
||||
field->numBytes = fieldTypeNumBytes[index];
|
||||
}
|
||||
else {
|
||||
}
|
||||
else {
|
||||
return QString("Object:field:type attribute value is invalid");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Get numelements or elementnames attribute
|
||||
elemAttr = elemAttributes.namedItem("elementnames");
|
||||
if ( !elemAttr.isNull() ) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user