cabana: use double for minimum value & maximum value (#28252)

pull/28253/head
Dean Lee 2 years ago committed by GitHub
parent dee611a9bc
commit 36dd49e542
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      tools/cabana/dbc/dbc.h
  2. 8
      tools/cabana/dbc/dbcfile.cc
  3. 10
      tools/cabana/signalview.cc

@ -51,7 +51,8 @@ namespace cabana {
bool is_signed; bool is_signed;
double factor, offset; double factor, offset;
bool is_little_endian; bool is_little_endian;
QString min, max, unit; double min, max;
QString unit;
QString comment; QString comment;
ValueDescription val_desc; ValueDescription val_desc;
int precision = 0; int precision = 0;

@ -217,8 +217,8 @@ void DBCFile::parseExtraInfo(const QString &content) {
} }
if (match.hasMatch()) { if (match.hasMatch()) {
if (auto s = get_sig(address, match.captured(1))) { if (auto s = get_sig(address, match.captured(1))) {
s->min = match.captured(8 + offset); s->min = match.captured(8 + offset).toDouble();
s->max = match.captured(9 + offset); s->max = match.captured(9 + offset).toDouble();
s->unit = match.captured(10 + offset); s->unit = match.captured(10 + offset);
} }
} }
@ -258,8 +258,8 @@ QString DBCFile::generateDBC() {
.arg(sig->is_signed ? '-' : '+') .arg(sig->is_signed ? '-' : '+')
.arg(doubleToString(sig->factor)) .arg(doubleToString(sig->factor))
.arg(doubleToString(sig->offset)) .arg(doubleToString(sig->offset))
.arg(sig->min) .arg(doubleToString(sig->min))
.arg(sig->max) .arg(doubleToString(sig->max))
.arg(sig->unit); .arg(sig->unit);
if (!sig->comment.isEmpty()) { if (!sig->comment.isEmpty()) {
signal_comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment); signal_comment += QString("CM_ SG_ %1 %2 \"%3\";\n").arg(address).arg(sig->name).arg(sig->comment);

@ -128,8 +128,8 @@ QVariant SignalModel::data(const QModelIndex &index, int role) const {
case Item::Factor: return doubleToString(item->sig->factor); case Item::Factor: return doubleToString(item->sig->factor);
case Item::Unit: return item->sig->unit; case Item::Unit: return item->sig->unit;
case Item::Comment: return item->sig->comment; case Item::Comment: return item->sig->comment;
case Item::Min: return item->sig->min; case Item::Min: return doubleToString(item->sig->min);
case Item::Max: return item->sig->max; case Item::Max: return doubleToString(item->sig->max);
case Item::Desc: { case Item::Desc: {
QStringList val_desc; QStringList val_desc;
for (auto &[val, desc] : item->sig->val_desc) { for (auto &[val, desc] : item->sig->val_desc) {
@ -166,8 +166,8 @@ bool SignalModel::setData(const QModelIndex &index, const QVariant &value, int r
case Item::Factor: s.factor = value.toDouble(); break; case Item::Factor: s.factor = value.toDouble(); break;
case Item::Unit: s.unit = value.toString(); break; case Item::Unit: s.unit = value.toString(); break;
case Item::Comment: s.comment = value.toString(); break; case Item::Comment: s.comment = value.toString(); break;
case Item::Min: s.min = value.toString(); break; case Item::Min: s.min = value.toDouble(); break;
case Item::Max: s.max = value.toString(); break; case Item::Max: s.max = value.toDouble(); break;
case Item::Desc: s.val_desc = value.value<ValueDescription>(); break; case Item::Desc: s.val_desc = value.value<ValueDescription>(); break;
default: return false; default: return false;
} }
@ -230,7 +230,7 @@ void SignalModel::addSignal(int start_bit, int size, bool little_endian) {
msg = dbc()->msg(msg_id); msg = dbc()->msg(msg_id);
} }
cabana::Signal sig = {.name = dbc()->newSignalName(msg_id), .is_little_endian = little_endian, .factor = 1, .min = "0", .max = QString::number(std::pow(2, size) - 1)}; cabana::Signal sig = {.name = dbc()->newSignalName(msg_id), .is_little_endian = little_endian, .factor = 1, .min = 0, .max = std::pow(2, size) - 1};
updateSigSizeParamsFromRange(sig, start_bit, size); updateSigSizeParamsFromRange(sig, start_bit, size);
UndoStack::push(new AddSigCommand(msg_id, sig)); UndoStack::push(new AddSigCommand(msg_id, sig));
} }

Loading…
Cancel
Save