Commit cade6379 authored by Don Gagne's avatar Don Gagne

Reset meta data if dup is found

parent f46ff35e
...@@ -119,6 +119,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -119,6 +119,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
QString factGroup; QString factGroup;
FactMetaData* metaData = NULL; FactMetaData* metaData = NULL;
int xmlState = XmlStateNone; int xmlState = XmlStateNone;
bool badMetaData = true;
while (!xml.atEnd()) { while (!xml.atEnd()) {
if (xml.isStartElement()) { if (xml.isStartElement()) {
...@@ -215,15 +216,18 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -215,15 +216,18 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
} }
// Now that we know type we can create meta data object and add it to the system // Now that we know type we can create meta data object and add it to the system
metaData = new FactMetaData(foundType); metaData = new FactMetaData(foundType);
Q_CHECK_PTR(metaData); Q_CHECK_PTR(metaData);
metaData->setGroup(factGroup);
if (_mapParameterName2FactMetaData.contains(name)) { if (_mapParameterName2FactMetaData.contains(name)) {
// We can't trust the default value since we have dups // We can't trust the meta dafa since we have dups
qDebug() << "Duplicate parameter found:" << name; qDebug() << "Duplicate parameter found:" << name;
_mapParameterName2FactMetaData[name]->clearDefaultValue(); badMetaData = true;
// Reset to default meta data
_mapParameterName2FactMetaData[name] = metaData;
} else { } else {
_mapParameterName2FactMetaData[name] = metaData; _mapParameterName2FactMetaData[name] = metaData;
metaData->setGroup(factGroup);
if (xml.attributes().hasAttribute("default")) { if (xml.attributes().hasAttribute("default")) {
bool convertOk; bool convertOk;
...@@ -244,52 +248,54 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -244,52 +248,54 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
return; return;
} }
if (elementName == "short_desc") { if (!badMetaData) {
Q_ASSERT(metaData); if (elementName == "short_desc") {
QString text = xml.readElementText(); Q_ASSERT(metaData);
qCDebug(PX4ParameterLoaderLog) << "Short description:" << text; QString text = xml.readElementText();
metaData->setShortDescription(text); qCDebug(PX4ParameterLoaderLog) << "Short description:" << text;
metaData->setShortDescription(text);
} else if (elementName == "long_desc") { } else if (elementName == "long_desc") {
Q_ASSERT(metaData); Q_ASSERT(metaData);
QString text = xml.readElementText(); QString text = xml.readElementText();
qCDebug(PX4ParameterLoaderLog) << "Long description:" << text; qCDebug(PX4ParameterLoaderLog) << "Long description:" << text;
metaData->setLongDescription(text); metaData->setLongDescription(text);
} else if (elementName == "min") { } else if (elementName == "min") {
Q_ASSERT(metaData); Q_ASSERT(metaData);
QString text = xml.readElementText(); QString text = xml.readElementText();
qCDebug(PX4ParameterLoaderLog) << "Min:" << text; qCDebug(PX4ParameterLoaderLog) << "Min:" << text;
bool convertOk; bool convertOk;
QVariant varMin = _stringToTypedVariant(text, metaData->type(), &convertOk); QVariant varMin = _stringToTypedVariant(text, metaData->type(), &convertOk);
if (convertOk) { if (convertOk) {
metaData->setMin(varMin); metaData->setMin(varMin);
} else { } else {
// Non-fatal // Non-fatal
qDebug() << "Parameter meta data with bad min value:" << text; qDebug() << "Parameter meta data with bad min value:" << text;
} }
} else if (elementName == "max") { } else if (elementName == "max") {
Q_ASSERT(metaData); Q_ASSERT(metaData);
QString text = xml.readElementText(); QString text = xml.readElementText();
qCDebug(PX4ParameterLoaderLog) << "Max:" << text; qCDebug(PX4ParameterLoaderLog) << "Max:" << text;
bool convertOk; bool convertOk;
QVariant varMax = _stringToTypedVariant(text, metaData->type(), &convertOk); QVariant varMax = _stringToTypedVariant(text, metaData->type(), &convertOk);
if (convertOk) { if (convertOk) {
metaData->setMax(varMax); metaData->setMax(varMax);
} else {
// Non-fatal
qDebug() << "Parameter meta data with bad max value:" << text;
}
} else if (elementName == "unit") {
Q_ASSERT(metaData);
QString text = xml.readElementText();
qCDebug(PX4ParameterLoaderLog) << "Unit:" << text;
metaData->setUnits(text);
} else { } else {
// Non-fatal qDebug() << "Unknown element in XML: " << elementName;
qDebug() << "Parameter meta data with bad max value:" << text;
} }
} else if (elementName == "unit") {
Q_ASSERT(metaData);
QString text = xml.readElementText();
qCDebug(PX4ParameterLoaderLog) << "Unit:" << text;
metaData->setUnits(text);
} else {
qDebug() << "Unknown element in XML: " << elementName;
} }
} }
} else if (xml.isEndElement()) { } else if (xml.isEndElement()) {
...@@ -298,6 +304,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void) ...@@ -298,6 +304,7 @@ void PX4ParameterLoader::loadParameterFactMetaData(void)
if (elementName == "parameter") { if (elementName == "parameter") {
// Done loading this one parameter // Done loading this one parameter
metaData = NULL; metaData = NULL;
badMetaData = false;
xmlState = XmlStateFoundGroup; xmlState = XmlStateFoundGroup;
} else if (elementName == "group") { } else if (elementName == "group") {
xmlState = XmlStateFoundVersion; xmlState = XmlStateFoundVersion;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment