![]() |
ChimeraTK-DeviceAccess 03.26.00
|
Test backend to put the SubArrayAccessorDecorator around the created accessors. More...
Inheritance diagram for SubArrayDecoratorTestBackend:
Collaboration diagram for SubArrayDecoratorTestBackend:Public Member Functions | |
| DEFINE_VIRTUAL_FUNCTION_OVERRIDE_VTABLE (DummyBackendBase, getRegisterAccessor_impl, boost::shared_ptr< NDRegisterAccessor< T > >(const RegisterPath &, size_t, size_t, AccessModeFlags)) | |
| SubArrayDecoratorTestBackend (const std::string &mapFileName) | |
| template<typename UserType > | |
| boost::shared_ptr< NDRegisterAccessor< UserType > > | getRegisterAccessor_impl (const RegisterPath ®isterPathName, size_t numberOfWords, size_t wordOffsetInRegister, AccessModeFlags flags) |
| void | read (uint64_t bar, uint64_t address, int32_t *data, size_t sizeInBytes) override |
| Read function to be implemented by backends. | |
| void | write (uint64_t bar, uint64_t address, int32_t const *data, size_t sizeInBytes) override |
| Write function to be implemented by backends. | |
Public Member Functions inherited from ChimeraTK::DummyBackend | |
| DummyBackend (const std::string &mapFileName, const std::string &dataConsistencyKeyDescriptor="") | |
| ~DummyBackend () override=default | |
| void | open () override |
| Open the device. | |
| void | closeImpl () override |
| This closes the device, clears all internal registers, read-only settings and callback functions. | |
| std::string | readDeviceInfo () override |
| Return a device information string containing hardware details like the firmware version number or the slot number used by the board. | |
| DummyRegisterRawAccessor | getRawAccessor (const std::string &module, const std::string ®ister_name) |
| Get a raw accessor to the underlying memory with the convenience of using register names. | |
| VersionNumber | triggerInterrupt (uint32_t interruptNumber) override |
| Simulate the arrival of an interrupt. | |
| void | read (uint8_t bar, uint32_t address, int32_t *data, size_t sizeInBytes) final |
| You cannot override the read version with 32 bit address any more. | |
| void | write (uint8_t bar, uint32_t address, int32_t const *data, size_t sizeInBytes) final |
| You cannot override the write version with 32 bit address any more. | |
Public Member Functions inherited from ChimeraTK::DummyBackendBase | |
| DummyBackendBase (std::string const &mapFileName, const std::string &dataConsistencyKeyDescriptor="") | |
| ~DummyBackendBase () override=default | |
| size_t | minimumTransferAlignment (uint64_t bar) const override |
| Determines the supported minimum alignment for any read/write requests. | |
| DEFINE_VIRTUAL_FUNCTION_OVERRIDE_VTABLE (NumericAddressedBackend, getRegisterAccessor_impl, boost::shared_ptr< NDRegisterAccessor< T > >(const RegisterPath &, size_t, size_t, AccessModeFlags)) | |
| void | read (uint8_t bar, uint32_t address, int32_t *data, size_t sizeInBytes) final |
| You cannot override the read version with 32 bit address any more. | |
| void | write (uint8_t bar, uint32_t address, int32_t const *data, size_t sizeInBytes) final |
| You cannot override the write version with 32 bit address any more. | |
| bool | barIndexValid (uint64_t bar) override |
| All bars are valid in dummies. | |
| std::map< uint64_t, size_t > | getBarSizesInBytesFromRegisterMapping () const |
| Determines the size of each bar because the DummyBackends allocate memory per bar. | |
| template<typename UserType > | |
| boost::shared_ptr< NDRegisterAccessor< UserType > > | getRegisterAccessor_impl (const RegisterPath ®isterPathName, size_t numberOfWords, size_t wordOffsetInRegister, AccessModeFlags flags) |
| Specific override which allows to create "DUMMY_INTEERRUPT_X" accessors. | |
| std::pair< bool, int > | extractControllerInterrupt (const RegisterPath ®isterPathName) const |
Public Member Functions inherited from ChimeraTK::NumericAddressedBackend | |
| NumericAddressedBackend (const std::string &mapFileName="", std::unique_ptr< NumericAddressedRegisterCatalogue > registerMapPointer=std::make_unique< NumericAddressedRegisterCatalogue >(), const std::string &dataConsistencyKeyDescriptor="") | |
| ~NumericAddressedBackend () override=default | |
| virtual bool | canMergeRequests () const |
| Determines whether the backend supports merging of requests (read or write) | |
| RegisterCatalogue | getRegisterCatalogue () const override |
| Return the register catalogue with detailed information on all registers. | |
| MetadataCatalogue | getMetadataCatalogue () const override |
| Return the device metadata catalogue. | |
| NumericAddressedRegisterInfo | getRegisterInfo (const RegisterPath ®isterPathName) |
| getRegisterInfo returns a NumericAddressedRegisterInfo object for the given register. | |
| void | activateAsyncRead () noexcept override |
| Activate asyncronous read for all transfer elements where AccessMode::wait_for_new_data is set. | |
| void | close () final |
| Deactivates all asynchronous accessors and calls closeImpl(). | |
| virtual std::future< void > | activateSubscription (uint32_t interruptNumber, boost::shared_ptr< async::DomainImpl< std::nullptr_t > > asyncDomain) |
| Activate/create the subscription for a given interrupt (for instance by starting the according interrupt handling thread). | |
| void | setExceptionImpl () noexcept override |
| Turn off the internal variable which remembers that async is active. | |
| template<typename BackendSpecificUserType > | |
| std::pair< BackendSpecificUserType, VersionNumber > | getAsyncDomainInitialValue (size_t asyncDomainId) |
| Get the initial value for a certain async::Domain. | |
Public Member Functions inherited from ChimeraTK::DeviceBackendImpl | |
| bool | isOpen () override |
| Return whether a device has been opened or not. | |
| bool | isConnected () final |
| Deprecated since 2022-03-03. | |
| void | checkActiveException () final |
| Function to be called by backends when needing to check for an active exception. | |
| void | setException (const std::string &message) noexcept final |
| Set the backend into an exception state. | |
| bool | isFunctional () const noexcept final |
| Return whether a device is working as intended, usually this means it is opened and does not have any errors. | |
| std::string | getActiveExceptionMessage () noexcept |
| std::set< DeviceBackend::BackendID > | getInvolvedBackendIDs () override |
| Get the backend IDs of all involved backends. | |
| ChimeraTK::VersionNumber | getVersionOnOpen () const override |
| Get the version number which was set during the open process. | |
Public Member Functions inherited from ChimeraTK::DeviceBackend | |
| virtual | ~DeviceBackend ()=default |
| Every virtual class needs a virtual desctructor. | |
| template<typename UserType > | |
| boost::shared_ptr< NDRegisterAccessor< UserType > > | getRegisterAccessor (const RegisterPath ®isterPathName, size_t numberOfWords, size_t wordOffsetInRegister, AccessModeFlags flags) |
| Get a NDRegisterAccessor object from the register name. | |
| DEFINE_VIRTUAL_FUNCTION_TEMPLATE_VTABLE (getRegisterAccessor_impl, boost::shared_ptr< NDRegisterAccessor< T > >(const RegisterPath &, size_t, size_t, AccessModeFlags)) | |
| BackendID | getBackendID () |
| Get a unique ID for this backend instance. | |
Static Public Member Functions | |
| static boost::shared_ptr< DeviceBackend > | createInstance (std::string, std::map< std::string, std::string > parameters) |
Static Public Member Functions inherited from ChimeraTK::DummyBackend | |
| static boost::shared_ptr< DeviceBackend > | createInstance (std::string address, std::map< std::string, std::string > parameters) |
Static Public Member Functions inherited from ChimeraTK::DummyBackendBase | |
| static void | checkSizeIsMultipleOfWordSize (size_t sizeInBytes) |
| template<typename T , typename... Args> | |
| static boost::shared_ptr< DeviceBackend > | returnInstance (const std::string &instanceId, Args &&... arguments) |
| Backward compatibility: Leftover from the time when the dummy managed it's own map to return the same instance multiple times, and still allow to use the same map file with different instances. | |
Public Attributes | |
| size_t | writeCount {0} |
| size_t | readCount {0} |
Public Attributes inherited from ChimeraTK::DummyBackendBase | |
| std::atomic< bool > | throwExceptionOpen {false} |
| std::atomic< bool > | throwExceptionRead {false} |
| std::atomic< bool > | throwExceptionWrite {false} |
| std::atomic< size_t > | throwExceptionCounter {0} |
Additional Inherited Members | |
Public Types inherited from ChimeraTK::DeviceBackend | |
| using | BackendID = std::uintptr_t |
Protected Member Functions inherited from ChimeraTK::DummyBackend | |
| void | resizeBarContents () |
| void | runWriteCallbackFunctionsForAddressRange (AddressRange addressRange) |
| std::list< boost::function< void(void)> > | findCallbackFunctionsForAddressRange (AddressRange addressRange) |
| void | setReadOnly (uint64_t bar, uint64_t address, size_t sizeInWords) |
| void | setReadOnly (AddressRange addressRange) |
| bool | isReadOnly (uint64_t bar, uint64_t address) const |
| void | setWriteCallbackFunction (AddressRange addressRange, boost::function< void(void)> const &writeCallbackFunction) |
| bool | isWriteRangeOverlap (AddressRange firstRange, AddressRange secondRange) |
| returns true if the ranges overlap and at least one of the overlapping registers can be written | |
| void | writeRegisterWithoutCallback (uint64_t bar, uint64_t address, int32_t data) |
| Not write-protected function for internal use only. | |
Protected Member Functions inherited from ChimeraTK::DeviceBackendImpl | |
| void | setOpenedAndClearException () noexcept |
| Backends should call this function at the end of a (successful) open() call. | |
Static Protected Member Functions inherited from ChimeraTK::DummyBackend | |
| static std::string | convertPathRelativeToDmapToAbs (std::string const &mapfileName) |
Protected Attributes inherited from ChimeraTK::DummyBackend | |
| std::string | _mapFile |
| name of the map file | |
| std::map< uint64_t, std::vector< int32_t > > | _barContents |
| std::set< std::pair< uint64_t, uint64_t > > | _readOnlyAddresses |
| std::multimap< AddressRange, boost::function< void(void)> > | _writeCallbackFunctions |
| std::mutex | mutex |
Protected Attributes inherited from ChimeraTK::NumericAddressedBackend | |
| std::unique_ptr< NumericAddressedRegisterCatalogue > | _registerMapPointer |
| NumericAddressedRegisterCatalogue & | _registerMap |
| MetadataCatalogue | _metadataCatalogue |
| metadata catalogue | |
| std::mutex | _unalignedAccess |
| mutex for protecting unaligned access | |
| friend | NumericAddressedLowLevelTransferElement |
| friend | TriggeredPollDistributor |
Protected Attributes inherited from ChimeraTK::DeviceBackendImpl | |
| std::atomic< bool > | _opened {false} |
| flag if backend is opened | |
| async::DomainsContainer | _asyncDomainsContainer |
| Container for async::Domains to support wait_for_new_data. | |
Test backend to put the SubArrayAccessorDecorator around the created accessors.
It also contains counters to track the number of read and write calls.
Definition at line 40 of file testSubArrayAccessorDecorator.cc.
|
inlineexplicit |
Definition at line 45 of file testSubArrayAccessorDecorator.cc.
|
inlinestatic |
Definition at line 80 of file testSubArrayAccessorDecorator.cc.
| SubArrayDecoratorTestBackend::DEFINE_VIRTUAL_FUNCTION_OVERRIDE_VTABLE | ( | DummyBackendBase | , |
| getRegisterAccessor_impl | , | ||
| boost::shared_ptr< NDRegisterAccessor< T > > | const RegisterPath &, size_t, size_t, AccessModeFlags | ||
| ) |
|
inline |
Definition at line 50 of file testSubArrayAccessorDecorator.cc.
|
inlineoverridevirtual |
Read function to be implemented by backends.
TODO: Add documentation!
Reimplemented from ChimeraTK::DummyBackend.
Definition at line 70 of file testSubArrayAccessorDecorator.cc.
|
inlineoverridevirtual |
Write function to be implemented by backends.
TODO: Add documentation!
Reimplemented from ChimeraTK::DummyBackend.
Definition at line 75 of file testSubArrayAccessorDecorator.cc.
| size_t SubArrayDecoratorTestBackend::readCount {0} |
Definition at line 68 of file testSubArrayAccessorDecorator.cc.
| size_t SubArrayDecoratorTestBackend::writeCount {0} |
Definition at line 67 of file testSubArrayAccessorDecorator.cc.