otsdaq  v2_04_01
Component.h
1 /*
2  * Component.h
3  *
4  * Created on: Aug 3, 2015
5  * Author: parilla
6  */
7 
8 #ifndef HARDWARE_H_
9 #define HARDWARE_H_
10 #include <list>
11 #include <map>
12 #include <string>
13 #include "Register.h"
14 
15 namespace ots
16 {
17 class Component
18 {
19  public:
20  Component(std::string name, std::string typeName = "");
21  virtual ~Component();
22  void addRegister(std::string name);
23  void addRegister(std::string name,
24  std::string baseAddress,
25  int size,
26  std::string access,
27  int globalSequencePosition,
28  int globalValue);
29  void addRegister(std::string name,
30  std::string baseAddress,
31  int size,
32  std::string access,
33  int initializeSequencePosition,
34  int initializeValue,
35  int configureSequencePosition,
36  int configureValue);
37  void addRegister(std::string name,
38  std::string baseAddress,
39  int size,
40  std::string access,
41  int initializeSequencePosition,
42  int initializeValue,
43  int configureSequencePosition,
44  int configureValue,
45  int startSequencePosition,
46  int startValue,
47  int haltSequencePosition,
48  int haltValue,
49  int pauseSequencePosition,
50  int pauseValue,
51  int resumeSequencePosition,
52  int resumeValue);
53  void setState(std::string state, std::pair<int, int> sequenceValuePair);
54  // Getters
55  std::list<Register> getRegisters(void);
56  std::list<Register>* getRegistersPointer(void);
57  std::string getComponentName(void);
58  std::string getTypeName(void);
59 
60  // Print
61  std::string printPair(std::pair<int, int>);
62  void printInfo(void);
63 
64  protected:
65  std::list<Register> registers_;
66  std::string componentName_;
67  std::string typeName_;
68  // Register* tempRegister_ ;
69 };
70 
71 } // namespace ots
72 
73 #endif /* HARDWARE_H_ */