mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-18 22:23:56 +08:00
cabana: refactor new msg/signal name generation (#27931)
old-commit-hash: 1016c3f97c
This commit is contained in:
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user