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