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;
48 const std::string& supervisorName,
49 const std::string& supervisorLid);
51 const std::string& interfaceID,
53 const std::string& inputArgs,
54 std::string& outputArgs);
55 void runFEMacro(
const std::string& interfaceID,
56 const std::string& feMacroName,
57 const std::string& inputArgs,
58 std::string& outputArgs);
59 void runMacro(
const std::string& interfaceID,
60 const std::string& macroObjectString,
61 const std::string& inputArgs,
62 std::string& outputArgs);
64 const std::string& callingInterfaceID,
65 const std::string& interfaceID,
66 const std::string& feMacroName,
67 const std::string& inputArgs,
68 std::string& outputArgs);
70 const std::string& requester,
71 const std::string& interfaceID,
72 const std::string& feMacroName,
73 const bool enableSavingOutput,
74 const std::string& outputFilePath,
75 const std::string& outputFileRadix,
76 const std::string& inputArgs);
78 const std::string& requester,
79 const std::string& interfaceID,
80 const std::string& macroName,
81 const std::string& macroString,
82 const bool enableSavingOutput,
83 const std::string& outputFilePath,
84 const std::string& outputFileRadix,
85 const std::string& inputArgs);
87 const std::string& interfaceID,
88 const std::string& macroName);
91 const std::string& interfaceID);
93 const std::string& interfaceID);
97 const std::map<std::string , std::unique_ptr<FEVInterface> >& getFEInterfaces(
100 return theFEInterfaces_;
106 std::map<std::string ,
108 std::map<std::string , std::queue<std::string > > >
109 frontEndCommunicationReceiveBuffer_;
113 std::map<std::string ,
116 macroMultiDimensionalStatusMap_;
119 std::map<std::string , std::unique_ptr<FEVInterface> > theFEInterfaces_;
120 std::vector<std::string > theFENamesByPriority_;
123 std::map<std::string ,
bool > stateMachinesIterationDone_;
124 unsigned int stateMachinesIterationWorkCount_;
125 unsigned int subIterationWorkStateMachineIndex_;
126 void preStateMachineExecution(
unsigned int i,
const std::string& transitionName);
127 bool postStateMachineExecution(
unsigned int i);
128 void preStateMachineExecutionLoop(
void);
129 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