From 8a6fe1306a7c5f152f4934c8488da2048b38d4ba Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sun, 7 Feb 2016 14:22:49 -0800 Subject: [PATCH] PX4 Fact enum meta data support --- src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc | 18 ++++++++++++++++++ src/comm/PX4MockLink.params | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc index 052c78e10..3df47a67c 100644 --- a/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc +++ b/src/FirmwarePlugin/PX4/PX4ParameterMetaData.cc @@ -320,6 +320,24 @@ void PX4ParameterMetaData::_loadParameterFactMetaData(void) metaData->setRebootRequired(true); } + } else if (elementName == "values") { + // doing nothing individual value will follow anyway. May be used for sanity checking. + + } else if (elementName == "value") { + QString enumValueStr = xml.attributes().value("code").toString(); + QString enumString = xml.readElementText(); + qCDebug(PX4ParameterMetaDataLog) << "parameter value:" + << "value desc:" << enumString << "code:" << enumValueStr; + + QVariant enumValue; + QString errorString; + if (metaData->convertAndValidateRaw(enumValueStr, false /* validate */, enumValue, errorString)) { + metaData->addEnumInfo(enumString, enumValue); + } else { + qCDebug(PX4ParameterMetaDataLog) << "Invalid enum value, name:" << metaData->name() + << " type:" << metaData->type() << " value:" << enumValueStr + << " error:" << errorString; + } } else { qDebug() << "Unknown element in XML: " << elementName; } diff --git a/src/comm/PX4MockLink.params b/src/comm/PX4MockLink.params index 966d49968..5ecb10c23 100644 --- a/src/comm/PX4MockLink.params +++ b/src/comm/PX4MockLink.params @@ -507,7 +507,7 @@ 1 50 SENS_FLOW_ROT 0 6 1 50 SYS_AUTOCONFIG 0 6 1 50 SYS_AUTOSTART 10016 6 -1 50 SYS_COMPANION 0 6 +1 50 SYS_COMPANION 157600 6 1 50 SYS_RESTART_TYPE 0 6 1 50 SYS_USE_IO 1 6 1 50 TEST_D 0.01 9 -- 2.22.0