SatCat5
satcat5::cfg::ConfigBus Class Referenceabstract

Detailed Description

Generic ConfigBus API.

ConfigBus API concepts.

This class defines virtual methods for reading or writing a specific register. The underlying implementation may access local memory directly, or it may send network packets to query a memory-mapped register on a remote device.

Definition at line 124 of file cfgbus_core.h.

#include <cfgbus_core.h>

Inheritance diagram for satcat5::cfg::ConfigBus:
[legend]
Collaboration diagram for satcat5::cfg::ConfigBus:
[legend]

Public Member Functions

virtual satcat5::cfg::IoStatus read (unsigned regaddr, u32 &rdval)=0
 Basic single-register read operation.
 
virtual satcat5::cfg::IoStatus write (unsigned regaddr, u32 wrval)=0
 Basic single-register write operation.
 
virtual satcat5::cfg::IoStatus read_array (unsigned regaddr, unsigned count, u32 *result)
 Bulk-read with auto-increment (regaddr, regaddr+1, ...) Bulk read/write operations are more efficient when controlling ConfigBus peripherals over a network interface.
 
virtual satcat5::cfg::IoStatus read_repeat (unsigned regaddr, unsigned count, u32 *result)
 Bulk-read the same register N times.
 
virtual satcat5::cfg::IoStatus write_array (unsigned regaddr, unsigned count, const u32 *data)
 Bulk-write with auto-increment (regaddr, regaddr+1, ...)
 
virtual satcat5::cfg::IoStatus write_repeat (unsigned regaddr, unsigned count, const u32 *data)
 Bulk-write the same register N times.
 
unsigned get_regaddr (unsigned dev, unsigned reg) const
 Convert device + register to combined address.
 
void register_irq (satcat5::cfg::Interrupt *obj)
 Add an interrupt handler. More...
 
void unregister_irq (satcat5::cfg::Interrupt *obj)
 Remove an interrupt handler.
 
unsigned count_irq () const
 Count attached interrupt handlers.
 
satcat5::cfg::Register get_register (unsigned dev, unsigned reg=0)
 Create register-map object for the given device address. More...
 
void irq_poll ()
 Poll all registered ConfigBus interrupt handlers. More...
 

Protected Member Functions

 ConfigBus (void *base_ptr=0)
 

Protected Attributes

volatile u32 * m_base_ptr
 
satcat5::util::List< satcat5::cfg::Interruptm_irq_list
 

Member Function Documentation

◆ get_register()

Register ConfigBus::get_register ( unsigned  dev,
unsigned  reg = 0 
)

Create register-map object for the given device address.

(Or for a specific register, if the register address is specified.)

Definition at line 101 of file cfgbus_core.cc.

◆ irq_poll()

void ConfigBus::irq_poll ( )

Poll all registered ConfigBus interrupt handlers.

Issue callbacks to any that may have triggered. (This method should not usually be called directly.)

Definition at line 111 of file cfgbus_core.cc.

◆ register_irq()

void ConfigBus::register_irq ( satcat5::cfg::Interrupt obj)

Add an interrupt handler.

Each ConfigBus interface has a single interrupt signal, which is the logical OR of interrupts from all attached peripherals. When any peripheral raises its interrupt signal, call irq_poll().

Definition at line 80 of file cfgbus_core.cc.


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