16 template<
typename RegisterRawType,
typename ReadWriteDataType>
20 size_t numberOfWords,
size_t wordOffsetInRegister);
34 [[nodiscard]]
bool mayReplaceOther(
const boost::shared_ptr<TransferElement const>&)
const override;
36 [[nodiscard]]
bool isReadOnly()
const override;
38 [[nodiscard]]
bool isReadable()
const override;
#define DECLARE_MULTI_TEMPLATE_FOR_CHIMERATK_RAW_TYPES(TemplateClass,...)
N-dimensional register accessor.
Accessor class to read and write registers transparently by using the accessor object like a vector o...
Accessor class to read and write scalar registers transparently by using the accessor object like a v...
The RegisterRawType is determined by the number of bytes in the SubDevice mapfile The ReadWriteDataTy...
std::vector< boost::shared_ptr< TransferElement > > getHardwareAccessingElements() override
Obtain the underlying TransferElements with actual hardware access.
void doPostRead(TransferType type, bool hasNewData) override
Backend specific implementation of postRead().
size_t _endTransferAddress
bool isReadOnly() const override
Check if transfer element is read only, i.e.
bool isWriteable() const override
Check if transfer element is writeable.
boost::shared_ptr< SubdeviceBackend > _backend
Pointer to the backend.
ScalarRegisterAccessor< ChimeraTK::Boolean > _accBusy
void doReadTransferSynchronously() override
Implementation version of readTransfer() for synchronous reads.
bool doWriteTransfer(ChimeraTK::VersionNumber versionNumber) override
Implementation version of writeTransfer().
ScalarRegisterAccessor< uint64_t > _accAddress
size_t _starTransferAddress
std::list< boost::shared_ptr< TransferElement > > getInternalElements() override
Obtain the full list of TransferElements internally used by this TransferElement.
void doPostWrite(TransferType type, VersionNumber) override
Backend specific implementation of postWrite().
OneDRegisterAccessor< ReadWriteDataType > _accWriteData
VoidRegisterAccessor _accReadRequest
ScalarRegisterAccessor< uint64_t > _accChipSelect
Pointers to the accessors.
bool isReadable() const override
Check if transfer element is readable.
OneDRegisterAccessor< ReadWriteDataType > _accReadData
std::vector< std::byte > _zeros
void doPreRead(TransferType type) override
Backend specific implementation of preRead().
std::vector< RegisterRawType > _buffer
internal buffer
void doPreWrite(TransferType type, VersionNumber) override
Backend specific implementation of preWrite().
void transferImpl(TransferDirection direction)
void replaceTransferElement(boost::shared_ptr< TransferElement > newElement) override
Search for all underlying TransferElements which are considered identical (see sameRegister()) with t...
bool mayReplaceOther(const boost::shared_ptr< TransferElement const > &) const override
Check whether the TransferElement can be used in places where the TransferElement "other" is currentl...
Class for generating and holding version numbers without exposing a numeric representation.
Accessor class to read and write void-typed registers.
TransferType
Used to indicate the applicable operation on a Transferelement.