ChimeraTK-DeviceAccess  03.18.00
ChimeraTK::async Namespace Reference

Namespaces

 detail
 

Classes

struct  AccessorInstanceDescriptor
 Helper class to have a complete descriton to create an Accessor. More...
 
class  AsyncAccessorManager
 The AsyncAccessorManager has three main functionalities: More...
 
class  AsyncNDRegisterAccessor
 The AsyncNDRegisterAccessor implements a data transport queue with typed data as continuation of the void queue in TransferElement. More...
 
struct  AsyncVariable
 Typeless base class. More...
 
struct  AsyncVariableImpl
 AsyncVariableImpl contains a weak pointer to an AsyncNDRegisterAccessor<UserType> and a send buffer NDRegisterAccessor<UserType>::Buffer. More...
 
class  Domain
 The Domain is the thread-safe entry point for each distribution tree. More...
 
class  DomainImpl
 
class  DomainsContainer
 The DomainsContainer has a container with Domains and is performing actions on all of them. More...
 
class  DummyMuxedInterruptDistributor
 
class  GenericAsyncVariable
 
class  GenericMuxedInterruptDistributor
 
struct  JsonDescriptorKeysV1
 
class  MuxedInterruptDistributor
 Interface base class for interrupt controller handlers. More...
 
class  MuxedInterruptDistributorFactory
 
struct  PolledAsyncVariable
 Implementation of the PolledAsyncVariable for the concrete UserType. More...
 
class  SourceTypedAsyncAccessorManager
 
class  SubDomain
 Send backend-specific asynchronous data to different distributors: More...
 
class  TriggeredPollDistributor
 The TriggeredPollDistributor has std::nullptr_t source data type and is polling the data for the AsyncVariables via synchronous accessors in TransferGroup. More...
 
class  VariableDistributor
 
class  VoidAsyncVariable
 

Typedefs

using JdkV1 = JsonDescriptorKeysV1
 

Enumerations

enum  GmidOptionCode {
  ISR = 0, IER, MER, MIE,
  GIE, ICR, IAR, IPR,
  SIE, CIE, IMaskR, IModeR,
  IVR, ILR, IVAR, IVEAR,
  OPTION_CODE_COUNT, INVALID_OPTION_CODE
}
 

Functions

 DECLARE_TEMPLATE_FOR_CHIMERATK_USER_TYPES (AsyncNDRegisterAccessor)
 
 INSTANTIATE_TEMPLATE_FOR_CHIMERATK_USER_TYPES (AsyncNDRegisterAccessor)
 
boost::bimap< std::string, GmidOptionCodemakeBimap (std::initializer_list< typename boost::bimap< std::string, GmidOptionCode >::value_type > list)
 This is an initializer for a boost::bimap so that it can be produced using nice syntax. More...
 
uint32_t iToMask (const uint32_t ithInterrupt)
 Return a 32 bit mask with the ithInterrupt bit from the left set to 1 and all others 0. More...
 
GmidOptionCode getOptionRegisterEnum (const std::string &opt)
 If the string is not a recognized option code, returns GmidOptionCode::INVALID_OPTION_CODE It is not the job of this function to do any control logic on these code, just convert the strings It uses ChimeraTK::async::GmidOptionCodeMap Example: "ISR" -> GmidOptionCode::ISR Example: "useless" -> GmidOptionCode::INVALID_OPTION_CODE. More...
 
std::string getOptionRegisterStr (GmidOptionCode optCode)
 Given the Register option code enum, returns the corresponding string. More...
 
std::string explainOptCode (GmidOptionCode optCode)
 This returns strings explaining the option code acronyms for use in error messages. More...
 
std::string strSetToStr (const std::set< std::string > &strSet, char delimiter=',')
 The default delimiter is ',' TODO move this to some string helper library. More...
 
std::string intVecToStr (const std::vector< size_t > &intVec, char delimiter=',')
 Return a string describing the intVec of the form "1,2,3" The default delimiter is ',' TODO move this to some string helper library. More...
 
std::string controllerIDToStr (const std::vector< size_t > &controllerID)
 Return a string describing the controllerID of the form "[1,2,3]". More...
 
std::pair< std::bitset< OPTION_CODE_COUNT >, std::string > parseAndValidateJsonDescriptionStrV0 (const std::vector< size_t > &controllerID, const std::string &descriptionJsonStr)
 This extracts and validates data from the json snippet 'descriptorJsonStr' that matches the version 1 format Expect 'descriptionJsonStr' of the form {"path":"APP.INTCB", "options":{"ICR", "IPR", "MER"...}, "version":1} controllerID is used for error reporting only. More...
 
void steriliseOptionRegisterSettings (std::bitset< OPTION_CODE_COUNT > const &optionRegisterSettings, std::vector< size_t > const &controllerID)
 Ensures permissible combinations of option registers by throwing ChimeraTK::logic_error if there are any problems. More...
 
template boost::shared_ptr< AsyncAccessorManagerMuxedInterruptDistributor::getAccessorManager< VariableDistributor< std::nullptr_t > > (std::vector< size_t > const &qualififedSubDomainId)
 

Typedef Documentation

◆ JdkV1

Enumeration Type Documentation

◆ GmidOptionCode

Enumerator
ISR 
IER 
MER 
MIE 
GIE 
ICR 
IAR 
IPR 
SIE 
CIE 
IMaskR 
IModeR 
IVR 
ILR 
IVAR 
IVEAR 
OPTION_CODE_COUNT 
INVALID_OPTION_CODE 

Definition at line 12 of file GenericMuxedInterruptDistributor.h.

Function Documentation

◆ controllerIDToStr()

std::string ChimeraTK::async::controllerIDToStr ( const std::vector< size_t > &  controllerID)

Return a string describing the controllerID of the form "[1,2,3]".

Definition at line 175 of file GenericMuxedInterruptDistributor.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ DECLARE_TEMPLATE_FOR_CHIMERATK_USER_TYPES()

ChimeraTK::async::DECLARE_TEMPLATE_FOR_CHIMERATK_USER_TYPES ( AsyncNDRegisterAccessor  )

◆ explainOptCode()

std::string ChimeraTK::async::explainOptCode ( GmidOptionCode  optCode)

This returns strings explaining the option code acronyms for use in error messages.

Ex: explainOptCode(ISR) ==> "ISR (Interrupt Status Register)"

Definition at line 107 of file GenericMuxedInterruptDistributor.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getOptionRegisterEnum()

GmidOptionCode ChimeraTK::async::getOptionRegisterEnum ( const std::string &  opt)

If the string is not a recognized option code, returns GmidOptionCode::INVALID_OPTION_CODE It is not the job of this function to do any control logic on these code, just convert the strings It uses ChimeraTK::async::GmidOptionCodeMap Example: "ISR" -> GmidOptionCode::ISR Example: "useless" -> GmidOptionCode::INVALID_OPTION_CODE.

Definition at line 78 of file GenericMuxedInterruptDistributor.cc.

+ Here is the caller graph for this function:

◆ getOptionRegisterStr()

std::string ChimeraTK::async::getOptionRegisterStr ( GmidOptionCode  optCode)

Given the Register option code enum, returns the corresponding string.

Definition at line 92 of file GenericMuxedInterruptDistributor.cc.

+ Here is the caller graph for this function:

◆ INSTANTIATE_TEMPLATE_FOR_CHIMERATK_USER_TYPES()

ChimeraTK::async::INSTANTIATE_TEMPLATE_FOR_CHIMERATK_USER_TYPES ( AsyncNDRegisterAccessor  )

◆ intVecToStr()

std::string ChimeraTK::async::intVecToStr ( const std::vector< size_t > &  intVec,
char  delimiter = ',' 
)

Return a string describing the intVec of the form "1,2,3" The default delimiter is ',' TODO move this to some string helper library.

Definition at line 159 of file GenericMuxedInterruptDistributor.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ iToMask()

uint32_t ChimeraTK::async::iToMask ( const uint32_t  ithInterrupt)
inline

Return a 32 bit mask with the ithInterrupt bit from the left set to 1 and all others 0.

Definition at line 65 of file GenericMuxedInterruptDistributor.cc.

+ Here is the caller graph for this function:

◆ makeBimap()

boost::bimap<std::string, GmidOptionCode> ChimeraTK::async::makeBimap ( std::initializer_list< typename boost::bimap< std::string, GmidOptionCode >::value_type >  list)

This is an initializer for a boost::bimap so that it can be produced using nice syntax.

Ex: static const auto OptionCodeMap = makeBimap({ {"SIE", SIE}, {"IER", IER}, ... })

Definition at line 32 of file GenericMuxedInterruptDistributor.cc.

◆ MuxedInterruptDistributor::getAccessorManager< VariableDistributor< std::nullptr_t > >()

template boost::shared_ptr<AsyncAccessorManager> ChimeraTK::async::MuxedInterruptDistributor::getAccessorManager< VariableDistributor< std::nullptr_t > > ( std::vector< size_t > const &  qualififedSubDomainId)

◆ parseAndValidateJsonDescriptionStrV0()

std::pair<std::bitset<OPTION_CODE_COUNT>, std::string> ChimeraTK::async::parseAndValidateJsonDescriptionStrV0 ( const std::vector< size_t > &  controllerID,
const std::string &  descriptionJsonStr 
)

This extracts and validates data from the json snippet 'descriptorJsonStr' that matches the version 1 format Expect 'descriptionJsonStr' of the form {"path":"APP.INTCB", "options":{"ICR", "IPR", "MER"...}, "version":1} controllerID is used for error reporting only.

Returns a pair containing {option flags, registerPath} options flags as a bitset indexed by the GmidOptionCode enum registerPath takes the value keyed in the descriptionJson by JsonDescriptorStandardV0::PATH_JSON_KEY ("path")

Definition at line 189 of file GenericMuxedInterruptDistributor.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ steriliseOptionRegisterSettings()

void ChimeraTK::async::steriliseOptionRegisterSettings ( std::bitset< OPTION_CODE_COUNT > const &  optionRegisterSettings,
std::vector< size_t > const &  controllerID 
)

Ensures permissible combinations of option registers by throwing ChimeraTK::logic_error if there are any problems.

Definition at line 301 of file GenericMuxedInterruptDistributor.cc.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ strSetToStr()

std::string ChimeraTK::async::strSetToStr ( const std::set< std::string > &  strSet,
char  delimiter = ',' 
)

The default delimiter is ',' TODO move this to some string helper library.

Definition at line 141 of file GenericMuxedInterruptDistributor.cc.

+ Here is the caller graph for this function: