DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
database.py
Go to the documentation of this file.
1import collections
2import itertools
3
4kSSPAddresses = {
5 (0,5): list(range(0x20, 0x24)), # APA1 ssp101 to 104
6 (0,6): list(range(0x24, 0x28)), # APA2
7 (0,1): list(range(0x28, 0x2c)), # APA3
8 (0,2): list(range(0x2c, 0x30)), # APA4
9 (0,4): list(range(0x30, 0x34)), # APA5
10 (0,3): list(range(0x34, 0x38)), # APA6
11}
12
13kWibAddresses = {
14 (0,5): list(range(0x45, 0x4a)), # APA1
15 (0,6): list(range(0x4a, 0x4f)), # APA2
16 (0,1): list(range(0x4f, 0x54)), # APA3
17 (0,2): list(range(0x54, 0x59)), # APA4
18 (0,4): list(range(0x59, 0x5e)), # APA5
19 (0,3): list(range(0x5e, 0x63)), # APA6
20}
21
22kAddressToSlot = {}
23for addrgrp in [kSSPAddresses, kWibAddresses]:
24 for slot, addrlist in addrgrp.items():
25 kAddressToSlot.update({addr:slot for addr in addrlist})
26
27
28
29
30"""
31Entry:
32common name, taddr, fanout, slot
33'ssp101': (0x20, 0, 5)
34
35
36"""
37
38def __genRange( aNum, aGrp, aBaseName, aBaseId, aBaseTAddr, aFanout, aSlot ):
39 return { '{}{}'.format(aBaseName, aBaseId+i+1):(aGrp, aBaseTAddr+i, aFanout, aSlot) for i in range(0,aNum) }
40
41
42__db__ = {}
43
44# Add the SSPs
45__db__.update(__genRange(4, 'ssp', 'ssp', 100, 0x20, 0, 5) )
46__db__.update(__genRange(4, 'ssp', 'ssp', 200, 0x24, 0, 6) )
47__db__.update(__genRange(4, 'ssp', 'ssp', 300, 0x28, 0, 1) )
48__db__.update(__genRange(4, 'ssp', 'ssp', 400, 0x2c, 0, 2) )
49__db__.update(__genRange(4, 'ssp', 'ssp', 500, 0x30, 0, 4) )
50__db__.update(__genRange(4, 'ssp', 'ssp', 600, 0x34, 0, 3) )
51
52# Add the WIBs
53__db__.update(__genRange(5, 'wib', 'wib', 100, 0x45, 0, 5) )
54__db__.update(__genRange(5, 'wib', 'wib', 200, 0x4a, 0, 6) )
55__db__.update(__genRange(5, 'wib', 'wib', 300, 0x4f, 0, 1) )
56__db__.update(__genRange(5, 'wib', 'wib', 400, 0x54, 0, 2) )
57__db__.update(__genRange(5, 'wib', 'wib', 500, 0x59, 0, 4) )
58__db__.update(__genRange(5, 'wib', 'wib', 600, 0x5e, 0, 3) )
59
60# Vst
61__db__['ssp003'] = ('vst', 0xc0, 0, 7)
62
64 return __db__
65
66
67# for x in sorted(__db__):
68# print x,__db__[x]
69
70# for x in itertools.chain.from_iterable(__db__.itervalues()):
71 # print x
72# ------------------------------------------------------------------------------
73def findByUId( uid ):
74 entry = __db__.get(uid, None)
75 return (uid,)+entry if entry is not None else None
76# ------------------------------------------------------------------------------
77
78
79# ------------------------------------------------------------------------------
80def findByTAddr( taddr ):
81 uid = next( ( k for k,(_, ta, _, _) in __db__.items() if taddr == ta ), None )
82
83 return findByUId(uid) if uid is not None else None
84# ------------------------------------------------------------------------------
85
86
87# ------------------------------------------------------------------------------
88def findByGrp( aGrp ):
89 return [ (k,)+(grp, taddr, fanout, slot) for k,(grp, taddr, fanout, slot) in __db__.items() if grp == aGrp]
90# ------------------------------------------------------------------------------
91
__genRange(aNum, aGrp, aBaseName, aBaseId, aBaseTAddr, aFanout, aSlot)
Definition database.py:38