1
0
Fork 0
forked from len0rd/rockbox

regtools/qeditor: prepare support for register writing

Change-Id: Ifef36a3ddb1604db63ec974da2d6a77a5540ff42
This commit is contained in:
Amaury Pouly 2014-02-09 02:16:43 +01:00
parent 3d07706c05
commit a66a5af4db
4 changed files with 207 additions and 8 deletions

View file

@ -1,6 +1,7 @@
#include <QFile>
#include <QTextStream>
#include <QDebug>
#include <QFileInfo>
#include "backend.h"
/**
@ -99,9 +100,38 @@ bool FileIoBackend::Reload()
else if(ok)
m_map[key] = val;
}
m_readonly = !QFileInfo(file).isWritable();
m_dirty = false;
return true;
}
bool FileIoBackend::WriteRegister(const QString& name, soc_word_t value)
{
m_dirty = true;
m_map[name] = value;
return true;
}
bool FileIoBackend::Commit()
{
if(!m_dirty)
return true;
QFile file(m_filename);
if(!file.open(QIODevice::WriteOnly | QIODevice::Truncate | QIODevice::Text))
return false;
QTextStream out(&file);
out << "HW = " << m_soc << "\n";
QMapIterator< QString, soc_word_t > it(m_map);
while(it.hasNext())
{
it.next();
out << it.key() << " = " << it.value() << "\n";
}
out.flush();
return file.flush();
}
#ifdef HAVE_HWSTUB
/**
* HWStubDevice
@ -195,6 +225,14 @@ bool HWStubDevice::ReadMem(soc_addr_t addr, size_t length, void *buffer)
return ret >= 0 && (size_t)ret == length;
}
bool HWStubDevice::WriteMem(soc_addr_t addr, size_t length, void *buffer)
{
if(!m_hwdev)
return false;
int ret = hwstub_rw_mem(m_hwdev, 0, addr, buffer, length);
return ret >= 0 && (size_t)ret == length;
}
bool HWStubDevice::IsValid()
{
return m_valid;
@ -243,6 +281,11 @@ bool HWStubIoBackend::ReadRegister(soc_addr_t addr, soc_word_t& value)
return m_dev->ReadMem(addr, sizeof(value), &value);
}
bool HWStubIoBackend:: WriteRegister(soc_addr_t addr, soc_word_t value)
{
return m_dev->WriteMem(addr, sizeof(value), &value);
}
bool HWStubIoBackend::Reload()
{
return true;