cabana: refactor new msg/signal name generation (#27931)

old-commit-hash: 1016c3f97c
beeps
Willem Melching 2 years ago committed by GitHub
parent 484eed0acf
commit 23d52ccd2d
  1. 18
      tools/cabana/dbc/dbcfile.cc
  2. 3
      tools/cabana/dbc/dbcfile.h
  3. 14
      tools/cabana/dbc/dbcmanager.cc
  4. 3
      tools/cabana/dbc/dbcmanager.h
  5. 17
      tools/cabana/signalview.cc

@ -149,6 +149,24 @@ void DBCFile::removeMsg(const MessageId &id) {
msgs.erase(id.address);
}
QString DBCFile::newMsgName(const MessageId &id) {
return QString("NEW_MSG_") + QString::number(id.address, 16).toUpper();
}
QString DBCFile::newSignalName(const MessageId &id) {
auto m = msg(id);
assert(m != nullptr);
QString name;
for (int i = 1; /**/; ++i) {
name = QString("NEW_SIGNAL_%1").arg(i);
if (m->sig(name) == nullptr) break;
}
return name;
}
std::map<uint32_t, cabana::Msg> DBCFile::getMessages() {
return msgs;
}

@ -38,6 +38,9 @@ public:
void updateMsg(const MessageId &id, const QString &name, uint32_t size);
void removeMsg(const MessageId &id);
QString newMsgName(const MessageId &id);
QString newSignalName(const MessageId &id);
std::map<uint32_t, cabana::Msg> getMessages();
const cabana::Msg *msg(const MessageId &id) const;
const cabana::Msg *msg(uint32_t address) const;

@ -133,6 +133,20 @@ void DBCManager::removeMsg(const MessageId &id) {
}
}
QString DBCManager::newMsgName(const MessageId &id) {
auto sources_dbc_file = findDBCFile(id);
assert(sources_dbc_file); // This should be impossible
auto [_, dbc_file] = *sources_dbc_file;
return dbc_file->newMsgName(id);
}
QString DBCManager::newSignalName(const MessageId &id) {
auto sources_dbc_file = findDBCFile(id);
assert(sources_dbc_file); // This should be impossible
auto [_, dbc_file] = *sources_dbc_file;
return dbc_file->newSignalName(id);
}
std::map<MessageId, cabana::Msg> DBCManager::getMessages(uint8_t source) {
std::map<MessageId, cabana::Msg> ret;

@ -33,6 +33,9 @@ public:
void updateMsg(const MessageId &id, const QString &name, uint32_t size);
void removeMsg(const MessageId &id);
QString newMsgName(const MessageId &id);
QString newSignalName(const MessageId &id);
std::map<MessageId, cabana::Msg> getMessages(uint8_t source);
const cabana::Msg *msg(const MessageId &id) const;
const cabana::Msg* msg(uint8_t source, const QString &name);

@ -8,6 +8,7 @@
#include <QHelpEvent>
#include <QMessageBox>
#include <QPainter>
#include <QPainterPath>
#include <QPushButton>
#include <QScrollBar>
#include <QtConcurrent>
@ -223,19 +224,13 @@ bool SignalModel::saveSignal(const cabana::Signal *origin_s, cabana::Signal &s)
void SignalModel::addSignal(int start_bit, int size, bool little_endian) {
auto msg = dbc()->msg(msg_id);
for (int i = 0; !msg; ++i) {
QString name = QString("NEW_MSG_") + QString::number(msg_id.address, 16).toUpper();
if (!dbc()->msg(msg_id.source, name)) {
UndoStack::push(new EditMsgCommand(msg_id, name, can->lastMessage(msg_id).dat.size()));
msg = dbc()->msg(msg_id);
}
if (!msg) {
QString name = dbc()->newMsgName(msg_id);
UndoStack::push(new EditMsgCommand(msg_id, name, can->lastMessage(msg_id).dat.size()));
msg = dbc()->msg(msg_id);
}
cabana::Signal sig = {.is_little_endian = little_endian, .factor = 1, .min = "0", .max = QString::number(std::pow(2, size) - 1)};
for (int i = 1; /**/; ++i) {
sig.name = QString("NEW_SIGNAL_%1").arg(i);
if (msg->sig(sig.name) == nullptr) break;
}
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)};
updateSigSizeParamsFromRange(sig, start_bit, size);
UndoStack::push(new AddSigCommand(msg_id, sig));
}

Loading…
Cancel
Save