Commit b8e9fe47 authored by Don Gagne's avatar Don Gagne

Add Reboot Required fact meta data

parent 621e754b
...@@ -482,3 +482,13 @@ QString Fact::validate(const QString& cookedValue, bool convertOnly) ...@@ -482,3 +482,13 @@ QString Fact::validate(const QString& cookedValue, bool convertOnly)
return QString("Internal error: Meta data pointer missing"); return QString("Internal error: Meta data pointer missing");
} }
} }
bool Fact::rebootRequired(void) const
{
if (_metaData) {
return _metaData->rebootRequired();
} else {
qWarning() << "Meta data pointer missing";
return false;
}
}
...@@ -66,6 +66,7 @@ public: ...@@ -66,6 +66,7 @@ public:
Q_PROPERTY(QString minString READ cookedMinString CONSTANT) Q_PROPERTY(QString minString READ cookedMinString CONSTANT)
Q_PROPERTY(bool minIsDefaultForType READ minIsDefaultForType CONSTANT) Q_PROPERTY(bool minIsDefaultForType READ minIsDefaultForType CONSTANT)
Q_PROPERTY(QString name READ name CONSTANT) Q_PROPERTY(QString name READ name CONSTANT)
Q_PROPERTY(bool rebootRequired READ rebootRequired CONSTANT)
Q_PROPERTY(QString shortDescription READ shortDescription CONSTANT) Q_PROPERTY(QString shortDescription READ shortDescription CONSTANT)
Q_PROPERTY(FactMetaData::ValueType_t type READ type CONSTANT) Q_PROPERTY(FactMetaData::ValueType_t type READ type CONSTANT)
Q_PROPERTY(QString units READ cookedUnits CONSTANT) Q_PROPERTY(QString units READ cookedUnits CONSTANT)
...@@ -109,6 +110,7 @@ public: ...@@ -109,6 +110,7 @@ public:
QString rawValueString (void) const; QString rawValueString (void) const;
QString cookedValueString (void) const; QString cookedValueString (void) const;
bool valueEqualsDefault (void) const; bool valueEqualsDefault (void) const;
bool rebootRequired (void) const;
void setRawValue (const QVariant& value); void setRawValue (const QVariant& value);
void setCookedValue (const QVariant& value); void setCookedValue (const QVariant& value);
......
...@@ -51,6 +51,7 @@ FactMetaData::FactMetaData(QObject* parent) ...@@ -51,6 +51,7 @@ FactMetaData::FactMetaData(QObject* parent)
, _minIsDefaultForType(true) , _minIsDefaultForType(true)
, _rawTranslator(_defaultTranslator) , _rawTranslator(_defaultTranslator)
, _cookedTranslator(_defaultTranslator) , _cookedTranslator(_defaultTranslator)
, _rebootRequired(false)
{ {
} }
...@@ -68,6 +69,7 @@ FactMetaData::FactMetaData(ValueType_t type, QObject* parent) ...@@ -68,6 +69,7 @@ FactMetaData::FactMetaData(ValueType_t type, QObject* parent)
, _minIsDefaultForType(true) , _minIsDefaultForType(true)
, _rawTranslator(_defaultTranslator) , _rawTranslator(_defaultTranslator)
, _cookedTranslator(_defaultTranslator) , _cookedTranslator(_defaultTranslator)
, _rebootRequired(false)
{ {
} }
...@@ -100,6 +102,7 @@ const FactMetaData& FactMetaData::operator=(const FactMetaData& other) ...@@ -100,6 +102,7 @@ const FactMetaData& FactMetaData::operator=(const FactMetaData& other)
_cookedUnits = other._cookedUnits; _cookedUnits = other._cookedUnits;
_rawTranslator = other._rawTranslator; _rawTranslator = other._rawTranslator;
_cookedTranslator = other._cookedTranslator; _cookedTranslator = other._cookedTranslator;
_rebootRequired = other._rebootRequired;
return *this; return *this;
} }
......
...@@ -81,6 +81,7 @@ public: ...@@ -81,6 +81,7 @@ public:
ValueType_t type (void) const { return _type; } ValueType_t type (void) const { return _type; }
QString rawUnits (void) const { return _rawUnits; } QString rawUnits (void) const { return _rawUnits; }
QString cookedUnits (void) const { return _cookedUnits; } QString cookedUnits (void) const { return _cookedUnits; }
bool rebootRequired (void) const { return _rebootRequired; }
Translator rawTranslator (void) const { return _rawTranslator; } Translator rawTranslator (void) const { return _rawTranslator; }
Translator cookedTranslator (void) const { return _cookedTranslator; } Translator cookedTranslator (void) const { return _cookedTranslator; }
...@@ -102,6 +103,7 @@ public: ...@@ -102,6 +103,7 @@ public:
void setName (const QString& name) { _name = name; } void setName (const QString& name) { _name = name; }
void setShortDescription(const QString& shortDescription) { _shortDescription = shortDescription; } void setShortDescription(const QString& shortDescription) { _shortDescription = shortDescription; }
void setRawUnits (const QString& rawUnits); void setRawUnits (const QString& rawUnits);
void setRebootRequired (bool rebootRequired) { _rebootRequired = rebootRequired; }
void setTranslators(Translator rawTranslator, Translator cookedTranslator); void setTranslators(Translator rawTranslator, Translator cookedTranslator);
...@@ -150,6 +152,7 @@ private: ...@@ -150,6 +152,7 @@ private:
QString _cookedUnits; QString _cookedUnits;
Translator _rawTranslator; Translator _rawTranslator;
Translator _cookedTranslator; Translator _cookedTranslator;
bool _rebootRequired;
struct BuiltInTranslation_s { struct BuiltInTranslation_s {
const char* rawUnits; const char* rawUnits;
......
...@@ -295,6 +295,10 @@ void ParameterLoader::_valueUpdated(const QVariant& value) ...@@ -295,6 +295,10 @@ void ParameterLoader::_valueUpdated(const QVariant& value)
_writeParameterRaw(componentId, fact->name(), value); _writeParameterRaw(componentId, fact->name(), value);
qCDebug(ParameterLoaderLog) << "Set parameter (componentId:" << componentId << "name:" << name << value << ")"; qCDebug(ParameterLoaderLog) << "Set parameter (componentId:" << componentId << "name:" << name << value << ")";
if (fact->rebootRequired()) {
qgcApp()->showMessage(QStringLiteral("Change of parameter %1 requires a Vehicle reboot to take affect").arg(name));
}
} }
void ParameterLoader::refreshAllParameters(void) void ParameterLoader::refreshAllParameters(void)
......
...@@ -342,6 +342,7 @@ bool APMParameterMetaData::parseParameterAttributes(QXmlStreamReader& xml, APMFa ...@@ -342,6 +342,7 @@ bool APMParameterMetaData::parseParameterAttributes(QXmlStreamReader& xml, APMFa
// skip empty elements. Somehow I am getting lot of these. Dont know what to do with them. // skip empty elements. Somehow I am getting lot of these. Dont know what to do with them.
} else if (elementName == "field") { } else if (elementName == "field") {
QString attributeName = xml.attributes().value("name").toString(); QString attributeName = xml.attributes().value("name").toString();
if ( attributeName == "Range") { if ( attributeName == "Range") {
QString range = xml.readElementText().trimmed(); QString range = xml.readElementText().trimmed();
QStringList rangeList = range.split(' '); QStringList rangeList = range.split(' ');
...@@ -402,6 +403,11 @@ bool APMParameterMetaData::parseParameterAttributes(QXmlStreamReader& xml, APMFa ...@@ -402,6 +403,11 @@ bool APMParameterMetaData::parseParameterAttributes(QXmlStreamReader& xml, APMFa
if (parseError) { if (parseError) {
rawMetaData->bitmask.clear(); rawMetaData->bitmask.clear();
} }
} else if (attributeName == "RebootRequired") {
QString strValue = xml.readElementText().trimmed();
if (strValue.compare("true", Qt::CaseInsensitive) == 0) {
rawMetaData->rebootRequired = true;
}
} }
} else if (elementName == "values") { } else if (elementName == "values") {
// doing nothing individual value will follow anyway. May be used for sanity checking. // doing nothing individual value will follow anyway. May be used for sanity checking.
...@@ -447,6 +453,7 @@ void APMParameterMetaData::addMetaDataToFact(Fact* fact, MAV_TYPE vehicleType) ...@@ -447,6 +453,7 @@ void APMParameterMetaData::addMetaDataToFact(Fact* fact, MAV_TYPE vehicleType)
metaData->setName(rawMetaData->name); metaData->setName(rawMetaData->name);
metaData->setGroup(rawMetaData->group); metaData->setGroup(rawMetaData->group);
metaData->setRebootRequired(rawMetaData->rebootRequired);
if (!rawMetaData->shortDescription.isEmpty()) { if (!rawMetaData->shortDescription.isEmpty()) {
metaData->setShortDescription(rawMetaData->shortDescription); metaData->setShortDescription(rawMetaData->shortDescription);
......
...@@ -37,14 +37,19 @@ ...@@ -37,14 +37,19 @@
class APMFactMetaDataRaw class APMFactMetaDataRaw
{ {
public: public:
QString name; APMFactMetaDataRaw(void)
QString group; : rebootRequired(false)
QString shortDescription; { }
QString longDescription;
QString min; QString name;
QString max; QString group;
QString incrementSize; QString shortDescription;
QString units; QString longDescription;
QString min;
QString max;
QString incrementSize;
QString units;
bool rebootRequired;
QList<QPair<QString, QString> > values; QList<QPair<QString, QString> > values;
QList<QPair<QString, QString> > bitmask; QList<QPair<QString, QString> > bitmask;
}; };
......
...@@ -312,6 +312,14 @@ void PX4ParameterMetaData::_loadParameterFactMetaData(void) ...@@ -312,6 +312,14 @@ void PX4ParameterMetaData::_loadParameterFactMetaData(void)
qCWarning(PX4ParameterMetaDataLog) << "Invalid decimals value, name:" << metaData->name() << " type:" << metaData->type() << " decimals:" << text << " error: invalid number"; qCWarning(PX4ParameterMetaDataLog) << "Invalid decimals value, name:" << metaData->name() << " type:" << metaData->type() << " decimals:" << text << " error: invalid number";
} }
} else if (elementName == "reboot_required") {
Q_ASSERT(metaData);
QString text = xml.readElementText();
qCDebug(PX4ParameterMetaDataLog) << "RebootRequired:" << text;
if (text.compare("true", Qt::CaseInsensitive) == 0) {
metaData->setRebootRequired(true);
}
} else { } else {
qDebug() << "Unknown element in XML: " << elementName; qDebug() << "Unknown element in XML: " << elementName;
} }
......
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