1 #ifndef _ots_FEVInterfacesManager_h_
2 #define _ots_FEVInterfacesManager_h_
9 #include "otsdaq/Configurable/Configurable.h"
10 #include "otsdaq/FECore/FEVInterface.h"
11 #include "otsdaq/FiniteStateMachine/VStateMachine.h"
22 const std::string& supervisorConfigurationPath);
28 void createInterfaces(
void);
32 virtual void halt(
void)
override;
33 virtual void pause(
void)
override;
34 virtual void resume(
void)
override;
35 virtual void start(std::string runNumber)
override;
36 virtual void stop(
void)
override;
39 unsigned int getMinReadyForEventGenerationStartIteration(
void)
const override;
48 const std::string& supervisorLid);
50 const std::string& supervisorName,
51 const std::string& supervisorLid);
53 const std::string& interfaceID,
55 const std::string& inputArgs,
56 std::string& outputArgs);
57 void runFEMacro(
const std::string& interfaceID,
58 const std::string& feMacroName,
59 const std::string& inputArgs,
60 std::string& outputArgs);
61 void runMacro(
const std::string& interfaceID,
62 const std::string& macroObjectString,
63 const std::string& inputArgs,
64 std::string& outputArgs);
66 const std::string& callingInterfaceID,
67 const std::string& interfaceID,
68 const std::string& feMacroName,
69 const std::string& inputArgs,
70 std::string& outputArgs);
72 const std::string& requester,
73 const std::string& interfaceID,
74 const std::string& feMacroName,
75 const bool enableSavingOutput,
76 const std::string& outputFilePath,
77 const std::string& outputFileRadix,
78 const std::string& inputArgs);
80 const std::string& requester,
81 const std::string& interfaceID,
82 const std::string& macroName,
83 const std::string& macroString,
84 const bool enableSavingOutput,
85 const std::string& outputFilePath,
86 const std::string& outputFileRadix,
87 const std::string& inputArgs);
89 const std::string& interfaceID,
90 const std::string& macroName);
93 const std::string& interfaceID);
95 const std::string& interfaceID);
99 const std::map<std::string , std::unique_ptr<FEVInterface> >& getFEInterfaces(
102 return theFEInterfaces_;
111 std::map<std::string , std::queue<std::string > > >
112 frontEndCommunicationReceiveBuffer_;
120 macroMultiDimensionalStatusMap_;
123 std::map<std::string , std::unique_ptr<FEVInterface> > theFEInterfaces_;
124 std::vector<std::string > theFENamesByPriority_;
127 std::map<std::string ,
bool > stateMachinesIterationDone_;
128 unsigned int stateMachinesIterationWorkCount_;
129 unsigned int subIterationWorkStateMachineIndex_;
130 void preStateMachineExecution(
unsigned int i,
const std::string& transitionName);
131 bool postStateMachineExecution(
unsigned int i);
132 void preStateMachineExecutionLoop(
void);
133 void postStateMachineExecutionLoop(
void);
const FEVInterface & getFEInterface(const std::string &interfaceID) const
getFEInterface
std::string getFEMacrosString(const std::string &supervisorName, const std::string &supervisorLid)
used by MacroMaker
std::mutex macroMultiDimensionalDoneMutex_
multi-dimensional FE Macro helpers
FEVInterface * getFEInterfaceP(const std::string &interfaceID)
getFEInterfaceP
void runFEMacro(const std::string &interfaceID, const FEVInterface::frontEndMacroStruct_t &feMacro, const std::string &inputArgs, std::string &outputArgs)
used by MacroMaker and FE calling indirectly
unsigned int getInterfaceUniversalAddressSize(const std::string &interfaceID)
used by MacroMaker
void startFEMacroMultiDimensional(const std::string &requester, const std::string &interfaceID, const std::string &feMacroName, const bool enableSavingOutput, const std::string &outputFilePath, const std::string &outputFileRadix, const std::string &inputArgs)
used by iterator calling (i.e. FESupervisor)
void universalWrite(const std::string &interfaceID, char *address, char *writeValue)
used by MacroMaker
bool allFEWorkloopsAreDone(void)
used by Iterator, e.g.
virtual void configure(void) override
State Machine Methods.
void runFEMacroByFE(const std::string &callingInterfaceID, const std::string &interfaceID, const std::string &feMacroName, const std::string &inputArgs, std::string &outputArgs)
used by FE calling (i.e. FESupervisor)
unsigned int getInterfaceUniversalDataSize(const std::string &interfaceID)
used by MacroMaker
void universalRead(const std::string &interfaceID, char *address, char *returnValue)
used by MacroMaker
virtual std::string getStatusProgressDetail(void) override
overriding VStateMachine::getStatusProgressDetail
void startMacroMultiDimensional(const std::string &requester, const std::string &interfaceID, const std::string ¯oName, const std::string ¯oString, const bool enableSavingOutput, const std::string &outputFilePath, const std::string &outputFileRadix, const std::string &inputArgs)
used by iterator calling (i.e. FESupervisor)
bool checkMacroMultiDimensional(const std::string &interfaceID, const std::string ¯oName)
used by iterator calling (i.e. FESupervisor)
std::mutex frontEndCommunicationReceiveMutex_
FE communication helpers.
void runMacro(const std::string &interfaceID, const std::string ¯oObjectString, const std::string &inputArgs, std::string &outputArgs)
used by MacroMaker
std::string getFEListString(const std::string &supervisorLid)
used by MacroMaker
defines used also by OtsConfigurationWizardSupervisor
< members fully define a front-end macro function