From c62b6478a04c97b4a5a653c7f934022e62077801 Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Wed, 19 Oct 2022 23:02:47 +0800 Subject: [PATCH] Cabana: warn when DBC message length is wrong (#26154) display warning if message size is incorrect old-commit-hash: a927d7b0ea25d1fde6a121888f8abd34e2fef867 --- tools/cabana/detailwidget.cc | 16 ++++++++++++++++ tools/cabana/detailwidget.h | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/tools/cabana/detailwidget.cc b/tools/cabana/detailwidget.cc index 60d0632d4c..a92969d4d3 100644 --- a/tools/cabana/detailwidget.cc +++ b/tools/cabana/detailwidget.cc @@ -29,6 +29,17 @@ DetailWidget::DetailWidget(QWidget *parent) : QWidget(parent) { title_layout->addWidget(edit_btn); main_layout->addLayout(title_layout); + // warning + warning_widget = new QWidget(this); + QHBoxLayout *warning_hlayout = new QHBoxLayout(warning_widget); + QLabel *warning_icon = new QLabel(this); + warning_icon->setPixmap(style()->standardIcon(QStyle::SP_MessageBoxWarning).pixmap({16, 16})); + warning_hlayout->addWidget(warning_icon); + warning_label = new QLabel(this); + warning_hlayout->addWidget(warning_label,1, Qt::AlignLeft); + warning_widget->hide(); + main_layout->addWidget(warning_widget); + // binary view binary_view = new BinaryView(this); main_layout->addWidget(binary_view, 0, Qt::AlignTop); @@ -64,6 +75,7 @@ void DetailWidget::setMessage(const QString &message_id) { void DetailWidget::dbcMsgChanged() { if (msg_id.isEmpty()) return; + warning_widget->hide(); qDeleteAll(signals_container->findChildren()); QString msg_name = tr("untitled"); if (auto msg = dbc()->msg(msg_id)) { @@ -76,6 +88,10 @@ void DetailWidget::dbcMsgChanged() { QObject::connect(form, &SignalEdit::save, this, &DetailWidget::saveSignal); } msg_name = msg->name.c_str(); + if (msg->size != can->lastMessage(msg_id).dat.size()) { + warning_label->setText(tr("Message size (%1) is incorrect!").arg(msg->size)); + warning_widget->show(); + } } edit_btn->setVisible(true); name_label->setText(msg_name); diff --git a/tools/cabana/detailwidget.h b/tools/cabana/detailwidget.h index 9d3b81dcb0..07c78caa4a 100644 --- a/tools/cabana/detailwidget.h +++ b/tools/cabana/detailwidget.h @@ -46,7 +46,8 @@ private: void updateState(); QString msg_id; - QLabel *name_label, *time_label; + QLabel *name_label, *time_label, *warning_label; + QWidget *warning_widget; QPushButton *edit_btn; QWidget *signals_container; HistoryLog *history_log;