You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					56 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					56 lines
				
				1.5 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								#pragma once
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <map>
							 | 
						||
| 
								 | 
							
								#include <QList>
							 | 
						||
| 
								 | 
							
								#include <QMetaType>
							 | 
						||
| 
								 | 
							
								#include <QObject>
							 | 
						||
| 
								 | 
							
								#include <QString>
							 | 
						||
| 
								 | 
							
								#include <QSet>
							 | 
						||
| 
								 | 
							
								#include <QDebug>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 
											3 years ago
										 
									 | 
							
								#include "tools/cabana/dbc/dbc.h"
							 | 
						||
| 
								 
											3 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								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() {}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  void open(const QString &content);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  bool save();
							 | 
						||
| 
								 | 
							
								  bool saveAs(const QString &new_filename);
							 | 
						||
| 
								 | 
							
								  bool autoSave();
							 | 
						||
| 
								 | 
							
								  bool writeContents(const QString &fn);
							 | 
						||
| 
								 | 
							
								  void cleanupAutoSaveFile();
							 | 
						||
| 
								 | 
							
								  QString generateDBC();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  cabana::Signal *addSignal(const MessageId &id, const cabana::Signal &sig);
							 | 
						||
| 
								 | 
							
								  cabana::Signal *updateSignal(const MessageId &id, const QString &sig_name, const cabana::Signal &sig);
							 | 
						||
| 
								 | 
							
								  cabana::Signal *getSignal(const MessageId &id, const QString &sig_name);
							 | 
						||
| 
								 | 
							
								  void removeSignal(const MessageId &id, const QString &sig_name);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  void updateMsg(const MessageId &id, const QString &name, uint32_t size);
							 | 
						||
| 
								 | 
							
								  void removeMsg(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;
							 | 
						||
| 
								 | 
							
								  const cabana::Msg* msg(const QString &name);
							 | 
						||
| 
								 | 
							
								  QStringList signalNames() const;
							 | 
						||
| 
								 | 
							
								  int msgCount() const;
							 | 
						||
| 
								 | 
							
								  QString name() const;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  QString filename;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								private:
							 | 
						||
| 
								 | 
							
								  void parseExtraInfo(const QString &content);
							 | 
						||
| 
								 | 
							
								  std::map<uint32_t, cabana::Msg> msgs;
							 | 
						||
| 
								 | 
							
								  QString name_;
							 | 
						||
| 
								 | 
							
								};
							 |