Skip to content
Snippets Groups Projects
Commit 810047ae authored by David Hammer's avatar David Hammer
Browse files

Add shmem-aware TrainMatcher, clean up more from merging bridge

parent 100581b4
No related branches found
No related tags found
1 merge request!12Snapshot: field test deployed version as of end of run 202201
......@@ -32,6 +32,7 @@ setup(name='calng',
'ManualDsscGeometry = calng.ManualDsscGeometry:ManualDsscGeometry',
'ManualJungfrauGeometry = calng.ManualJungfrauGeometry:ManualJungfrauGeometry',
'ShmemToZMQ = calng.ShmemToZMQ:ShmemToZMQ',
'ShmemTrainMatcher = calng.ShmemTrainMatcher:ShmemTrainMatcher',
'DetectorAssembler = calng.DetectorAssembler:DetectorAssembler',
],
......
......@@ -71,15 +71,7 @@ class ClassIdsNode(Configurable):
displayedName='Group matcher class',
description='Device class to use for matching the stream output of a '
'module group.',
defaultValue='TrainMatcher',
accessMode=AccessMode.INITONLY,
assignment=Assignment.MANDATORY)
bridgeClass = String(
displayedName='Bridge class',
description='Device class to use for bridging the stream output out '
'of Karabo.',
defaultValue='ShmemToZmq',
defaultValue='ShmemTrainMatcher',
accessMode=AccessMode.INITONLY,
assignment=Assignment.MANDATORY)
......@@ -110,14 +102,6 @@ class DeviceIdsNode(Configurable):
accessMode=AccessMode.INITONLY,
assignment=Assignment.MANDATORY)
bridgeSuffix = String(
displayedName='Bridge suffix',
description='Suffix for group bridge device IDs. The formatting '
'placeholder \'group\' may be used.',
defaultValue='BRIDGE_G{group}',
accessMode=AccessMode.INITONLY,
assignment=Assignment.MANDATORY)
assemblerSuffix = String(
displayedName='Assembler suffix',
description='Suffix for assembler device IDs. The formatting '
......@@ -1209,8 +1193,7 @@ class CalibrationManager(DeviceClientBase, Device):
device_id_templates = {}
class_args = (self.detectorType.value.lower().capitalize(),)
for role in ['correction', 'groupMatcher', 'bridge',
'assembler']:
for role in ['correction', 'groupMatcher', 'assembler']:
class_ids[role] = getattr(
self.classIds, f'{role}Class').value.format(*class_args)
device_id_templates[role] = f'{self._device_id_root}/' + \
......
from karabo.bound import KARABO_CLASSINFO
from TrainMatcher import TrainMatcher
from . import shmem_utils
from ._version import version as deviceVersion
@KARABO_CLASSINFO("ShmemTrainMatcher", deviceVersion)
class ShmemTrainMatcher(TrainMatcher.TrainMatcher):
def initialization(self):
super().initialization()
self._shmem_handler = shmem_utils.ShmemCircularBufferReceiver()
def on_matched_data(self, train_id, sources):
for source, (data, timestamp) in sources.items():
if data.has("calngShmemPaths"):
shmem_paths = list(data["calngShmemPaths"])
data.erase("calngShmemPaths")
for shmem_path in shmem_paths:
if not data.has(shmem_path):
self.log.INFO(f"Hash from {source} did not have {shmem_path}")
continue
dereferenced = self._shmem_handler.get(data[shmem_path])
data[shmem_path] = dereferenced
super().on_matched_data(train_id, sources)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment