00001 #ifndef _ots_FEVInterfacesManager_h_
00002 #define _ots_FEVInterfacesManager_h_
00003
00004
00005
00006 #include "otsdaq-core/FiniteStateMachine/VStateMachine.h"
00007 #include "otsdaq-core/Configurable/Configurable.h"
00008
00009 #include <map>
00010 #include <string>
00011 #include <memory>
00012
00013 namespace ots
00014 {
00015 class FEVInterface;
00016
00017 class FEVInterfacesManager : public VStateMachine, public Configurable
00018 {
00019 public:
00020
00021 FEVInterfacesManager(const ConfigurationTree& theXDAQContextConfigTree, const std::string& supervisorConfigurationPath);
00022 virtual ~FEVInterfacesManager(void);
00023
00024
00025 void init (void);
00026 void destroy (void);
00027 void createInterfaces (void);
00028
00029
00030 void configure (void);
00031 void halt (void);
00032 void initialize (void);
00033 void pause (void);
00034 void resume (void);
00035 void start (std::string runNumber);
00036 void stop (void);
00037
00038
00039
00040 int universalRead (const std::string &interfaceID, char* address, char* returnValue);
00041 void universalWrite (const std::string &interfaceID, char* address, char* writeValue);
00042 std::string getFEListString (const std::string &supervisorLid);
00043 std::string getFEMacrosString (const std::string &supervisorLid);
00044 void runFEMacro (const std::string &interfaceID, const std::string &feMacroName, const std::string &inputArgs, std::string &outputArgs);
00045 unsigned int getInterfaceUniversalAddressSize (const std::string &interfaceID);
00046 unsigned int getInterfaceUniversalDataSize (const std::string &interfaceID);
00047 bool allFEWorkloopsAreDone (void);
00048
00049
00050
00051
00052
00053
00054
00055
00056 protected:
00057
00058
00059
00060
00061
00062 private:
00063
00064
00065 std::map<std::string , std::unique_ptr<FEVInterface> > theFEInterfaces_;
00066
00067 };
00068
00069 }
00070
00071 #endif