58 uint64_t address_ = 0, uint32_t nBytes_ = 0, uint64_t bar_ = 0, uint32_t width_ = 32,
65 NumericAddressedRegisterInfo(RegisterPath
const& pathName_, uint64_t bar_, uint64_t address_, uint32_t nElements_,
66 uint32_t elementPitchBits_, std::vector<ChannelInfo> channelInfo_,
Access dataAccess_,
67 std::vector<size_t> interruptId_);
126 [[nodiscard]] std::unique_ptr<BackendRegisterInfoBase>
clone()
const override {
149 [[nodiscard]] std::unique_ptr<BackendRegisterCatalogueBase>
clone()
const override;
152 const std::vector<size_t>& qualifiedAsyncDomainId)
const override;
155 const std::vector<size_t>& qualifiedAsyncDomainId)
const override;
Set of AccessMode flags with additional functionality for an easier handling.
void add(AccessMode flag)
Add the given flag to the set.
Interface for backends to the register catalogue.
DeviceBackend-independent register description.
Class describing the actual payload data format of a register in an abstract manner.
A class to describe which of the supported data types is used.
void addDataConsistencyRealm(const RegisterPath ®isterPath, const std::string &realmName)
const std::set< std::vector< size_t > > & getListOfInterrupts() const
bool hasRegister(const RegisterPath ®isterPathName) const override
Check if register with the given path name exists.
void addRegister(const NumericAddressedRegisterInfo ®isterInfo)
void fillFromThis(NumericAddressedRegisterCatalogue *target) const
NumericAddressedRegisterInfo getBackendRegister(const RegisterPath ®isterPathName) const override
Note: Override this function if backend has "hidden" registers which are not added to the map and hen...
std::set< std::vector< size_t > > _listOfInterrupts
set of interrupt IDs.
std::map< RegisterPath, std::vector< size_t > > _canonicalInterrupts
A canonical interrupt path consists of an exclamation mark, followed by a numeric interrupt and a col...
std::unique_ptr< BackendRegisterCatalogueBase > clone() const override
Create deep copy of the catalogue.
std::shared_ptr< async::DataConsistencyRealm > getDataConsistencyRealm(const std::vector< size_t > &qualifiedAsyncDomainId) const override
Return DataConsistencyRealm for the given qualified AsyncDomainId.
RegisterPath getDataConsistencyKeyRegisterPath(const std::vector< size_t > &qualifiedAsyncDomainId) const override
Return RegisterPath for the register containing the DataConsistencyKey value for the given qualified ...
std::map< RegisterPath, std::string > _dataConsistencyRealms
Map of data consistency key register paths to realm names.
uint32_t nElements
Number of elements in register.
std::vector< ChannelInfo > channels
Define per-channel information (bit interpretation etc.), 1D/scalars have exactly one entry.
unsigned int getNumberOfChannels() const override
Return number of channels in register.
NumericAddressedRegisterInfo(const NumericAddressedRegisterInfo &)=default
bool isReadable() const override
Return whether the register is readable.
Access
Enum describing the access mode of the register:
AccessModeFlags getSupportedAccessModes() const override
Return all supported AccessModes for this register.
uint64_t bar
Upper part of the address (name originally from PCIe, meaning now generalised)
const DataDescriptor & getDataDescriptor() const override
Return description of the actual payload data for this register.
uint32_t elementPitchBits
Distance in bits (!) between two elements (of the same channel)
std::unique_ptr< BackendRegisterInfoBase > clone() const override
Create copy of the object.
bool operator==(const ChimeraTK::NumericAddressedRegisterInfo &rhs) const
bool operator!=(const ChimeraTK::NumericAddressedRegisterInfo &rhs) const
bool isHidden() const override
Returns whether the register is "hidden", meaning it won't be listed when iterating the catalogue.
std::vector< size_t > getQualifiedAsyncId() const override
Return the fully qualified async::SubDomain ID.
DataDescriptor dataDescriptor
uint64_t address
Lower part of the address relative to BAR, in bytes.
Access registerAccess
Data access direction: Read, write, read and write or interrupt.
Type
Enum descibing the data interpretation:
RegisterPath getRegisterName() const override
Return full path name of the register (including modules)
std::vector< size_t > interruptId
void computeDataDescriptor()
NumericAddressedRegisterInfo & operator=(const NumericAddressedRegisterInfo &other)=default
bool isWriteable() const override
Return whether the register is writeable.
unsigned int getNumberOfElements() const override
Return number of elements per channel.
Class to store a register path name.
@ wait_for_new_data
Make any read blocking until new data has arrived since the last read.
@ raw
Raw access: disable any possible conversion from the original hardware data type into the given UserT...
DataType getRawType() const
Return raw type matching the given width.
bool operator==(const ChannelInfo &rhs) const
int32_t nFractionalBits
Number of fractional bits.
bool signedFlag
Signed/Unsigned flag.
bool operator!=(const ChannelInfo &rhs) const
uint32_t bitOffset
Offset in bits w.r.t.
uint32_t width
Number of significant bits in the register.
Type dataType
Data type (fixpoint, floating point)