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
00018
00019 class FEVInterfacesManager : public VStateMachine, public Configurable
00020 {
00021 public:
00022
00023 FEVInterfacesManager(const ConfigurationTree& theXDAQContextConfigTree, const std::string& supervisorConfigurationPath);
00024 virtual ~FEVInterfacesManager(void);
00025
00026
00027 void init (void);
00028 void destroy (void);
00029 void createInterfaces (void);
00030
00031
00032 void configure (void);
00033 void halt (void);
00034 void initialize (void);
00035 void pause (void);
00036 void resume (void);
00037 void start (std::string runNumber);
00038 void stop (void);
00039
00040
00041
00042 int universalRead (const std::string &interfaceID, char* address, char* returnValue);
00043 void universalWrite (const std::string &interfaceID, char* address, char* writeValue);
00044 std::string getFEListString (const std::string &supervisorLid);
00045 std::string getFEMacrosString (const std::string &supervisorLid);
00046 void runFEMacro (const std::string &interfaceID, const std::string &feMacroName, const std::string &inputArgs, std::string &outputArgs);
00047 unsigned int getInterfaceUniversalAddressSize (const std::string &interfaceID);
00048 unsigned int getInterfaceUniversalDataSize (const std::string &interfaceID);
00049 bool allFEWorkloopsAreDone (void);
00050
00051
00052
00053
00054
00055
00056
00057
00058 protected:
00059
00060
00061
00062
00063
00064 private:
00065
00066
00067 std::map<std::string , std::unique_ptr<FEVInterface> > theFEInterfaces_;
00068
00069 };
00070
00071 }
00072
00073 #endif