mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-26 07:53:55 +08:00
* support muxed signals
* write multiplexor in generateDBC
* edit multiplex_switch_value in signalView
* no overlapping warning for mux signals
* group signals by multiplexer indicator
* display freq for each multiplexed signals
* remove all multiplexed signals after switch deleted
* disable switch value
* cleanup
* historyView: use getValue
* sort by switch value
* check address
* rename variables
* rename signale type
* parse multiplexed signals in dbcmanater
* cache signal color in member variable
* cleanup num_decimals
* remove sources from dbcmanager and cleanup code
* fix sort
* check mltiplex in operator==
* fix sizehint
* convert multipledxed to normal after changing multiplxor to normal
* throw error on multiple 'M' signals
* add comment
* parse multipled signals in test case
* cleanup
* change order
* cleanup open
* display multiplexed/overlapping signals in binaryview
* sort overlapped signals by size
* refactor dbcmanager
* trimmed
* parse multiplexed signals in test case
* cleanup
* merge master
* space
* use pointer for sigs
* alldbcFiles
* cleanup
* cleanup sparkline
* use std::vector
* skip draw sparkline if isnull
* bigger capacity
old-commit-hash: e08569b0f3
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <map>
|
|
#include <QObject>
|
|
|
|
#include "tools/cabana/dbc/dbc.h"
|
|
|
|
const QString AUTO_SAVE_EXTENSION = ".tmp";
|
|
|
|
class DBCFile : public QObject {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
DBCFile(const QString &dbc_file_name, QObject *parent=nullptr);
|
|
DBCFile(const QString &name, const QString &content, QObject *parent=nullptr);
|
|
~DBCFile() {}
|
|
|
|
bool save();
|
|
bool saveAs(const QString &new_filename);
|
|
bool autoSave();
|
|
bool writeContents(const QString &fn);
|
|
void cleanupAutoSaveFile();
|
|
QString generateDBC();
|
|
|
|
void updateMsg(const MessageId &id, const QString &name, uint32_t size, const QString &comment);
|
|
inline void removeMsg(const MessageId &id) { msgs.erase(id.address); }
|
|
|
|
inline const std::map<uint32_t, cabana::Msg> &getMessages() const { return msgs; }
|
|
cabana::Msg *msg(uint32_t address);
|
|
cabana::Msg *msg(const QString &name);
|
|
inline cabana::Msg *msg(const MessageId &id) { return msg(id.address); }
|
|
|
|
int signalCount();
|
|
inline int msgCount() { return msgs.size(); }
|
|
inline QString name() { return name_.isEmpty() ? "untitled" : name_; }
|
|
inline bool isEmpty() { return (signalCount() == 0) && name_.isEmpty(); }
|
|
|
|
QString filename;
|
|
|
|
private:
|
|
void parse(const QString &content);
|
|
std::map<uint32_t, cabana::Msg> msgs;
|
|
QString name_;
|
|
};
|