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: