Browse Source

Save params with 18 digit precision

QGC4.4
Don Gagne 9 years ago
parent
commit
d73f8642ee
  1. 22
      src/FactSystem/Fact.cc
  2. 5
      src/FactSystem/Fact.h
  3. 8
      src/FactSystem/ParameterLoader.cc

22
src/FactSystem/Fact.cc

@ -249,7 +249,7 @@ QVariantList Fact::bitmaskValues(void) const @@ -249,7 +249,7 @@ QVariantList Fact::bitmaskValues(void) const
}
}
QString Fact::_variantToString(const QVariant& variant) const
QString Fact::_variantToString(const QVariant& variant, int decimalPlaces) const
{
QString valueString;
@ -260,7 +260,7 @@ QString Fact::_variantToString(const QVariant& variant) const @@ -260,7 +260,7 @@ QString Fact::_variantToString(const QVariant& variant) const
if (qIsNaN(fValue)) {
valueString = QStringLiteral("--.--");
} else {
valueString = QString("%1").arg(fValue, 0, 'f', decimalPlaces());
valueString = QString("%1").arg(fValue, 0, 'f', decimalPlaces);
}
}
break;
@ -270,7 +270,7 @@ QString Fact::_variantToString(const QVariant& variant) const @@ -270,7 +270,7 @@ QString Fact::_variantToString(const QVariant& variant) const
if (qIsNaN(dValue)) {
valueString = QStringLiteral("--.--");
} else {
valueString = QString("%1").arg(dValue, 0, 'f', decimalPlaces());
valueString = QString("%1").arg(dValue, 0, 'f', decimalPlaces);
}
}
break;
@ -282,14 +282,20 @@ QString Fact::_variantToString(const QVariant& variant) const @@ -282,14 +282,20 @@ QString Fact::_variantToString(const QVariant& variant) const
return valueString;
}
QString Fact::rawValueStringFullPrecision(void) const
{
return _variantToString(rawValue(), 18);
}
QString Fact::rawValueString(void) const
{
return _variantToString(rawValue());
return _variantToString(rawValue(), decimalPlaces());
}
QString Fact::cookedValueString(void) const
{
return _variantToString(cookedValue());
return _variantToString(cookedValue(), decimalPlaces());
}
QVariant Fact::rawDefaultValue(void) const
@ -320,7 +326,7 @@ QVariant Fact::cookedDefaultValue(void) const @@ -320,7 +326,7 @@ QVariant Fact::cookedDefaultValue(void) const
QString Fact::cookedDefaultValueString(void) const
{
return _variantToString(cookedDefaultValue());
return _variantToString(cookedDefaultValue(), decimalPlaces());
}
FactMetaData::ValueType_t Fact::type(void) const
@ -390,7 +396,7 @@ QVariant Fact::cookedMin(void) const @@ -390,7 +396,7 @@ QVariant Fact::cookedMin(void) const
QString Fact::cookedMinString(void) const
{
return _variantToString(cookedMin());
return _variantToString(cookedMin(), decimalPlaces());
}
QVariant Fact::rawMax(void) const
@ -415,7 +421,7 @@ QVariant Fact::cookedMax(void) const @@ -415,7 +421,7 @@ QVariant Fact::cookedMax(void) const
QString Fact::cookedMaxString(void) const
{
return _variantToString(cookedMax());
return _variantToString(cookedMax(), decimalPlaces());
}
bool Fact::minIsDefaultForType(void) const

5
src/FactSystem/Fact.h

@ -116,6 +116,9 @@ public: @@ -116,6 +116,9 @@ public:
QString enumOrValueString (void); // This is not const, since an unknown value can modify the enum lists
double increment (void) const;
/// Returns the values as a string with full 18 digit precision if float/double.
QString rawValueStringFullPrecision(void) const;
void setRawValue (const QVariant& value);
void setCookedValue (const QVariant& value);
void setEnumIndex (int index);
@ -165,7 +168,7 @@ signals: @@ -165,7 +168,7 @@ signals:
void _containerRawValueChanged(const QVariant& value);
protected:
QString _variantToString(const QVariant& variant) const;
QString _variantToString(const QVariant& variant, int decimalPlaces) const;
void _sendValueChangedSignal(QVariant value);
QString _name;

8
src/FactSystem/ParameterLoader.cc

@ -735,9 +735,11 @@ void ParameterLoader::writeParametersToStream(QTextStream &stream) @@ -735,9 +735,11 @@ void ParameterLoader::writeParametersToStream(QTextStream &stream)
foreach (int componentId, _mapParameterName2Variant.keys()) {
foreach (const QString &paramName, _mapParameterName2Variant[componentId].keys()) {
Fact* fact = _mapParameterName2Variant[componentId][paramName].value<Fact*>();
Q_ASSERT(fact);
stream << _vehicle->id() << "\t" << componentId << "\t" << paramName << "\t" << fact->rawValueString() << "\t" << QString("%1").arg(_factTypeToMavType(fact->type())) << "\n";
if (fact) {
stream << _vehicle->id() << "\t" << componentId << "\t" << paramName << "\t" << fact->rawValueStringFullPrecision() << "\t" << QString("%1").arg(_factTypeToMavType(fact->type())) << "\n";
} else {
qWarning() << "Internal error: missing fact";
}
}
}

Loading…
Cancel
Save