Refactoring to shift capture state management to a dedicated state machine. The idea is to separate configuration, state and business logic into separate classes. The goal is to separate state machines making them testable with stand alone test sets:
Capturemodule holds entire configuration of the capture tasks and displays the configuration and the state in the UI
- A state machine that holds all process state information. The state machine listens to events from several sources and changes the state accordingly. Additionally, it offers dedicated actions that triggers change states. All state changes are published as events.
- A command processor that holds all commands that the module may execute: start and stop capture, set filter, set temperature, set rotator angle. Events or actions received by the state machine are translated to commands from the command processor.
- (To be implemented: An orchestrator that defines entire processes and orchestrates them combining state informations from the state machine and execution of commands from the command processor.)
This is the first step meant as a proof of concept.