simulavr  1.1.0
IOSpecialReg Class Reference

#include <rwmem.h>

Inheritance diagram for IOSpecialReg:

Public Member Functions

 IOSpecialReg (TraceValueRegister *registry, const std::string &tracename)
 Creates a IOSpecialReg instance, see RWMemoryMember for more info. More...
 
void connectSRegClient (IOSpecialRegClient *c)
 Registers a client to this IO register to inform this client on read or write access. More...
 
void Reset (void)
 Register reset functionality, sets internal register value to 0. More...
 
void Reset (unsigned char val)
 
void hardwareChange (unsigned char val)
 
void hardwareChangeMask (unsigned char val, unsigned char mask)
 
- Public Member Functions inherited from RWMemoryMember
 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

unsigned char get () const
 Get value method, see RWMemoryMember. More...
 
void set (unsigned char)
 Set value method, see RWMemoryMember. More...
 

Protected Attributes

std::vector< IOSpecialRegClient * > clients
 clients-list with registered clients More...
 
- Protected Attributes inherited from RWMemoryMember
TraceValuetv
 
TraceValueRegisterregistry
 
const std::string tracename
 
const bool isInvalid
 

Private Attributes

unsigned char value
 Internal register value. More...
 

Detailed Description

IO register, which holds configuration for more than one hardware unit

Todo:
Set method could modify value, how to reflect it on TraceValue mechanism? Same problem for the get method.

Definition at line 422 of file rwmem.h.

Constructor & Destructor Documentation

◆ IOSpecialReg()

IOSpecialReg::IOSpecialReg ( TraceValueRegister registry,
const std::string &  tracename 
)

Creates a IOSpecialReg instance, see RWMemoryMember for more info.

Definition at line 303 of file rwmem.cpp.

References Reset().

Member Function Documentation

◆ connectSRegClient()

void IOSpecialReg::connectSRegClient ( IOSpecialRegClient c)
inline

◆ get()

unsigned char IOSpecialReg::get ( ) const
protectedvirtual

Get value method, see RWMemoryMember.

Implements RWMemoryMember.

Definition at line 309 of file rwmem.cpp.

References clients, and value.

◆ hardwareChange()

void IOSpecialReg::hardwareChange ( unsigned char  val)
inline

Reflects a value change from hardware (for example timer count occured)

Parameters
valthe new register value

Definition at line 439 of file rwmem.h.

References TraceValue::change(), and RWMemoryMember::tv.

Referenced by TimerIRQRegister::ClearIrqFlag(), TimerIRQRegister::fireInterrupt(), and set().

◆ hardwareChangeMask()

void IOSpecialReg::hardwareChangeMask ( unsigned char  val,
unsigned char  mask 
)
inline

Reflects a value change from hardware (for example timer count occured), but with bitmask

Parameters
valthe new register value
maskthe bitmask for val

Definition at line 444 of file rwmem.h.

References TraceValue::change(), and RWMemoryMember::tv.

Referenced by ExternalIRQHandler::ClearIrqFlag(), and ExternalIRQHandler::fireInterrupt().

◆ Reset() [1/2]

void IOSpecialReg::Reset ( void  )
inline

Register reset functionality, sets internal register value to 0.

Definition at line 432 of file rwmem.h.

References Reset().

Referenced by IOSpecialReg(), TimerIRQRegister::Reset(), and Reset().

◆ Reset() [2/2]

void IOSpecialReg::Reset ( unsigned char  val)
inline

Register reset functionality, sets internal register value to val.

Parameters
valthe reset value

Definition at line 435 of file rwmem.h.

References TraceValue::set_written(), and RWMemoryMember::tv.

◆ set()

void IOSpecialReg::set ( unsigned char  val)
protectedvirtual

Set value method, see RWMemoryMember.

Implements RWMemoryMember.

Definition at line 316 of file rwmem.cpp.

References clients, hardwareChange(), and value.

Member Data Documentation

◆ clients

std::vector<IOSpecialRegClient*> IOSpecialReg::clients
protected

clients-list with registered clients

Definition at line 447 of file rwmem.h.

Referenced by get(), and set().

◆ value

unsigned char IOSpecialReg::value
private

Internal register value.

Definition at line 453 of file rwmem.h.

Referenced by get(), and set().


The documentation for this class was generated from the following files: