diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2014-09-30 15:51:38 +0200 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2014-12-15 22:53:33 +0100 |
commit | dc3ae2aeb9919b0a45d9ff2dfe07d26a9625e57d (patch) | |
tree | a84ccfd90ab082aa0aae0b1a73571fb07e548fa4 /utils/regtools | |
parent | 1bcc4fc67bb0aa7b7fab9f9a098f3b473ea1637f (diff) | |
download | rockbox-dc3ae2aeb9919b0a45d9ff2dfe07d26a9625e57d.tar.gz rockbox-dc3ae2aeb9919b0a45d9ff2dfe07d26a9625e57d.zip |
qeditor: rework register dump to be more general and flexible
Change-Id: I2fb7a2813c93f0804ed1ca6223625706d0dff9a5
Reviewed-on: http://gerrit.rockbox.org/998
Reviewed-by: Amaury Pouly <amaury.pouly@gmail.com>
Diffstat (limited to 'utils/regtools')
-rw-r--r-- | utils/regtools/qeditor/backend.cpp | 25 | ||||
-rw-r--r-- | utils/regtools/qeditor/backend.h | 6 |
2 files changed, 25 insertions, 6 deletions
diff --git a/utils/regtools/qeditor/backend.cpp b/utils/regtools/qeditor/backend.cpp index c2db1f2a3e..e9d7941ab1 100644 --- a/utils/regtools/qeditor/backend.cpp +++ b/utils/regtools/qeditor/backend.cpp @@ -587,10 +587,17 @@ bool BackendHelper::ReadRegisterField(const QString& dev, const QString& reg, return true; } -bool BackendHelper::DumpAllRegisters(const QString& filename) +bool BackendHelper::DumpAllRegisters(const QString& filename, bool ignore_errors) { FileIoBackend b(filename, QString::fromStdString(m_soc.GetSoc().name)); - BackendHelper bh(&b, m_soc); + bool ret = DumpAllRegisters(&b, ignore_errors); + return ret && b.Commit(); +} + +bool BackendHelper::DumpAllRegisters(IoBackend *backend, bool ignore_errors) +{ + BackendHelper bh(backend, m_soc); + bool ret = true; for(size_t i = 0; i < m_soc.GetSoc().dev.size(); i++) { const soc_dev_t& dev = m_soc.GetSoc().dev[i]; @@ -605,12 +612,20 @@ bool BackendHelper::DumpAllRegisters(const QString& filename) QString regname = QString::fromStdString(reg.addr[l].name); soc_word_t val; if(!ReadRegister(devname, regname, val)) - return false; + { + ret = false; + if(!ignore_errors) + return false; + } if(!bh.WriteRegister(devname, regname, val)) - return false; + { + ret = false; + if(!ignore_errors) + return false; + } } } } } - return b.Commit(); + return ret; } diff --git a/utils/regtools/qeditor/backend.h b/utils/regtools/qeditor/backend.h index c8adbc474f..b2f53c9ed5 100644 --- a/utils/regtools/qeditor/backend.h +++ b/utils/regtools/qeditor/backend.h @@ -363,7 +363,11 @@ public: bool GetRegRef(const SocDevRef& dev, const QString& reg, SocRegRef& ref); bool GetFieldRef(const SocRegRef& reg, const QString& field, SocFieldRef& ref); bool GetRegisterAddress(const QString& dev, const QString& reg, soc_addr_t& addr); - bool DumpAllRegisters(const QString& filename); + /* NOTE: does not commit writes to the backend + * if ignore_errors is true, the dump will continue even on errors, and the + * function will return false if one or more errors occured */ + bool DumpAllRegisters(IoBackend *backend, bool ignore_errors = true); + bool DumpAllRegisters(const QString& filename, bool ignore_errors = true); private: IoBackend *m_io_backend; |