mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-02-22 07:13:54 +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
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_;
|
|
};
|