diff options
Diffstat (limited to 'utils/regtools/qeditor/backend.h')
-rw-r--r-- | utils/regtools/qeditor/backend.h | 79 |
1 files changed, 56 insertions, 23 deletions
diff --git a/utils/regtools/qeditor/backend.h b/utils/regtools/qeditor/backend.h index 939ed9529f..a813f5929f 100644 --- a/utils/regtools/qeditor/backend.h +++ b/utils/regtools/qeditor/backend.h | |||
@@ -5,10 +5,11 @@ | |||
5 | #include <QStringList> | 5 | #include <QStringList> |
6 | #include <QMap> | 6 | #include <QMap> |
7 | #include <QVector> | 7 | #include <QVector> |
8 | #include "soc_desc.hpp" | 8 | #include <QMetaType> |
9 | #ifdef HAVE_HWSTUB | 9 | #ifdef HAVE_HWSTUB |
10 | #include "hwstub.h" | 10 | #include "hwstub.h" |
11 | #endif | 11 | #endif |
12 | #include "soc.h" | ||
12 | 13 | ||
13 | class IoBackend : public QObject | 14 | class IoBackend : public QObject |
14 | { | 15 | { |
@@ -62,18 +63,18 @@ class DummyIoBackend : public IoBackend | |||
62 | public: | 63 | public: |
63 | DummyIoBackend() {} | 64 | DummyIoBackend() {} |
64 | 65 | ||
65 | virtual bool SupportAccess(AccessType type) { (void) type; return false; } | 66 | virtual bool SupportAccess(AccessType type) { Q_UNUSED(type); return false; } |
66 | virtual QString GetSocName() { return ""; } | 67 | virtual QString GetSocName() { return ""; } |
67 | virtual bool ReadRegister(const QString& name, soc_word_t& value) | 68 | virtual bool ReadRegister(const QString& name, soc_word_t& value) |
68 | { (void) name; (void) value; return false; } | 69 | { Q_UNUSED(name); Q_UNUSED(value); return false; } |
69 | virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value) | 70 | virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value) |
70 | { (void) addr; (void) value; return false; } | 71 | { Q_UNUSED(addr); Q_UNUSED(value); return false; } |
71 | virtual bool Reload() { return false; } | 72 | virtual bool Reload() { return false; } |
72 | virtual bool IsReadOnly() { return true; } | 73 | virtual bool IsReadOnly() { return true; } |
73 | virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode) | 74 | virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode) |
74 | { (void) name; (void) value; (void) mode; return false; } | 75 | { Q_UNUSED(name); Q_UNUSED(value); Q_UNUSED(mode); return false; } |
75 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode) | 76 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode) |
76 | { (void) addr; (void) value; (void) mode; return false; } | 77 | { Q_UNUSED(addr); Q_UNUSED(value); Q_UNUSED(mode); return false; } |
77 | virtual bool IsDirty() { return false; } | 78 | virtual bool IsDirty() { return false; } |
78 | virtual bool Commit() { return false; } | 79 | virtual bool Commit() { return false; } |
79 | }; | 80 | }; |
@@ -90,12 +91,12 @@ public: | |||
90 | virtual QString GetSocName(); | 91 | virtual QString GetSocName(); |
91 | virtual bool ReadRegister(const QString& name, soc_word_t& value); | 92 | virtual bool ReadRegister(const QString& name, soc_word_t& value); |
92 | virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value) | 93 | virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value) |
93 | { (void) addr; (void) value; return false; } | 94 | { Q_UNUSED(addr); Q_UNUSED(value); return false; } |
94 | virtual bool Reload(); | 95 | virtual bool Reload(); |
95 | virtual bool IsReadOnly() { return m_readonly; } | 96 | virtual bool IsReadOnly() { return m_readonly; } |
96 | virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode); | 97 | virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode); |
97 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode) | 98 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode) |
98 | { (void) addr; (void) value; (void) mode; return false; } | 99 | { Q_UNUSED(addr); Q_UNUSED(value); Q_UNUSED(mode); return false; } |
99 | virtual bool IsDirty() { return m_dirty; } | 100 | virtual bool IsDirty() { return m_dirty; } |
100 | virtual bool Commit(); | 101 | virtual bool Commit(); |
101 | 102 | ||
@@ -149,12 +150,12 @@ public: | |||
149 | virtual bool SupportAccess(AccessType type) { return type == ByAddress; } | 150 | virtual bool SupportAccess(AccessType type) { return type == ByAddress; } |
150 | virtual QString GetSocName(); | 151 | virtual QString GetSocName(); |
151 | virtual bool ReadRegister(const QString& name, soc_word_t& value) | 152 | virtual bool ReadRegister(const QString& name, soc_word_t& value) |
152 | { (void) name; (void) value; return false; } | 153 | { Q_UNUSED(name); Q_UNUSED(value); return false; } |
153 | virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value); | 154 | virtual bool ReadRegister(soc_addr_t addr, soc_word_t& value); |
154 | virtual bool Reload(); | 155 | virtual bool Reload(); |
155 | virtual bool IsReadOnly() { return false; } | 156 | virtual bool IsReadOnly() { return false; } |
156 | virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode) | 157 | virtual bool WriteRegister(const QString& name, soc_word_t value, WriteMode mode) |
157 | { (void) name; (void) value; (void) mode; return false; } | 158 | { Q_UNUSED(name); Q_UNUSED(value); Q_UNUSED(mode); return false; } |
158 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode); | 159 | virtual bool WriteRegister(soc_addr_t addr, soc_word_t value, WriteMode mode); |
159 | virtual bool IsDirty() { return false; } | 160 | virtual bool IsDirty() { return false; } |
160 | virtual bool Commit() { return true; } | 161 | virtual bool Commit() { return true; } |
@@ -191,16 +192,48 @@ protected: | |||
191 | }; | 192 | }; |
192 | #endif | 193 | #endif |
193 | 194 | ||
194 | class SocRef | 195 | class SocRef; |
196 | |||
197 | class SocFile | ||
198 | { | ||
199 | public: | ||
200 | SocFile(); | ||
201 | SocFile(const QString& filename); | ||
202 | bool IsValid(); | ||
203 | |||
204 | SocRef GetSocRef(); | ||
205 | QString GetFilename(); | ||
206 | soc_t& GetSoc() { return m_soc; } | ||
207 | |||
208 | protected: | ||
209 | bool m_valid; | ||
210 | QString m_filename; | ||
211 | soc_t m_soc; | ||
212 | }; | ||
213 | |||
214 | class SocFileRef | ||
195 | { | 215 | { |
196 | public: | 216 | public: |
197 | SocRef():m_soc(0) {} | 217 | SocFileRef():m_socfile(0) {} |
198 | SocRef(const soc_t *soc):m_soc(soc) {} | 218 | SocFileRef(SocFile *file):m_socfile(file) {} |
199 | const soc_t& GetSoc() const { return *m_soc; } | 219 | SocFile *GetSocFile() const { return m_socfile; } |
220 | |||
200 | protected: | 221 | protected: |
201 | const soc_t *m_soc; | 222 | SocFile *m_socfile; |
202 | }; | 223 | }; |
203 | 224 | ||
225 | Q_DECLARE_METATYPE(SocFileRef) | ||
226 | |||
227 | class SocRef : public SocFileRef | ||
228 | { | ||
229 | public: | ||
230 | SocRef() {} | ||
231 | SocRef(SocFile *file):SocFileRef(file) {} | ||
232 | soc_t& GetSoc() const { return GetSocFile()->GetSoc(); } | ||
233 | }; | ||
234 | |||
235 | Q_DECLARE_METATYPE(SocRef) | ||
236 | |||
204 | class SocDevRef : public SocRef | 237 | class SocDevRef : public SocRef |
205 | { | 238 | { |
206 | public: | 239 | public: |
@@ -208,9 +241,9 @@ public: | |||
208 | SocDevRef(const SocRef& soc, int dev_idx, int dev_addr_idx) | 241 | SocDevRef(const SocRef& soc, int dev_idx, int dev_addr_idx) |
209 | :SocRef(soc), m_dev_idx(dev_idx), m_dev_addr_idx(dev_addr_idx) {} | 242 | :SocRef(soc), m_dev_idx(dev_idx), m_dev_addr_idx(dev_addr_idx) {} |
210 | int GetDevIndex() const { return m_dev_idx; } | 243 | int GetDevIndex() const { return m_dev_idx; } |
211 | const soc_dev_t& GetDev() const { return GetSoc().dev[GetDevIndex()]; } | 244 | soc_dev_t& GetDev() const { return GetSoc().dev[GetDevIndex()]; } |
212 | int GetDevAddrIndex() const { return m_dev_addr_idx; } | 245 | int GetDevAddrIndex() const { return m_dev_addr_idx; } |
213 | const soc_dev_addr_t& GetDevAddr() const { return GetDev().addr[GetDevAddrIndex()]; } | 246 | soc_dev_addr_t& GetDevAddr() const { return GetDev().addr[GetDevAddrIndex()]; } |
214 | protected: | 247 | protected: |
215 | int m_dev_idx, m_dev_addr_idx; | 248 | int m_dev_idx, m_dev_addr_idx; |
216 | }; | 249 | }; |
@@ -222,9 +255,9 @@ public: | |||
222 | SocRegRef(const SocDevRef& dev, int reg_idx, int reg_addr_idx) | 255 | SocRegRef(const SocDevRef& dev, int reg_idx, int reg_addr_idx) |
223 | :SocDevRef(dev), m_reg_idx(reg_idx), m_reg_addr_idx(reg_addr_idx) {} | 256 | :SocDevRef(dev), m_reg_idx(reg_idx), m_reg_addr_idx(reg_addr_idx) {} |
224 | int GetRegIndex() const { return m_reg_idx; } | 257 | int GetRegIndex() const { return m_reg_idx; } |
225 | const soc_reg_t& GetReg() const { return GetDev().reg[GetRegIndex()]; } | 258 | soc_reg_t& GetReg() const { return GetDev().reg[GetRegIndex()]; } |
226 | int GetRegAddrIndex() const { return m_reg_addr_idx; } | 259 | int GetRegAddrIndex() const { return m_reg_addr_idx; } |
227 | const soc_reg_addr_t& GetRegAddr() const { return GetReg().addr[GetRegAddrIndex()]; } | 260 | soc_reg_addr_t& GetRegAddr() const { return GetReg().addr[GetRegAddrIndex()]; } |
228 | protected: | 261 | protected: |
229 | int m_reg_idx, m_reg_addr_idx; | 262 | int m_reg_idx, m_reg_addr_idx; |
230 | }; | 263 | }; |
@@ -236,7 +269,7 @@ public: | |||
236 | SocFieldRef(const SocRegRef& reg, int field_idx) | 269 | SocFieldRef(const SocRegRef& reg, int field_idx) |
237 | :SocRegRef(reg), m_field_idx(field_idx) {} | 270 | :SocRegRef(reg), m_field_idx(field_idx) {} |
238 | int GetFieldIndex() const { return m_field_idx; } | 271 | int GetFieldIndex() const { return m_field_idx; } |
239 | const soc_reg_field_t& GetField() const { return GetReg().field[GetFieldIndex()]; } | 272 | soc_reg_field_t& GetField() const { return GetReg().field[GetFieldIndex()]; } |
240 | protected: | 273 | protected: |
241 | int m_field_idx; | 274 | int m_field_idx; |
242 | }; | 275 | }; |
@@ -247,9 +280,9 @@ class Backend : public QObject | |||
247 | public: | 280 | public: |
248 | Backend(); | 281 | Backend(); |
249 | 282 | ||
250 | QStringList GetSocNameList(); | 283 | QList< SocFileRef > GetSocFileList(); |
284 | QList< SocRef > GetSocList(); | ||
251 | bool LoadSocDesc(const QString& filename); | 285 | bool LoadSocDesc(const QString& filename); |
252 | bool GetSocByName(const QString& name, SocRef& s); | ||
253 | IoBackend *CreateDummyIoBackend(); | 286 | IoBackend *CreateDummyIoBackend(); |
254 | IoBackend *CreateFileIoBackend(const QString& filename); | 287 | IoBackend *CreateFileIoBackend(const QString& filename); |
255 | #ifdef HAVE_HWSTUB | 288 | #ifdef HAVE_HWSTUB |
@@ -259,7 +292,7 @@ public: | |||
259 | signals: | 292 | signals: |
260 | void OnSocListChanged(); | 293 | void OnSocListChanged(); |
261 | private: | 294 | private: |
262 | std::list< soc_t > m_socs; | 295 | std::list< SocFile > m_socs; |
263 | }; | 296 | }; |
264 | 297 | ||
265 | class BackendHelper | 298 | class BackendHelper |