23#define LOC QString("ExternSigMon[%1](%2): ").arg(m_inputid).arg(m_loc)
45 LOG(VB_CHANNEL, LOG_INFO,
LOC +
"ctor");
51 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Open failed");
70 LOG(VB_CHANNEL, LOG_INFO,
LOC +
"dtor");
81 LOG(VB_CHANNEL, LOG_INFO,
LOC +
"Stop() -- begin");
91 LOG(VB_CHANNEL, LOG_INFO,
LOC +
"Stop() -- end");
106 if (channel ==
nullptr)
132 m_error = QObject::tr(
"Error: stream handler died");
185 if (result.startsWith(
"OK:"))
187 return result.mid(3, 3) ==
"Yes";
189 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString
190 (
"HasLock: invalid response '%1'").arg(result));
191 if (!result.startsWith(
"WARN"))
192 m_error = QString(
"HasLock: invalid response '%1'").arg(result);
201 if (result.startsWith(
"OK:"))
204 int percent = result.mid(3).toInt(&ok);
207 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString
208 (
"GetSignalStrengthPercent: invalid response '%1'")
214 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString
215 (
"GetSignalStrengthPercent: invalid response '%1'").arg(result));
216 if (!result.startsWith(
"WARN"))
217 m_error = QString(
"GetSignalStrengthPercent: invalid response '%1'")
227 if (result.startsWith(
"OK:"))
230 auto timeout = std::chrono::seconds(result.mid(3).toInt(&ok));
233 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString
234 (
"GetLockTimeout: invalid response '%1'")
240 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString
241 (
"GetLockTimeout: invalid response '%1'").arg(result));
242 if (!result.startsWith(
"WARN"))
243 m_error = QString(
"GetLockTimeout: invalid response '%1'").arg(result);
virtual bool IsExternalChannelChangeInUse(void)
virtual int GetInputID(void) const
virtual QString GetDevice(void) const
Returns String representing device, useful for debugging.
This class is intended to detect the presence of needed tables.
bool IsAllGood(void) const override
void AddFlags(uint64_t _flags) override
MPEGStreamData * GetStreamData()
Returns the MPEG stream data if it exists.
bool IsBackgroundTuning(void) const
ExternalSignalMonitor(void)
ExternalChannel * GetExternalChannel(void)
int GetSignalStrengthPercent(void)
void UpdateValues(void) override
Fills in frontend stats and emits status Qt signals.
ExternalStreamHandler * m_streamHandler
std::chrono::seconds GetLockTimeout(void)
bool m_streamHandlerStarted
void Stop(void) override
Stop signal monitoring and table monitoring threads.
~ExternalSignalMonitor() override
Stops signal monitoring and table monitoring threads.
std::chrono::milliseconds m_lockTimeout
static ExternalStreamHandler * Get(const QString &devname, int inputid, int majorid)
bool ProcessCommand(const QString &cmd, QString &result, std::chrono::milliseconds timeout=4s, uint retry_cnt=3)
bool StartStreaming(void)
static void Return(ExternalStreamHandler *&ref, int inputid)
int GetValue() const
Returns the value.
bool IsGood() const
Returns true if the value is equal to the threshold, or on the right side of the threshold (depends o...
void SetValue(int _value)
static const uint64_t kDTVSigMon_WaitForVCT
QRecursiveMutex m_statusLock
void SendMessageAllGood(void)
SignalMonitorValue m_signalLock
static const uint64_t kDTVSigMon_WaitForNIT
SignalMonitorValue m_scriptStatus
static const uint64_t kDTVSigMon_WaitForSDT
virtual void Stop()
Stop signal monitoring thread.
static const uint64_t kDTVSigMon_WaitForPMT
virtual void EmitStatus(void)
static const uint64_t kSigMon_WaitForSig
static const uint64_t kDTVSigMon_WaitForPAT
static const uint64_t kDTVSigMon_WaitForMGT
virtual void UpdateValues(void)
This should be overridden to actually do signal monitoring.
SignalMonitorValue m_signalStrength
bool HasAnyFlag(uint64_t _flags) const
bool HasError(void) const
bool IsRunning(void) const
virtual void RemoveListener(MPEGStreamData *data)
virtual void AddListener(MPEGStreamData *data, bool allow_section_reader=false, bool needs_buffering=false, const QString &output_file=QString())
#define LOG(_MASK_, _LEVEL_, _QSTRING_)