1 #ifndef _ots_FEVInterfacesManager_h_
2 #define _ots_FEVInterfacesManager_h_
10 #include "otsdaq/Configurable/Configurable.h"
11 #include "otsdaq/FECore/FEVInterface.h"
12 #include "otsdaq/FiniteStateMachine/VStateMachine.h"
23 const std::string& supervisorConfigurationPath);
29 void createInterfaces(
void);
33 virtual void halt(
void)
override;
34 virtual void pause(
void)
override;
35 virtual void resume(
void)
override;
36 virtual void start(std::string runNumber)
override;
37 virtual void stop(
void)
override;
40 unsigned int getMinReadyForEventGenerationStartIteration(
void)
const override;
49 const std::string& supervisorLid);
51 const std::string& supervisorName,
52 const std::string& supervisorLid);
54 const std::string& interfaceID,
55 const std::string& feMacroName,
56 const std::string& inputArgs);
58 const std::string& interfaceID,
60 const std::string& inputArgs,
61 std::string& outputArgs);
62 void runFEMacro(
const std::string& interfaceID,
63 const std::string& feMacroName,
64 const std::string& inputArgs,
65 std::string& outputArgs);
66 void runMacro(
const std::string& interfaceID,
67 const std::string& macroObjectString,
68 const std::string& inputArgs,
69 std::string& outputArgs);
71 const std::string& callingInterfaceID,
72 const std::string& interfaceID,
73 const std::string& feMacroName,
74 const std::string& inputArgs,
75 std::string& outputArgs);
77 const std::string& requester,
78 const std::string& interfaceID,
79 const std::string& feMacroName,
80 const bool enableSavingOutput,
81 const std::string& outputFilePath,
82 const std::string& outputFileRadix,
83 const std::string& inputArgs);
85 const std::string& requester,
86 const std::string& interfaceID,
87 const std::string& macroName,
88 const std::string& macroString,
89 const bool enableSavingOutput,
90 const std::string& outputFilePath,
91 const std::string& outputFileRadix,
92 const std::string& inputArgs);
94 const std::string& interfaceID,
95 const std::string& macroName,
96 std::string* outputFile =
nullptr);
99 const std::string& interfaceID);
101 const std::string& interfaceID);
105 const std::map<std::string , std::unique_ptr<FEVInterface> >& getFEInterfaces(
108 return theFEInterfaces_;
117 std::map<std::string , std::queue<std::string > > >
118 frontEndCommunicationReceiveBuffer_;
126 macroMultiDimensionalStatusMap_;
127 std::map<std::string , std::string >
131 std::map<std::string , std::unique_ptr<FEVInterface> > theFEInterfaces_;
132 std::vector<std::string > theFENamesByPriority_;
135 std::map<std::string ,
bool > stateMachinesIterationDone_;
136 std::set<std::string > stateMachinesWaitingSubsystemIteration_;
137 unsigned int lastSubsystemIterationIndexSeen_ = 0;
138 unsigned int stateMachinesIterationWorkCount_;
139 unsigned int subIterationWorkStateMachineIndex_;
140 void preStateMachineExecution(
unsigned int i,
const std::string& transitionName);
141 bool postStateMachineExecution(
unsigned int i);
142 void preStateMachineExecutionLoop(
void);
143 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.
std::map< std::string, std::string > macroMultiDimensionalOutputFileMap_
set when saving outputs; guarded by macroMultiDimensionalDoneMutex_
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)
bool checkMacroMultiDimensional(const std::string &interfaceID, const std::string ¯oName, std::string *outputFile=nullptr)
used by iterator calling (i.e. FESupervisor); on Done, outputFile receives the saved-output path ("" ...
unsigned int getInterfaceUniversalDataSize(const std::string &interfaceID)
used by MacroMaker
void universalRead(const std::string &interfaceID, char *address, char *returnValue)
used by MacroMaker
std::map< std::string, std::string > getFEMacroInputDefaults(const std::string &interfaceID, const std::string &feMacroName, const std::string &inputArgs)
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)
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