13 #define DEBUG_SIGNAL_MONITOR_VALUE 1
29 QCoreApplication::translate(
"(Common)",
"Signal Lock"),
30 "slock", 0,
true, 0, 1, 0ms);
41 std::chrono::milliseconds _timeout) :
42 m_name(
std::move(_name)),
43 m_noSpaceName(
std::move(_noSpaceName)),
45 m_threshold(_threshold),
46 m_minVal(_min), m_maxVal(_max), m_timeout(_timeout),
47 m_highThreshold(_high_threshold)
50 #if DEBUG_SIGNAL_MONITOR_VALUE
51 LOG(VB_GENERAL, LOG_DEBUG,
52 QString(
"SignalMonitorValue(%1, %2, %3, %4, %5, %6, %7, %8, %9)")
55 .arg((
m_set ?
"true" :
"false")));
61 int _value,
int _threshold,
64 std::chrono::milliseconds _timeout,
66 m_name(
std::move(_name)),
67 m_noSpaceName(
std::move(_noSpaceName)),
69 m_threshold(_threshold),
70 m_minVal(_min), m_maxVal(_max), m_timeout(_timeout),
71 m_highThreshold(_high_threshold), m_set(_set)
74 #if DEBUG_SIGNAL_MONITOR_VALUE
75 LOG(VB_GENERAL, LOG_DEBUG,
76 QString(
"SignalMonitorValue(%1, %2, %3, %4, %5, %6, %7, %8, %9)")
79 .arg((
m_set ?
"true" :
"false")));
102 const QString& longString = _longString;
104 if (
m_name.isEmpty() || longString.isEmpty())
119 QStringList
vals = longString.split(
" ", Qt::SkipEmptyParts);
120 if (8 !=
vals.size() ||
"(null)" ==
vals[0])
134 const QString& _longString)
137 if (!smv->Set(_name, _longString))
153 for (
int i=0; i+1<slist.size(); i+=2)
155 #if DEBUG_SIGNAL_MONITOR_VALUE
156 LOG(VB_GENERAL, LOG_DEBUG,
157 "Parse(" + slist[i] +
", (" + slist[i+1] +
"))");
159 if (smv.
Set(slist[i], slist[i+1]))
160 monitor_list.push_back(smv);
163 LOG(VB_GENERAL, LOG_ERR,
164 QString(
"SignalMonitorValue::Parse(): Error, "
165 "unable to parse (%1, (%2))")
166 .arg(slist[i], slist[i+1]));
178 auto isgood = [](
const auto & smv){
return smv.IsGood(); };
179 bool good = std::all_of(slist.cbegin(), slist.cend(), isgood);
180 #if DEBUG_SIGNAL_MONITOR_VALUE
183 QString msg(
"AllGood failed on ");
184 for (
const auto & smv : slist)
188 msg += smv.m_noSpaceName;
189 msg += QString(
"(%1%2%3) ")
191 .arg(smv.m_highThreshold ?
"<" :
">")
192 .arg(smv.GetThreshold());
195 LOG(VB_GENERAL, LOG_DEBUG, msg);
207 std::chrono::milliseconds wait = 0ms;
208 std::chrono::milliseconds minWait = 0s;
209 for (
const auto & smv : slist)
211 wait = std::max(wait, smv.GetTimeout());
212 minWait = std::min(minWait, smv.GetTimeout());
214 return (minWait < 0ms) ? -1ms : wait;