cabana: sort bus:id numerically instead of alphabetically (#26996)

* cabana: sort bus:id numerically instead of alphabetically

* Update tools/cabana/canmessages.h
pull/26981/head
Willem Melching 2 years ago committed by GitHub
parent ef89ec3eb0
commit e69e4f4052
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      tools/cabana/canmessages.cc
  2. 2
      tools/cabana/canmessages.h
  3. 4
      tools/cabana/messageswidget.cc

@ -64,6 +64,8 @@ bool CANMessages::eventFilter(const Event *event) {
QString id = QString("%1:%2").arg(c.getSrc()).arg(c.getAddress(), 1, 16); QString id = QString("%1:%2").arg(c.getSrc()).arg(c.getAddress(), 1, 16);
CanData &data = (*new_msgs)[id]; CanData &data = (*new_msgs)[id];
data.ts = current_sec; data.ts = current_sec;
data.src = c.getSrc();
data.address = c.getAddress();
data.dat = QByteArray((char *)c.getDat().begin(), c.getDat().size()); data.dat = QByteArray((char *)c.getDat().begin(), c.getDat().size());
data.count = ++counters[id]; data.count = ++counters[id];
if (double delta = (current_sec - counters_begin_sec); delta > 0) { if (double delta = (current_sec - counters_begin_sec); delta > 0) {

@ -11,6 +11,8 @@
struct CanData { struct CanData {
double ts = 0.; double ts = 0.;
uint8_t src = 0;
uint32_t address = 0;
uint32_t count = 0; uint32_t count = 0;
uint32_t freq = 0; uint32_t freq = 0;
QByteArray dat; QByteArray dat;

@ -102,7 +102,9 @@ void MessageListModel::sortMessages() {
}); });
} else if (sort_column == 1) { } else if (sort_column == 1) {
std::sort(msgs.begin(), msgs.end(), [this](auto &l, auto &r) { std::sort(msgs.begin(), msgs.end(), [this](auto &l, auto &r) {
return sort_order == Qt::AscendingOrder ? l < r : l > r; auto ll = std::tuple{can->lastMessage(l).src, can->lastMessage(l).address, l};
auto rr = std::tuple{can->lastMessage(r).src, can->lastMessage(r).address, r};
return sort_order == Qt::AscendingOrder ? ll < rr : ll > rr;
}); });
} else if (sort_column == 2) { } else if (sort_column == 2) {
std::sort(msgs.begin(), msgs.end(), [this](auto &l, auto &r) { std::sort(msgs.begin(), msgs.end(), [this](auto &l, auto &r) {

Loading…
Cancel
Save