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
INITuntil we get geometry - go to
ERRORafter some timeout if we don't get geometry - go to
ERRORin 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:
