Commit a8fa3ebc authored by Don Gagne's avatar Don Gagne

Merge pull request #2964 from DonLakeFlyer/ParamSave

Save params with 18 digit precision
parents 657c11d9 d73f8642
...@@ -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; 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)) { if (qIsNaN(fValue)) {
valueString = QStringLiteral("--.--"); valueString = QStringLiteral("--.--");
} else { } else {
valueString = QString("%1").arg(fValue, 0, 'f', decimalPlaces()); valueString = QString("%1").arg(fValue, 0, 'f', decimalPlaces);
} }
} }
break; 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)) { if (qIsNaN(dValue)) {
valueString = QStringLiteral("--.--"); valueString = QStringLiteral("--.--");
} else { } else {
valueString = QString("%1").arg(dValue, 0, 'f', decimalPlaces()); valueString = QString("%1").arg(dValue, 0, 'f', decimalPlaces);
} }
} }
break; 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; return valueString;
} }
QString Fact::rawValueStringFullPrecision(void) const
{
return _variantToString(rawValue(), 18);
}
QString Fact::rawValueString(void) const QString Fact::rawValueString(void) const
{ {
return _variantToString(rawValue()); return _variantToString(rawValue(), decimalPlaces());
} }
QString Fact::cookedValueString(void) const QString Fact::cookedValueString(void) const
{ {
return _variantToString(cookedValue()); return _variantToString(cookedValue(), decimalPlaces());
} }
QVariant Fact::rawDefaultValue(void) const 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 QString Fact::cookedDefaultValueString(void) const
{ {
return _variantToString(cookedDefaultValue()); return _variantToString(cookedDefaultValue(), decimalPlaces());
} }
FactMetaData::ValueType_t Fact::type(void) const 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 QString Fact::cookedMinString(void) const
{ {
return _variantToString(cookedMin()); return _variantToString(cookedMin(), decimalPlaces());
} }
QVariant Fact::rawMax(void) const 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 QString Fact::cookedMaxString(void) const
{ {
return _variantToString(cookedMax()); return _variantToString(cookedMax(), decimalPlaces());
} }
bool Fact::minIsDefaultForType(void) const bool Fact::minIsDefaultForType(void) const
......
...@@ -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 QString enumOrValueString (void); // This is not const, since an unknown value can modify the enum lists
double increment (void) const; 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 setRawValue (const QVariant& value);
void setCookedValue (const QVariant& value); void setCookedValue (const QVariant& value);
void setEnumIndex (int index); void setEnumIndex (int index);
...@@ -165,7 +168,7 @@ signals: ...@@ -165,7 +168,7 @@ signals:
void _containerRawValueChanged(const QVariant& value); void _containerRawValueChanged(const QVariant& value);
protected: protected:
QString _variantToString(const QVariant& variant) const; QString _variantToString(const QVariant& variant, int decimalPlaces) const;
void _sendValueChangedSignal(QVariant value); void _sendValueChangedSignal(QVariant value);
QString _name; QString _name;
......
...@@ -735,9 +735,11 @@ void ParameterLoader::writeParametersToStream(QTextStream &stream) ...@@ -735,9 +735,11 @@ void ParameterLoader::writeParametersToStream(QTextStream &stream)
foreach (int componentId, _mapParameterName2Variant.keys()) { foreach (int componentId, _mapParameterName2Variant.keys()) {
foreach (const QString &paramName, _mapParameterName2Variant[componentId].keys()) { foreach (const QString &paramName, _mapParameterName2Variant[componentId].keys()) {
Fact* fact = _mapParameterName2Variant[componentId][paramName].value<Fact*>(); Fact* fact = _mapParameterName2Variant[componentId][paramName].value<Fact*>();
Q_ASSERT(fact); if (fact) {
stream << _vehicle->id() << "\t" << componentId << "\t" << paramName << "\t" << fact->rawValueStringFullPrecision() << "\t" << QString("%1").arg(_factTypeToMavType(fact->type())) << "\n";
stream << _vehicle->id() << "\t" << componentId << "\t" << paramName << "\t" << fact->rawValueString() << "\t" << QString("%1").arg(_factTypeToMavType(fact->type())) << "\n"; } else {
qWarning() << "Internal error: missing fact";
}
} }
} }
......
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