#include "BaseRegister.h" BaseRegister::BaseRegister(quint32 bar, quint32 offset, const UltraSoundDevice& usd) { this->_bar = bar; this->_offset = offset; this->_usd = usd; _isSync = false; } /*************************************************************************************************/ quint32 BaseRegister::read() { auto readValue = _usd.readWord(_offset, _bar); _isSync = true; for(auto i = 0; i < _fields.length(); i++) { _fields[i].ExtractValue(readValue); } return readValue; } /*************************************************************************************************/ void BaseRegister::write() { _usd.writeWord(_offset, _bar, _value); _isSync = false; } /*************************************************************************************************/ void BaseRegister::appendToList(const RegisterField& registerField) { connect(®isterField, &RegisterField::fieldUpdated, this, &BaseRegister::fieldUpdated); _fields.append(registerField); } /*************************************************************************************************/ void BaseRegister::fieldUpdated(quint32 value, quint32 clearMask) { if(!_isSync) { read(); } auto temp = _readValue & clearMask; temp |= value; }