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

Use geometryState to indicate geometry state

parent 6a73ea3c
No related branches found
No related tags found
2 merge requests!120DetectorAssembler: go to ERROR if trying to match without geometry,!118Draft: MID: put arbiter on manager scene
This commit is part of merge request !120. Comments created here will be created in the context of that merge request.
...@@ -20,7 +20,6 @@ from karabo.bound import ( ...@@ -20,7 +20,6 @@ from karabo.bound import (
ImageData, ImageData,
MetricPrefix, MetricPrefix,
Schema, Schema,
State,
Timestamp, Timestamp,
Trainstamp, Trainstamp,
Unit, Unit,
...@@ -150,6 +149,19 @@ class DetectorAssembler(TrainMatcher.TrainMatcher): ...@@ -150,6 +149,19 @@ class DetectorAssembler(TrainMatcher.TrainMatcher):
.assignmentMandatory() .assignmentMandatory()
.commit(), .commit(),
STRING_ELEMENT(expected)
.key("geometryState")
.displayedName("Geometry state")
.description(
"The assembler needs a detector geometry to function. This is gotten "
"from a geometry device (see the geometryDevice parameter). If this "
"state is ERROR, no assembly will take place - check the geometry "
"device!"
)
.readOnly()
.initialValue("INIT")
.commit(),
STRING_ELEMENT(expected) STRING_ELEMENT(expected)
.key("sourceIndexPattern") .key("sourceIndexPattern")
.displayedName("Source index regex") .displayedName("Source index regex")
...@@ -209,16 +221,16 @@ class DetectorAssembler(TrainMatcher.TrainMatcher): ...@@ -209,16 +221,16 @@ class DetectorAssembler(TrainMatcher.TrainMatcher):
self._geometry = None self._geometry = None
def _on_geometry(geometry): def _on_geometry(geometry):
if self._geometry is None: if self._geometry is None:
# TODO: review with new warning system self.set("geometryState", "ACTIVE")
if hasattr(self, "_state_before_geometry_missing_error"):
self.set("status", "Received geometry!")
self.updateState(self._state_before_geometry_missing_error)
del self._state_before_geometry_missing_error
self._geometry = geometry self._geometry = geometry
self.log.INFO("Received new geometry") self.log.INFO("Received new geometry")
geom_utils.subscribe_to_geometry_bound( geom_utils.subscribe_to_geometry_bound(
self, self.get("geometryDevice"), _on_geometry, warn_fun=self.log.WARN self, self.get("geometryDevice"), _on_geometry
) )
print("done setting up thing", self._geometry)
if self._geometry is None:
# initial get failed
self.set("geometryState", "ERROR")
self.assembled_output = self.signalSlotable.getOutputChannel("assembledOutput") self.assembled_output = self.signalSlotable.getOutputChannel("assembledOutput")
self.start() self.start()
...@@ -362,6 +374,7 @@ class DetectorAssembler(TrainMatcher.TrainMatcher): ...@@ -362,6 +374,7 @@ class DetectorAssembler(TrainMatcher.TrainMatcher):
payload["data"] = scenes.detector_assembler_overview( payload["data"] = scenes.detector_assembler_overview(
device_id=self.getInstanceId(), device_id=self.getInstanceId(),
schema=self.getFullSchema(), schema=self.getFullSchema(),
geometry_device_id=self.get("geometryDevice"),
) )
self.reply( self.reply(
Hash( Hash(
...@@ -376,21 +389,9 @@ class DetectorAssembler(TrainMatcher.TrainMatcher): ...@@ -376,21 +389,9 @@ class DetectorAssembler(TrainMatcher.TrainMatcher):
def on_matched_data(self, train_id, sources): def on_matched_data(self, train_id, sources):
ts_start = default_timer() ts_start = default_timer()
state = self.get("state")
if self._geometry is None: if self._geometry is None:
if not hasattr(self, "_state_before_geometry_missing_error"): # should have already set up warning
self.log.WARN("Have not received a geometry yet, will not send anything")
self.set(
"status",
"Missing geometry, cannot assemble; "
f"check {self.get('geometryDevice')}"
)
if state is not State.ERROR:
self.updateState(State.ERROR)
# set or update
self._state_before_geometry_missing_error = state
return return
my_timestamp = Timestamp(Epochstamp(), Trainstamp(train_id)) my_timestamp = Timestamp(Epochstamp(), Trainstamp(train_id))
......
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