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;
47 const std::string& supervisorLid);
49 const std::string& supervisorName,
50 const std::string& supervisorLid);
52 const std::string& interfaceID,
54 const std::string& inputArgs,
55 std::string& outputArgs);
56 void runFEMacro(
const std::string& interfaceID,
57 const std::string& feMacroName,
58 const std::string& inputArgs,
59 std::string& outputArgs);
60 void runMacro(
const std::string& interfaceID,
61 const std::string& macroObjectString,
62 const std::string& inputArgs,
63 std::string& outputArgs);
65 const std::string& callingInterfaceID,
66 const std::string& interfaceID,
67 const std::string& feMacroName,
68 const std::string& inputArgs,
69 std::string& outputArgs);
71 const std::string& requester,
72 const std::string& interfaceID,
73 const std::string& feMacroName,
74 const bool enableSavingOutput,
75 const std::string& outputFilePath,
76 const std::string& outputFileRadix,
77 const std::string& inputArgs);
79 const std::string& requester,
80 const std::string& interfaceID,
81 const std::string& macroName,
82 const std::string& macroString,
83 const bool enableSavingOutput,
84 const std::string& outputFilePath,
85 const std::string& outputFileRadix,
86 const std::string& inputArgs);
88 const std::string& interfaceID,
89 const std::string& macroName);
92 const std::string& interfaceID);
94 const std::string& interfaceID);
98 const std::map<std::string , std::unique_ptr<FEVInterface> >& getFEInterfaces(
101 return theFEInterfaces_;
110 std::map<std::string , std::queue<std::string > > >
111 frontEndCommunicationReceiveBuffer_;
119 macroMultiDimensionalStatusMap_;
122 std::map<std::string , std::unique_ptr<FEVInterface> > theFEInterfaces_;
123 std::vector<std::string > theFENamesByPriority_;
126 std::map<std::string ,
bool > stateMachinesIterationDone_;
127 unsigned int stateMachinesIterationWorkCount_;
128 unsigned int subIterationWorkStateMachineIndex_;
129 void preStateMachineExecution(
unsigned int i,
const std::string& transitionName);
130 bool postStateMachineExecution(
unsigned int i);
131 void preStateMachineExecutionLoop(
void);
132 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
< members fully define a front-end macro function