Go to the documentation of this file.
34 #define LOC QString("ExternalRec[%1](%2): ").arg(m_cardid).arg(m_command)
39 , m_command(std::move(cmd))
44 LOG(VB_GENERAL, LOG_ERR,
LOC +
"Open failed");
64 LOG(VB_CHANNEL, LOG_ERR,
LOC +
"Failed to open external app.");
70 LOG(VB_CHANNEL, LOG_ERR,
LOC +
"External app does not have a tuner.");
91 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString(
"%1 command failed.").arg(cmd));
95 if (result.startsWith(
"ERR"))
97 LOG(VB_CHANNEL, LOG_ERR,
LOC + QString(
"%1: %2")
101 if (result.startsWith(
"OK:DONE"))
103 LOG(VB_CHANNEL, LOG_INFO,
LOC + result);
108 QStringList fields = result.mid(3).split(
",");
110 if (fields.size() != 4 && fields.size() != 5)
112 LOG(VB_CHANNEL, LOG_ERR,
LOC +
113 QString(
"Expecting channum, name, callsign, xmltvid and "
115 "Received '%1").arg(result));
121 callsign = fields[2];
123 if (fields.size() == 5)
139 LOG(VB_CHANNEL, LOG_ERR,
LOC +
"LoadChannels command failed.");
143 if (result.startsWith(
"FOUND"))
144 cnt = result.mid(6).toInt();
145 else if (result.startsWith(
"OK"))
146 cnt = result.mid(3).toInt();
149 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)
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