Go to the documentation of this file.
31 #define LOC QString("ExternalRec[%1](%2): ").arg(m_cardid).arg(m_command)
36 , m_command(
std::move(cmd))
41 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Open failed");
61 LOG(VB_CHANNEL, LOG_ERR,
LOC +
"Failed to open external app.");
67 LOG(VB_CHANNEL, LOG_ERR,
LOC +
"External app does not have a tuner.");
88 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString(
"%1 command failed.").arg(cmd));
92 if (result.startsWith(
"ERR"))
94 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString(
"%1: %2")
98 if (result.startsWith(
"OK:DONE"))
100 LOG(VB_CHANNEL, LOG_INFO,
LOC + result);
105 QStringList fields = result.mid(3).split(
",");
107 if (fields.size() != 4 && fields.size() != 5)
109 LOG(VB_CHANNEL, LOG_ERR,
LOC +
110 QString(
"Expecting channum, name, callsign, xmltvid and "
112 "Received '%1").arg(result));
118 callsign = fields[2];
120 if (fields.size() == 5)
136 LOG(VB_CHANNEL, LOG_ERR,
LOC +
"LoadChannels command failed.");
140 if (result.startsWith(
"FOUND"))
141 cnt = result.mid(6).toInt();
142 else if (result.startsWith(
"OK"))
143 cnt = result.mid(3).toInt();
146 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString(
"LoadChannels: %1").arg(result));
bool HasError(void) const
bool HasTuner(void) const
#define LOG(_MASK_, _LEVEL_, _QSTRING_)
~ExternalRecChannelFetcher(void)
ExternalRecChannelFetcher(int cardid, QString cmd)
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 FetchChannel(const QString &cmd, QString &channum, QString &name, QString &callsign, QString &xmltvid, QString &icon)
static void Return(ExternalStreamHandler *&ref, int inputid)
ExternalStreamHandler * m_streamHandler