otsdaq  v2_01_00
FEVInterfacesManager.h
1 #ifndef _ots_FEVInterfacesManager_h_
2 #define _ots_FEVInterfacesManager_h_
3 
4 //#include "artdaq/Application/MPI2/MPISentry.hh"
5 //#include "artdaq/DAQrate/quiet_mpi.hh"
6 #include "otsdaq-core/FiniteStateMachine/VStateMachine.h"
7 #include "otsdaq-core/Configurable/Configurable.h"
8 
9 #include <map>
10 #include <string>
11 #include <memory>
12 
13 namespace ots
14 {
15 class FEVInterface;
16 
17 //FEVInterfacesManager
18 // This class is a virtual class that handles a collection of front-end interface plugins.
20 {
21 public:
22 
23  FEVInterfacesManager(const ConfigurationTree& theXDAQContextConfigTree, const std::string& supervisorConfigurationPath);
24  virtual ~FEVInterfacesManager(void);
25 
26  //Methods
27  void init (void);
28  void destroy (void);
29  void createInterfaces (void);
30 
31  //State Machine Methods
32  void configure (void);
33  void halt (void);
34  void initialize (void);
35  void pause (void);
36  void resume (void);
37  void start (std::string runNumber);
38  void stop (void);
39 
40 
41 
42  int universalRead (const std::string &interfaceID, char* address, char* returnValue); //used by MacroMaker
43  void universalWrite (const std::string &interfaceID, char* address, char* writeValue); //used by MacroMaker
44  std::string getFEListString (const std::string &supervisorLid); //used by MacroMaker
45  std::string getFEMacrosString (const std::string &supervisorLid); //used by MacroMaker
46  void runFEMacro (const std::string &interfaceID, const std::string &feMacroName, const std::string &inputArgs, std::string &outputArgs); //used by MacroMaker
47  unsigned int getInterfaceUniversalAddressSize (const std::string &interfaceID); //used by MacroMaker
48  unsigned int getInterfaceUniversalDataSize (const std::string &interfaceID); //used by MacroMaker
49  bool allFEWorkloopsAreDone (void); //used by Iterator, e.g.
50 
51  //void progDAC (std::string dacName, std::string rocName="*");
52  //void write (long long address, const std::vector<long long>& data);
53  //void read (long long address, std::vector<long long>& data);
54 // void initHardware (void);
55 
56 
57 
58 protected:
59 // virtual std::unique_ptr<FEVInterface> interpretInterface (
60 // const unsigned int interfaceId,
61 // const std::string typeName, const std::string firmwareName,
62 // const FEInterfaceConfigurationBase* frontEndHardwareConfiguration);
63 
64 private:
65 
66 
67  std::map<std::string /*name*/, std::unique_ptr<FEVInterface> > theFEInterfaces_;
68 
69 };
70 
71 }
72 
73 #endif