DetectorAssembler: go to ERROR if trying to match without geometry
#48 (closed) this came up again recently, let's do something about it.
- geometry is a property again, so if geometry device is up, we don't even need to wait for signal to get it
- DRY a bit by putting utility to get property + connect to signal in
calngUtils
- start warning harder if no geometry
Options:
- stay in
INIT
until we get geometry - go to
ERROR
after some timeout if we don't get geometry - go to
ERROR
in match handler if we don't have geometry by the time we need it (current implementation)
As the diff shows, at least for option 3, we need to fight the TrainMatcher
state logic a bit; it's going from PASSIVE
to CHANGING
to ACTIVE
outside of the methods we're currently overriding.
State transitions for an assembler started while geometry device is down and then geometry device comes up later:
Merge request reports
Activity
assigned to @hammerd
Will propagate callback to correction addons to handle #51 (closed). And arbiter kernels probably; haven't even thought to make issue about that, but same thing applies.
So if geometry device is up when assembler comes up:
sequenceDiagram DetectorAssembler->>GeometryDevice: What's your current geometry? GeometryDevice->>DetectorAssembler: Here it is! DetectorAssembler->>GeometryDevice: Cool, please send me signal if it changes! Note over DetectorAssembler, GeometryDevice: Time passes GeometryDevice->>DetectorAssembler: Signal time, there's a new geometry!
If not, the initial getting fails. Subscribing to the slot still works, though. And geometry device sends signal after it comes up.
added 1 commit
- 6a73ea3c - Manager no longer needs to worry about sendGeometry
added 2 commits
mentioned in commit cf5eece4