00001
00002
00003
00004
00005
00006
00007
00008 #ifndef HARDWARE_H_
00009 #define HARDWARE_H_
00010 #include "Register.h"
00011 #include <string>
00012 #include <map>
00013 #include <list>
00014
00015 namespace ots {
00016
00017 class Component {
00018 public:
00019 Component(std::string name, std::string typeName = "");
00020 virtual ~Component();
00021 void addRegister (std::string name);
00022 void addRegister (std::string name, std::string baseAddress, int size, std::string access, int globalSequencePosition, int globalValue );
00023 void addRegister (std::string name, std::string baseAddress, int size, std::string access, int initializeSequencePosition, int initializeValue,
00024 int configureSequencePosition, int configureValue );
00025 void addRegister (std::string name, std::string baseAddress, int size, std::string access, int initializeSequencePosition, int initializeValue,
00026 int configureSequencePosition, int configureValue,
00027 int startSequencePosition, int startValue,
00028 int haltSequencePosition, int haltValue,
00029 int pauseSequencePosition, int pauseValue,
00030 int resumeSequencePosition, int resumeValue );
00031 void setState (std::string state, std::pair<int, int> sequenceValuePair );
00032
00033 std::list<Register> getRegisters (void);
00034 std::list<Register>* getRegistersPointer (void);
00035 std::string getComponentName (void);
00036 std::string getTypeName (void);
00037
00038
00039
00040 std::string printPair(std::pair<int, int>);
00041 void printInfo (void);
00042
00043
00044 protected:
00045 std::list<Register> registers_ ;
00046 std::string componentName_ ;
00047 std::string typeName_ ;
00048
00049
00050
00051 };
00052
00053 }
00054
00055 #endif