MythTV  master
signalmonitorvalue.h
Go to the documentation of this file.
1 // -*- Mode: c++ -*-
2 #ifndef SIGNALMONITORVALUES_H
3 #define SIGNALMONITORVALUES_H
4 
5 #include <vector>
6 using namespace std;
7 
8 // Qt headers
9 #include <QStringList>
10 #include <QCoreApplication>
11 
12 #include "mythcontext.h"
13 
15 {
16  Q_DECLARE_TR_FUNCTIONS(SignalMonitorValue)
17 
19  public:
20  SignalMonitorValue(const QString& _name, const QString& _noSpaceName,
21  int _threshold, bool _high_threshold,
22  int _min, int _max, int _timeout);
23  virtual ~SignalMonitorValue() { ; } /* forces class to have vtable */
24 
25  // // // // // // // // // // // // // // // // // // // // // // // //
26  // Gets // // // // // // // // // // // // // // // // // // // // //
27 
29  QString GetName(void) const;
31  QString GetShortName(void) const;
33  QString GetStatus() const
34  {
35  QString str = m_noSpaceName.isNull() ? "(null)" : m_noSpaceName;
36  return QString("%1 %2 %3 %4 %5 %6 %7 %8")
37  .arg(str).arg(m_value).arg(m_threshold).arg(m_minVal).arg(m_maxVal)
38  .arg(m_timeout).arg((int)m_highThreshold).arg((int)m_set);
39  }
41  int GetValue() const { return m_value; }
43  int GetMin() const { return m_minVal; }
45  int GetMax() const { return m_maxVal; }
48  int GetThreshold() const { return m_threshold; }
51  bool IsHighThreshold() const { return m_highThreshold; }
53  int GetTimeout() const { return m_timeout; }
54 
57  bool IsGood() const
58  {
59  return (m_highThreshold) ? m_value >= m_threshold : m_value <= m_threshold;
60  }
64  int GetNormalizedValue(int newmin, int newmax) const
65  {
66  float rangeconv = ((float) (newmax - newmin)) / (GetMax() - GetMin());
67  int newval = (int) (((GetValue() - GetMin()) * rangeconv) + newmin);
68  return max( min(newval, newmax), newmin );
69  }
70 
71 
72  // // // // // // // // // // // // // // // // // // // // // // // //
73  // Sets // // // // // // // // // // // // // // // // // // // // //
74 
75  void SetValue(int _value)
76  {
77  m_set = true;
78  m_value = min(max(_value,m_minVal),m_maxVal);
79  }
80 
81  void SetMin(int _min) { m_minVal = _min; }
82 
83  void SetMax(int _max) { m_maxVal = _max; }
84 
85  void SetThreshold(int _threshold) { m_threshold = _threshold; }
86 
87  void SetThreshold(int _threshold, bool _high_threshold) {
88  m_threshold = _threshold;
89  m_highThreshold = _high_threshold;
90  }
91 
94  void SetRange(int _min, int _max) {
95  m_minVal = _min;
96  m_maxVal = _max;
97  }
98 
99  void SetTimeout(int _timeout) { m_timeout = _timeout; }
100 
101  // // // // // // // // // // // // // // // // // // // // // // // //
102  // Static Methods // // // // // // // // // // // // // // // // // //
103 
104  static void Init();
105  static SignalMonitorValue*
106  Create(const QString& _name, const QString& _longString);
107  static SignalMonitorList Parse(const QStringList& slist);
108  static bool AllGood(const SignalMonitorList& slist);
109  static int MaxWait(const SignalMonitorList& slist);
110 
111 
112  // // // // // // // // // // // // // // // // // // // // // // // //
113  // Constants // // // // // // // // // // // // // // // // // // //
114 
115  static QStringList ERROR_NO_CHANNEL;
116  static QStringList ERROR_NO_LINK;
117  static QStringList SIGNAL_LOCK;
118  // variable for initializing constants after translator installed
119  static bool run_static_init;
120 
121  QString toString() const
122  {
123  QString str = m_noSpaceName.isNull() ? "(null)" : m_noSpaceName;
124  return QString("Name(%1) Val(%2) thr(%3%4) range(%5,%6) "
125  "timeout(%7 ms) %8 set. %9 good.")
126  .arg(str).arg(m_value).arg( (m_highThreshold) ? ">=" : "<=" )
127  .arg(m_threshold).arg(m_minVal).arg(m_maxVal)
128  .arg(m_timeout).arg( (m_set) ? "is" : "is NOT" )
129  .arg( (IsGood()) ? "Is" : "Is NOT" );
130  }
131  private:
132  SignalMonitorValue() = default;
133  SignalMonitorValue(const QString& _name, const QString& _noSpaceName,
134  int _value, int _threshold, bool _high_threshold,
135  int _min, int _max, int _timeout, bool _set);
136  bool Set(const QString& _name, const QString& _longString);
137 
138  QString m_name;
139  QString m_noSpaceName;
140  int m_value {-1};
141  int m_threshold {-1};
142  int m_minVal {-1};
143  int m_maxVal {-1};
144  int m_timeout {-1};
145  bool m_highThreshold {true}; // false when we must be below threshold
146  bool m_set {false}; // false until value initially set
147 };
148 
149 typedef vector<SignalMonitorValue> SignalMonitorList;
150 
151 #endif // SIGNALMONITORVALUES_H
QString GetStatus() const
Returns a signal monitor value as one long string.
int GetNormalizedValue(int newmin, int newmax) const
Returns the value normalized to the [newmin, newmax] range.
void SetMax(int _max)
void SetTimeout(int _timeout)
int GetValue() const
Returns the value.
static QStringList ERROR_NO_CHANNEL
static QStringList ERROR_NO_LINK
vector< SignalMonitorValue > SignalMonitorList
void SetValue(int _value)
static QStringList SIGNAL_LOCK
bool IsHighThreshold() const
Returns true if values greater than the threshold are considered good, false otherwise.
vector< SignalMonitorValue > SignalMonitorList
int GetTimeout() const
Returns how long to wait for a good value in milliseconds.
QString toString() const
void SetMin(int _min)
int GetMax() const
Returns greatest value possible, used for signal monitor bars.
int GetMin() const
Returns smallest value possible, used for signal monitor bars.
void SetRange(int _min, int _max)
Sets the minimum and maximum values.
int GetThreshold() const
Returns the threshold at which the value is considered "good".
void SetThreshold(int _threshold, bool _high_threshold)
bool IsGood() const
Returns true if the value is equal to the threshold, or on the right side of the threshold (depends o...
void SetThreshold(int _threshold)