1 #ifndef _ots_FEVInterfacesManager_h_
2 #define _ots_FEVInterfacesManager_h_
9 #include "otsdaq-core/Configurable/Configurable.h"
10 #include "otsdaq-core/FECore/FEVInterface.h"
11 #include "otsdaq-core/FiniteStateMachine/VStateMachine.h"
22 const std::string& supervisorConfigurationPath);
28 void createInterfaces(
void);
33 void initialize(
void);
36 void start(std::string runNumber);
39 void universalRead(
const std::string& interfaceID,
42 void universalWrite(
const std::string& interfaceID,
45 std::string getFEListString(
const std::string& supervisorLid);
46 std::string getFEMacrosString(
47 const std::string& supervisorName,
48 const std::string& supervisorLid);
50 const std::string& interfaceID,
52 const std::string& inputArgs,
53 std::string& outputArgs);
54 void runFEMacro(
const std::string& interfaceID,
55 const std::string& feMacroName,
56 const std::string& inputArgs,
57 std::string& outputArgs);
58 void runMacro(
const std::string& interfaceID,
59 const std::string& macroObjectString,
60 const std::string& inputArgs,
61 std::string& outputArgs);
63 const std::string& callingInterfaceID,
64 const std::string& interfaceID,
65 const std::string& feMacroName,
66 const std::string& inputArgs,
67 std::string& outputArgs);
68 void startFEMacroMultiDimensional(
69 const std::string& requester,
70 const std::string& interfaceID,
71 const std::string& feMacroName,
72 const bool enableSavingOutput,
73 const std::string& outputFilePath,
74 const std::string& outputFileRadix,
75 const std::string& inputArgs);
77 const std::string& requester,
78 const std::string& interfaceID,
79 const std::string& macroName,
80 const std::string& macroString,
81 const bool enableSavingOutput,
82 const std::string& outputFilePath,
83 const std::string& outputFileRadix,
84 const std::string& inputArgs);
85 bool checkMacroMultiDimensional(
86 const std::string& interfaceID,
87 const std::string& macroName);
89 unsigned int getInterfaceUniversalAddressSize(
90 const std::string& interfaceID);
91 unsigned int getInterfaceUniversalDataSize(
92 const std::string& interfaceID);
93 bool allFEWorkloopsAreDone(
void);
94 const FEVInterface& getFEInterface(
const std::string& interfaceID)
const;
96 const std::map<std::string , std::unique_ptr<FEVInterface> >& getFEInterfaces(
99 return theFEInterfaces_;
101 FEVInterface* getFEInterfaceP(
const std::string& interfaceID);
104 std::mutex frontEndCommunicationReceiveMutex_;
105 std::map<std::string ,
107 std::map<std::string , std::queue<std::string > > >
108 frontEndCommunicationReceiveBuffer_;
111 std::mutex macroMultiDimensionalDoneMutex_;
112 std::map<std::string ,
115 macroMultiDimensionalStatusMap_;
118 std::map<std::string , std::unique_ptr<FEVInterface> > theFEInterfaces_;
119 std::vector<std::string > theFENamesByPriority_;
122 std::map<std::string ,
bool > stateMachinesIterationDone_;
123 unsigned int stateMachinesIterationWorkCount_;
124 unsigned int subIterationWorkStateMachineIndex_;
125 void preStateMachineExecution(
unsigned int i);
126 bool postStateMachineExecution(
unsigned int i);
127 void preStateMachineExecutionLoop(
void);
128 void postStateMachineExecutionLoop(
void);
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)