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
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 void setMinErrorFreeRxThresh(int val) {
00044 m_minErrorFreeRxThresh = (this->isValidRxThresh(val)) ? val : NOT_YET_SET_OR_INVALID;
00045 };
00046 void setMaxErrorFreeRxThresh(int val) {
00047 m_maxErrorFreeRxThresh = (this->isValidRxThresh(val)) ? val : NOT_YET_SET_OR_INVALID;
00048 };
00049 void setBestRxThresh(int val) {
00050 m_bestRxThresh = (this->isValidRxThresh(val)) ? val : NOT_YET_SET_OR_INVALID;
00051 };
00052 public:
00053 static bool isValidRxThresh(const int val) {
00054 return val == NOT_YET_SET_OR_INVALID || (val>=MIN_LEGITIMATE_RX_THRESH && val <= MAX_LEGITIMATE_RX_THRESH);
00055 };
00056 private:
00057 int m_minErrorFreeRxThresh;
00058 int m_maxErrorFreeRxThresh;
00059 int m_bestRxThresh;
00060 static const int NOT_YET_SET_OR_INVALID=-1;
00061 static const int MIN_LEGITIMATE_RX_THRESH=0;
00062 static const int MAX_LEGITIMATE_RX_THRESH=255;
00063 };
00064
00068 StreamResult& getStreamResult(const unsigned index);
00072 const StreamResult& getStreamResult(const unsigned index) const;
00073 private:
00074 RangedVector<StreamResult> streamResults;
00075
00076 };
00077 }
00078 #endif //#ifndef TIMEWALKTESTRESULT_H