15 template<
typename UserType>
19 const boost::shared_ptr<DeviceBackend>& backend, std::shared_ptr<detail::CountedRecursiveMutex> mutex,
28 [[nodiscard]]
bool isWriteable()
const override {
return false; }
29 [[nodiscard]]
bool isReadOnly()
const override {
return true; }
30 [[nodiscard]]
bool isReadable()
const override {
return true; };
48 [[nodiscard]]
bool mayReplaceOther(
const boost::shared_ptr<TransferElement const>& other)
const override;
54 std::shared_ptr<detail::CountedRecursiveMutex>
_mutex;
56 boost::shared_ptr<NDRegisterAccessor<UserType>>
_buffer0;
57 boost::shared_ptr<NDRegisterAccessor<UserType>>
_buffer1;
#define DECLARE_TEMPLATE_FOR_CHIMERATK_USER_TYPES(TemplateClass)
Set of AccessMode flags with additional functionality for an easier handling.
void doPostWrite(TransferType, VersionNumber) override
Backend specific implementation of postWrite().
void doPostRead(TransferType type, bool hasNewData) override
Backend specific implementation of postRead().
bool isWriteable() const override
Check if transfer element is writeable.
void doPreWrite(TransferType, VersionNumber) override
Backend specific implementation of preWrite().
void replaceTransferElement(boost::shared_ptr< ChimeraTK::TransferElement >) override
bool doWriteTransfer(ChimeraTK::VersionNumber) override
Implementation version of writeTransfer().
bool isReadOnly() const override
Check if transfer element is read only, i.e.
std::list< boost::shared_ptr< TransferElement > > getInternalElements() override
Obtain the full list of TransferElements internally used by this TransferElement.
boost::shared_ptr< NDRegisterAccessor< UserType > > _buffer1
boost::shared_ptr< ChimeraTK::NDRegisterAccessor< uint32_t > > _enableDoubleBufferReg
void doReadTransferSynchronously() override
Implementation version of readTransfer() for synchronous reads.
void doPreRead(TransferType type) override
Backend specific implementation of preRead().
bool mayReplaceOther(const boost::shared_ptr< TransferElement const > &other) const override
Check whether the TransferElement can be used in places where the TransferElement "other" is currentl...
std::unique_lock< detail::CountedRecursiveMutex > _transferLock
boost::shared_ptr< NDRegisterAccessor< UserType > > _buffer0
boost::shared_ptr< DeviceBackend > _backend
std::vector< boost::shared_ptr< TransferElement > > getHardwareAccessingElements() override
Obtain the underlying TransferElements with actual hardware access.
std::shared_ptr< detail::CountedRecursiveMutex > _mutex
NumericAddressedRegisterInfo::DoubleBufferInfo _doubleBufferInfo
bool isReadable() const override
Check if transfer element is readable.
boost::shared_ptr< ChimeraTK::NDRegisterAccessor< uint32_t > > _currentBufferNumberReg
N-dimensional register accessor.
std::vector< std::vector< UserType > > buffer_2D
Buffer of converted data elements.
Class to store a register path name.
Class for generating and holding version numbers without exposing a numeric representation.
Exception thrown when a logic error has occured.
TransferType
Used to indicate the applicable operation on a Transferelement.