otsdaq  v2_01_00
RunControlStateMachine.h
1 #ifndef _ots_RunControlStateMachine_h_
2 #define _ots_RunControlStateMachine_h_
3 
4 #include "otsdaq-core/FiniteStateMachine/FiniteStateMachine.h"
5 #include "otsdaq-core/ProgressBar/ProgressBar.h"
6 
7 #include "toolbox/lang/Class.h"
8 #include <string>
9 
10 
11 namespace ots
12 {
13 
14 //CoreSupervisorBase
15 //This class provides finite state machine functionality for otsdaq supervisors.
16 class RunControlStateMachine : public virtual toolbox::lang::Class
17 {
18 
19 public:
20 
21  RunControlStateMachine(std::string name="Undefined Name");
22  virtual ~RunControlStateMachine(void);
23 
24  void reset(void);
25  void setStateMachineName(std::string name){stateMachineName_ = name;}
26 
27  //Finite State Machine States
28  //1. Control Configuration and Function Manager are loaded.
29  virtual void stateInitial (toolbox::fsm::FiniteStateMachine& fsm) {;}
30 
31  //1. XDAQ applications are running.
32  //2. Hardware is running.
33  //3. Triggers are accepted.
34  //4. Triggers are not sent.
35  //5. Data is sent / read out.
36  virtual void statePaused (toolbox::fsm::FiniteStateMachine& fsm) {;}
37 
38  //1. XDAQ applications are running.
39  //2. Hardware is running.
40  //3. Triggers are accepted.
41  //4. Triggers are sent.
42  //5. Data is sent / read out.
43  virtual void stateRunning (toolbox::fsm::FiniteStateMachine& fsm) {;}
44 
45  //1. Control hierarchy is instantiated.
46  //2. XDAQ executives are running and configured.
47  //3. XDAQ applications are loaded and instantiated.
48  //4. DCS nodes are allocated.
49  virtual void stateHalted (toolbox::fsm::FiniteStateMachine& fsm) {;}
50 
51  //1. Power supplies are turned off.
52  virtual void stateShutdown (toolbox::fsm::FiniteStateMachine& fsm) {;}
53 
54  //1. XDAQ applications are configured.
55  //2. Run parameters have been distributed.
56  //3. Hardware is configured.
57  //4. I2O connections are established, no data is sent or read out.
58  //5. Triggers are not sent.
59  virtual void stateConfigured (toolbox::fsm::FiniteStateMachine& fsm) {;}
60 
61  virtual void inError (toolbox::fsm::FiniteStateMachine& fsm) {;}
62 
63  virtual void transitionConfiguring (toolbox::Event::Reference e) {;}
64  virtual void transitionHalting (toolbox::Event::Reference e) {;}
65  virtual void transitionShuttingDown(toolbox::Event::Reference e) {;}
66  virtual void transitionStartingUp (toolbox::Event::Reference e) {;}
67  virtual void transitionInitializing(toolbox::Event::Reference e) {;}
68  virtual void transitionPausing (toolbox::Event::Reference e) {;}
69  virtual void transitionResuming (toolbox::Event::Reference e) {;}
70  virtual void transitionStarting (toolbox::Event::Reference e) {;}
71  virtual void transitionStopping (toolbox::Event::Reference e) {;}
72  virtual void enteringError (toolbox::Event::Reference e) {;}
73 
74  //Run Control Messages
75  xoap::MessageReference runControlMessageHandler(xoap::MessageReference message) ;
76 
77  static const std::string FAILED_STATE_NAME;
78 
79 protected:
80  FiniteStateMachine theStateMachine_;
81  ProgressBar theProgressBar_;
82  std::string stateMachineName_;
83 
84 };
85 
86 }
87 
88 #endif
89