simulavr
1.1.0
|
Member of any memory area in an AVR device. More...
#include <rwmem.h>
Public Member Functions | |
RWMemoryMember (TraceValueRegister *registry, const std::string &tracename="", const int index=-1) | |
RWMemoryMember (void) | |
operator unsigned char () const | |
Read access on memory. More... | |
unsigned char | operator= (unsigned char val) |
Write access on memory. More... | |
unsigned char | operator= (const RWMemoryMember &mm) |
Write access on memory. More... | |
virtual | ~RWMemoryMember () |
virtual void | set_bit (unsigned int bitaddr) |
virtual void | clear_bit (unsigned int bitaddr) |
const std::string & | GetTraceName (void) |
bool | IsInvalid (void) const |
Protected Member Functions | |
virtual void | set (unsigned char nv)=0 |
virtual unsigned char | get () const =0 |
Protected Attributes | |
TraceValue * | tv |
TraceValueRegister * | registry |
const std::string | tracename |
const bool | isInvalid |
Member of any memory area in an AVR device.
Allows to be read and written byte-wise. Accesses can be traced if necessary.
RWMemoryMember::RWMemoryMember | ( | TraceValueRegister * | registry, |
const std::string & | tracename = "" , |
||
const int | index = -1 |
||
) |
Constructs a new memory member cell with the given trace value name. Index is used for memory-like structures which have indices.
registry | pointer to TraceValueRegister instance |
tracename | name of this memory cell, used by TraceValue |
index | (optional) index to identify a cell in a group of memory cells |
Definition at line 42 of file rwmem.cpp.
References avr_error, TraceValueRegister::GetTraceValuePrefix(), TraceValueRegister::RegisterTraceValue(), registry, and tv.
RWMemoryMember::RWMemoryMember | ( | void | ) |
|
inlinevirtual |
Clear only a single bit in register, required by CBI instruction Registers with secial behavior on single bit access must override this method
Reimplemented in IOReg< P >, IOReg< HWTimer16_2C3 >, IOReg< HWTimer8_1C >, IOReg< HWSpi >, IOReg< HWAd >, IOReg< HWUSI >, IOReg< HWStackSram >, IOReg< HWPcir >, IOReg< HWTimerTinyX5 >, IOReg< HWWado >, IOReg< HWEeprom >, IOReg< FlashProgramming >, IOReg< HWUsart >, IOReg< HWPort >, IOReg< HWTimer16 >, IOReg< HWUart >, IOReg< HWPcmsk >, IOReg< AddressExtensionRegister >, IOReg< HWTimer16_3C >, IOReg< HWTimer8 >, IOReg< HWAcomp >, IOReg< HWTimer16_1C >, IOReg< HWUSI_BR >, IOReg< HWTimer8_2C >, IOReg< HWTimer16_2C2 >, and IOReg< HWTimer8_0C >.
|
protectedpure virtual |
This function as the oppposite to get() is expected to read the real byte.
Implemented in IOSpecialReg, IOReg< P >, IOReg< HWTimer16_2C3 >, IOReg< HWTimer8_1C >, IOReg< HWSpi >, IOReg< HWAd >, IOReg< HWUSI >, IOReg< HWStackSram >, IOReg< HWPcir >, IOReg< HWTimerTinyX5 >, IOReg< HWWado >, IOReg< HWEeprom >, IOReg< FlashProgramming >, IOReg< HWUsart >, IOReg< HWPort >, IOReg< HWTimer16 >, IOReg< HWUart >, IOReg< HWPcmsk >, IOReg< AddressExtensionRegister >, IOReg< HWTimer16_3C >, IOReg< HWTimer8 >, IOReg< HWAcomp >, IOReg< HWTimer16_1C >, IOReg< HWUSI_BR >, IOReg< HWTimer8_2C >, IOReg< HWTimer16_2C2 >, IOReg< HWTimer8_0C >, NotSimulatedRegister, InvalidMem, RAM, OSCCALRegister, XDIVRegister, CLKPRRegister, GPIORegister, RWAbort, RWExit, RWSreg, RWReadFromFile, and RWWriteToFile.
Referenced by operator=().
|
inline |
|
inline |
RWMemoryMember::operator unsigned char | ( | ) | const |
Read access on memory.
Definition at line 66 of file rwmem.cpp.
References TraceValue::read(), and tv.
unsigned char RWMemoryMember::operator= | ( | unsigned char | val | ) |
Write access on memory.
Definition at line 72 of file rwmem.cpp.
References tv, and TraceValue::write().
unsigned char RWMemoryMember::operator= | ( | const RWMemoryMember & | mm | ) |
Write access on memory.
Definition at line 79 of file rwmem.cpp.
References get(), TraceValue::read(), tv, and TraceValue::write().
|
protectedpure virtual |
This function is the function which will be called by the above access operators and is expected to do the real work when writing a byte.
Implemented in IOSpecialReg, IOReg< P >, IOReg< HWTimer16_2C3 >, IOReg< HWTimer8_1C >, IOReg< HWSpi >, IOReg< HWAd >, IOReg< HWUSI >, IOReg< HWStackSram >, IOReg< HWPcir >, IOReg< HWTimerTinyX5 >, IOReg< HWWado >, IOReg< HWEeprom >, IOReg< FlashProgramming >, IOReg< HWUsart >, IOReg< HWPort >, IOReg< HWTimer16 >, IOReg< HWUart >, IOReg< HWPcmsk >, IOReg< AddressExtensionRegister >, IOReg< HWTimer16_3C >, IOReg< HWTimer8 >, IOReg< HWAcomp >, IOReg< HWTimer16_1C >, IOReg< HWUSI_BR >, IOReg< HWTimer8_2C >, IOReg< HWTimer16_2C2 >, IOReg< HWTimer8_0C >, NotSimulatedRegister, InvalidMem, RAM, OSCCALRegister, XDIVRegister, CLKPRRegister, GPIORegister, RWAbort, RWExit, RWSreg, RWReadFromFile, and RWWriteToFile.
|
inlinevirtual |
Set only a single bit in register, required by SBI instruction Registers with secial behavior on single bit access must override this method
Reimplemented in IOReg< P >, IOReg< HWTimer16_2C3 >, IOReg< HWTimer8_1C >, IOReg< HWSpi >, IOReg< HWAd >, IOReg< HWUSI >, IOReg< HWStackSram >, IOReg< HWPcir >, IOReg< HWTimerTinyX5 >, IOReg< HWWado >, IOReg< HWEeprom >, IOReg< FlashProgramming >, IOReg< HWUsart >, IOReg< HWPort >, IOReg< HWTimer16 >, IOReg< HWUart >, IOReg< HWPcmsk >, IOReg< AddressExtensionRegister >, IOReg< HWTimer16_3C >, IOReg< HWTimer8 >, IOReg< HWAcomp >, IOReg< HWTimer16_1C >, IOReg< HWUSI_BR >, IOReg< HWTimer8_2C >, IOReg< HWTimer16_2C2 >, and IOReg< HWTimer8_0C >.
|
protected |
Definition at line 108 of file rwmem.h.
Referenced by IsInvalid().
|
protected |
Definition at line 106 of file rwmem.h.
Referenced by IOReg< HWTimer8_0C >::releaseTraceValue(), and RWMemoryMember().
|
protected |
Definition at line 107 of file rwmem.h.
Referenced by GetTraceName().
|
mutableprotected |
If non-null, this is the tracing value bound to this memory member. All read/write operators on the contents of a memory member will inform the tracing value of changes and accesses, if applicable.
Definition at line 105 of file rwmem.h.
Referenced by IOReg< HWTimer8_0C >::clear_bit(), IOReg< HWTimer8_0C >::get(), IOReg< HWTimer8_0C >::hardwareChange(), IOSpecialReg::hardwareChange(), IOSpecialReg::hardwareChangeMask(), IOReg< HWTimer8_0C >::IOReg(), operator unsigned char(), operator=(), RAM::RAM(), IOReg< HWTimer8_0C >::releaseTraceValue(), IOSpecialReg::Reset(), RWMemoryMember(), IOReg< HWTimer8_0C >::set(), and IOReg< HWTimer8_0C >::set_bit().