DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
timing.shells.factory.ShellFactory Class Reference
Inheritance diagram for timing.shells.factory.ShellFactory:
[legend]
Collaboration diagram for timing.shells.factory.ShellFactory:
[legend]

Public Member Functions

 registerBoard (cls, aId, aCls)
 
 registerDesign (cls, aId, aCls)
 
 make (cls, device)
 
 makeBoardShell (cls, boardType)
 
 makeDesignShell (cls, designType)
 

Public Attributes

 device = device
 
 info = ShellContext()
 

Private Attributes

 __class__
 

Static Private Attributes

dict __factoryregister__
 

Detailed Description

docstring for Factory

Definition at line 13 of file factory.py.

Member Function Documentation

◆ make()

timing.shells.factory.ShellFactory.make ( cls,
device )

Definition at line 36 of file factory.py.

36 def make(cls, device):
37 lBoardInfo = toolbox.readSubNodes(device.getNode('io.config'), False)
38 device.dispatch()
39 boardType = lBoardInfo['board_type'].value()
40 carrierType = lBoardInfo['carrier_type'].value()
41 designType = lBoardInfo['design_type'].value()
42
43 boardcls = cls.makeBoardShell(boardType)
44 designcls = cls.makeBoardShell(designType)
45
46 if not boardcls:
47 raise RuntimeError('Device '+device.id()+': Unknown board type')
48 if not designcls:
49 raise RuntimeError('Device '+device.id()+': Unknown design type')
50
51 def ctor(self, device, boardType, carrierType, designType):
52
53 self.device = device
54 self.info = ShellContext()
55 self.info.boardType = boardType
56 self.info.carrierType = carrierType
57 self.info.designType = designType
58
59 super(self.__class__, self).__init__()
60
61 # lCls = classmaker()(device.id(), (boardcls, designcls), {'__init__':ctor})
62 lCls = type(device.id(), (boardcls, designcls), {'__init__':ctor})
63
64 return lCls(device, boardType, carrierType, designType)
65

◆ makeBoardShell()

timing.shells.factory.ShellFactory.makeBoardShell ( cls,
boardType )

Definition at line 67 of file factory.py.

67 def makeBoardShell(cls, boardType):
68 return cls.__factoryregister__.get('board').get(boardType,None)
69

◆ makeDesignShell()

timing.shells.factory.ShellFactory.makeDesignShell ( cls,
designType )

Definition at line 71 of file factory.py.

71 def makeDesignShell(cls, designType):
72 return cls.__factoryregister__.get('design').get(designType,None)
73# ------------------------------------------------------------------------------

◆ registerBoard()

timing.shells.factory.ShellFactory.registerBoard ( cls,
aId,
aCls )

Definition at line 22 of file factory.py.

22 def registerBoard(cls, aId, aCls):
23 if aId in cls.__factoryregister__['board']:
24 raise RuntimeError('Board '+aId+' already registered')
25
26 cls.__factoryregister__['board'][aId] = aCls
27

◆ registerDesign()

timing.shells.factory.ShellFactory.registerDesign ( cls,
aId,
aCls )

Definition at line 29 of file factory.py.

29 def registerDesign(cls, aId, aCls):
30 if aId in cls.__factoryregister__['design']:
31 raise RuntimeError('Design '+aId+' already registered')
32
33 cls.__factoryregister__['design`'][aId] = aCls
34

Member Data Documentation

◆ __class__

timing.shells.factory.ShellFactory.__class__
private

Definition at line 59 of file factory.py.

◆ __factoryregister__

dict timing.shells.factory.ShellFactory.__factoryregister__
staticprivate
Initial value:
= {
'board': {},
'design': {},
}

Definition at line 16 of file factory.py.

◆ device

timing.shells.factory.ShellFactory.device = device

Definition at line 53 of file factory.py.

◆ info

timing.shells.factory.ShellFactory.info = ShellContext()

Definition at line 54 of file factory.py.


The documentation for this class was generated from the following file: