00001 #ifndef TXCURRENTTESTRESULT_H
00002 #define TXCURRENTTESTRESULT_H
00003
00004 #include "TestResult.h"
00005 #include "Sct/RangedVector.h"
00006
00007 namespace SctData{
00012 class TxCurrentTestResult : public TestResult {
00013 public:
00014 TxCurrentTestResult() throw();
00015
00019 TxCurrentTestResult(unsigned int runNumber, const string& moduleName) throw();
00020
00024 virtual ~TxCurrentTestResult() 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_minErrorFreeTxCurrent = NOT_YET_SET_OR_INVALID;
00037 m_maxErrorFreeTxCurrent = NOT_YET_SET_OR_INVALID;
00038 m_bestTxCurrent = NOT_YET_SET_OR_INVALID;
00039 };
00040 bool isInvalid() const {
00041 return
00042 m_minErrorFreeTxCurrent == NOT_YET_SET_OR_INVALID ||
00043 m_maxErrorFreeTxCurrent == NOT_YET_SET_OR_INVALID ||
00044 m_bestTxCurrent == NOT_YET_SET_OR_INVALID;
00045 };
00046 int minErrorFreeTxCurrent() const { return m_minErrorFreeTxCurrent; };
00047 int maxErrorFreeTxCurrent() const { return m_maxErrorFreeTxCurrent; };
00048 int bestTxCurrent() const { return m_bestTxCurrent; };
00049 void setMinErrorFreeTxCurrent(int val) {
00050 m_minErrorFreeTxCurrent = (this->isAllowableTxCurrentPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID;
00051 };
00052 void setMaxErrorFreeTxCurrent(int val) {
00053 m_maxErrorFreeTxCurrent = (this->isAllowableTxCurrentPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID;
00054 };
00055 void setBestTxCurrent(int val) {
00056 m_bestTxCurrent = (this->isAllowableTxCurrentPrivateVar(val)) ? val : NOT_YET_SET_OR_INVALID;
00057 };
00058 private:
00059 static bool isAllowableTxCurrentPrivateVar(const int val) {
00060 return val == NOT_YET_SET_OR_INVALID || (val>=MIN_LEGITIMATE_TX_CURRENT && val <= MAX_LEGITIMATE_TX_CURRENT);
00061 };
00062 public:
00063 static bool isGoodPhysicalTxCurrent(const int val) {
00064 return val != NOT_YET_SET_OR_INVALID && val>=MIN_LEGITIMATE_TX_CURRENT && val <= MAX_LEGITIMATE_TX_CURRENT;
00065 };
00066 private:
00067 int m_minErrorFreeTxCurrent;
00068 int m_maxErrorFreeTxCurrent;
00069 int m_bestTxCurrent;
00070 static const int NOT_YET_SET_OR_INVALID=-1;
00071 static const int MIN_LEGITIMATE_TX_CURRENT=0;
00072 static const int MAX_LEGITIMATE_TX_CURRENT=255;
00073 };
00074
00078 StreamResult& getStreamResult(const unsigned index);
00082 const StreamResult& getStreamResult(const unsigned index) const;
00083 private:
00084 RangedVector<StreamResult> streamResults;
00085
00086 };
00087 }
00088 #endif //#ifndef TIMEWALKTESTRESULT_H