00001 #ifndef RXTHRESHOLDBASEDONCONFIGREGISTERTESTRESULT_H 00002 #define RXTHRESHOLDBASEDONCONFIGREGISTERTESTRESULT_H 00003 00004 #include "TestResult.h" 00005 #include "Sct/RangedVector.h" 00006 00007 namespace SctData{ 00012 class RxThresholdBasedOnConfigRegisterTestResult : public TestResult { 00013 public: 00014 RxThresholdBasedOnConfigRegisterTestResult() throw(); 00015 00019 RxThresholdBasedOnConfigRegisterTestResult(unsigned int runNumber, const string& moduleName) throw(); 00020 00024 virtual ~RxThresholdBasedOnConfigRegisterTestResult() throw(); 00025 00026 //Override 00027 virtual string getClassName() const throw(); 00028 00029 class StreamResult { 00030 public: 00031 typedef int ThresholdType; 00032 StreamResult() { 00033 setInvalid(); 00034 } 00035 void setInvalid() { 00036 m_minErrorFreeRxThresh = NOT_YET_SET_OR_INVALID; 00037 m_maxErrorFreeRxThresh = NOT_YET_SET_OR_INVALID; 00038 m_bestRxThresh = NOT_YET_SET_OR_INVALID; 00039 }; 00040 int minErrorFreeRxThresh() const { return m_minErrorFreeRxThresh; }; 00041 int maxErrorFreeRxThresh() const { return m_maxErrorFreeRxThresh; }; 00042 int bestRxThresh() const { return m_bestRxThresh; }; 00043 int getRiseTime() const { return m_riseTime; }; 00044 void setMinErrorFreeRxThresh(int val) { 00045 m_minErrorFreeRxThresh = (this->isAllowableRxThreshPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID; 00046 }; 00047 void setMaxErrorFreeRxThresh(int val) { 00048 m_maxErrorFreeRxThresh = (this->isAllowableRxThreshPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID; 00049 }; 00050 void setBestRxThresh(int val) { 00051 m_bestRxThresh = (this->isAllowableRxThreshPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID; 00052 }; 00053 void setRiseTime(int val) { 00054 m_riseTime = val; 00055 }; 00056 private: 00057 static bool isAllowableRxThreshPrivateVar(const int val) { 00058 return val == NOT_YET_SET_OR_INVALID || (val>=MIN_LEGITIMATE_RX_THRESH && val <= MAX_LEGITIMATE_RX_THRESH); 00059 }; 00060 public: 00061 static bool isGoodPhysicalRxThresh(const int val) { 00062 return val != NOT_YET_SET_OR_INVALID && val>=MIN_LEGITIMATE_RX_THRESH && val <= MAX_LEGITIMATE_RX_THRESH; 00063 }; 00064 private: 00065 int m_minErrorFreeRxThresh; 00066 int m_maxErrorFreeRxThresh; 00067 int m_bestRxThresh; 00068 int m_riseTime; 00069 static const int NOT_YET_SET_OR_INVALID=-1; 00070 static const int MIN_LEGITIMATE_RX_THRESH=0; 00071 static const int MAX_LEGITIMATE_RX_THRESH=255; 00072 }; 00073 00077 StreamResult& getStreamResult(const unsigned index); 00081 const StreamResult& getStreamResult(const unsigned index) const; 00082 private: 00083 RangedVector<StreamResult> streamResults; 00084 00085 }; 00086 }// end of namespace SctData 00087 #endif //#ifndef TIMEWALKTESTRESULT_H