NSCL DDAS  12.1-001
Support for XIA DDAS at FRIB
Configuration.h
Go to the documentation of this file.
1 
6 #ifndef CONFIGURATION_H
7 #define CONFIGURATION_H
8 
9 #include <string>
10 #include <vector>
11 #include <map>
12 #include <iosfwd>
13 #include <memory>
14 
15 #include "HardwareRegistry.h"
16 
18 namespace DAQ {
20  namespace DDAS {
21 
42  {
44  std::string s_ComFPGAConfigFile;
46  std::string s_SPFPGAConfigFile;
47  std::string s_DSPCodeFile;
48  std::string s_DSPVarFile;
49  };
50 
56  typedef std::map<int, FirmwareConfiguration> FirmwareMap;
57 
81  {
82  private:
83  int m_crateId;
84  std::vector<unsigned short> m_slotMap;
85  std::string m_settingsFilePath;
86  std::vector<int> m_modEvtLengths;
87  FirmwareMap m_fwMap;
88  std::vector<int> m_hardwareMap;
89 
90  // These additions support per module firmware maps and .set files:
91 
93  std::map<int, FirmwareMap> m_moduleFirmwareMaps;
95  std::map<int, std::string> m_moduleSetFileMap;
96 
97  public:
99  Configuration() = default;
102  m_crateId(rhs.m_crateId), m_slotMap(rhs.m_slotMap),
103  m_settingsFilePath(rhs.m_settingsFilePath),
104  m_modEvtLengths(rhs.m_modEvtLengths),
105  m_fwMap(rhs.m_fwMap), m_hardwareMap(rhs.m_hardwareMap),
106  m_moduleFirmwareMaps(rhs.m_moduleFirmwareMaps),
107  m_moduleSetFileMap(rhs.m_moduleSetFileMap)
108  {}
110  ~Configuration() = default;
115  void setCrateId(int id) { m_crateId = id; };
120  int getCrateId() const { return m_crateId; };
125  void setNumberOfModules(size_t size);
130  size_t getNumberOfModules() const { return m_slotMap.size(); };
137  void setSlotMap(const std::vector<unsigned short>& map);
143  std::vector<unsigned short> getSlotMap()
144  const { return m_slotMap; };
149  void setSettingsFilePath(const std::string& path)
150  { m_settingsFilePath = path; };
157  int modnum, const std::string& path
158  );
163  std::string getSettingsFilePath()
164  const { return m_settingsFilePath; };
171  std::string getSettingsFilePath(int modNum);
182  int specifier, const FirmwareConfiguration &config
183  ) { m_fwMap[specifier] = config; };
199  void setModuleFirmwareMap(int module, const FirmwareMap& mapping);
209  int hdwrType, int modnum
210  );
215  FirmwareMap& getDefaultFirmwareMap() { return m_fwMap; }
222  void setModuleEventLengths(const std::vector<int>& lengths);
227  std::vector<int> getModuleEventLengths()
228  const { return m_modEvtLengths; };
235  void setHardwareMap(const std::vector<int>& map);
240  std::vector<int> getHardwareMap() const { return m_hardwareMap; };
245  void print(std::ostream& stream);
255  static std::unique_ptr<Configuration>
256  generate(
257  const std::string& fwVsnPath, const std::string& cfgPixiePath
258  );
269  static std::unique_ptr<Configuration>
270  generate(
271  const std::string& fwVsnPath, const std::string& cfgPixiePath,
272  const std::string& modEvtLenPath
273  );
274  };
275 
278  } // end DDAS namespace
279 } // end DAQ namesapce
280 
281 #endif // CONFIGURATION_H
Defines a namespace used to store information about known DDAS modules.
Store the system configuration information needed by Readout.
Definition: Configuration.h:81
std::string getSettingsFilePath() const
Return the path to the .set file.
Definition: Configuration.h:163
void print(std::ostream &stream)
Print brief line of information for cfgPixie16.txt.
Definition: Configuration.cpp:189
std::vector< unsigned short > getSlotMap() const
Return the vector containing the filled slots.
Definition: Configuration.h:143
void setModuleFirmwareMap(int module, const FirmwareMap &mapping)
Sets a firmware map specific to a module.
Definition: Configuration.cpp:105
std::vector< int > getModuleEventLengths() const
Return a copy of the module event length vector.
Definition: Configuration.h:227
Configuration(const Configuration &rhs)
Copy constructor.
Definition: Configuration.h:101
void setFirmwareConfiguration(int specifier, const FirmwareConfiguration &config)
Set the firmware configuration for a hardware type.
Definition: Configuration.h:181
void setSettingsFilePath(const std::string &path)
Set the path to the DSP settings file.
Definition: Configuration.h:149
~Configuration()=default
Destructor.
FirmwareMap & getDefaultFirmwareMap()
Return the default map of firmware information.
Definition: Configuration.h:215
FirmwareConfiguration & getModuleFirmwareConfiguration(int hdwrType, int modnum)
Get the module firmware configuration information.
Definition: Configuration.cpp:119
size_t getNumberOfModules() const
Return the number of modules in the crate.
Definition: Configuration.h:130
FirmwareConfiguration & getFirmwareConfiguration(int hdwrType)
Retrieve the current firmware specifier for a particular hardware type.
Definition: Configuration.cpp:88
void setHardwareMap(const std::vector< int > &map)
Set the hardware map for each module.
Definition: Configuration.cpp:170
void setNumberOfModules(size_t size)
Set the number of modules in the crate.
Definition: Configuration.cpp:22
void setModuleSettingsFilePath(int modnum, const std::string &path)
Set a per-module DSP settings file.
Definition: Configuration.cpp:62
void setModuleEventLengths(const std::vector< int > &lengths)
Set the lengths of events for each module.
Definition: Configuration.cpp:146
void setSlotMap(const std::vector< unsigned short > &map)
Assign a new slot map.
Definition: Configuration.cpp:45
Configuration()=default
Constructor.
void setCrateId(int id)
Set the crate id for the module.
Definition: Configuration.h:115
int getCrateId() const
Return the crate id value.
Definition: Configuration.h:120
std::vector< int > getHardwareMap() const
Return a copy of the hardware map vector.
Definition: Configuration.h:240
static std::unique_ptr< Configuration > generate(const std::string &fwVsnPath, const std::string &cfgPixiePath)
Generate a Configuration class object from a firmware version file and cfgPixie16....
Definition: Configuration.cpp:205
std::map< int, FirmwareConfiguration > FirmwareMap
A map of firmware configurations keyed by the hardware type defined in HardwareRegistry....
Definition: Configuration.h:56
Storage for hardware-type firmware/settings paths.
Definition: Configuration.h:42
std::string s_SPFPGAConfigFile
Definition: Configuration.h:46
std::string s_DSPCodeFile
Name of executable DSP code file.
Definition: Configuration.h:47
std::string s_ComFPGAConfigFile
Definition: Configuration.h:44
std::string s_DSPVarFile
Name of DSP variable names file.
Definition: Configuration.h:48