Go to the documentation of this file.
38 #include <QStringList>
75 fprintf(fd,
":Name ");
82 fprintf(fd,
":InitiallyAvailable false");
115 fprintf(fd,
"{:ResidentPrg ");
165 static const QDateTime
k_mJD_epoch = QDateTime(QDate(1858, 11, 17), QTime(0, 0), Qt::LocalTime);
171 return dt.addDays(mJDN).addSecs(seconds);
176 auto dt = QDateTime::currentDateTime();
178 seconds = dt.time().msecsSinceStartOfDay() / 1000;
197 if (
args.Size() == 2)
202 int nModJulianDate = std::clamp<int64_t>(mJDN, 0, std::numeric_limits<int>::max());
216 if (
args.Size() == 4)
227 for (
int i = 0; i < format.
Size(); i++)
229 char ch = format.
GetAt(i);
236 if (i == format.
Size())
241 ch = format.
GetAt(i);
245 case 'Y': buffer = dt.toString(
"yyyy");
break;
246 case 'y': buffer = dt.toString(
"yy");
break;
247 case 'X': buffer = dt.toString(
"MM");
break;
248 case 'x': buffer = dt.toString(
"M");
break;
249 case 'D': buffer = dt.toString(
"dd");
break;
250 case 'd': buffer = dt.toString(
"d");
break;
251 case 'H': buffer = dt.toString(
"HH");
break;
252 case 'h': buffer = dt.toString(
"H");
break;
255 buffer = dt.toString(
"HH AP");
259 buffer = dt.toString(
"H AP");
262 case 'M': buffer = dt.toString(
"mm");
break;
263 case 'm': buffer = dt.toString(
"m");
break;
264 case 'S': buffer = dt.toString(
"ss");
break;
265 case 's': buffer = dt.toString(
"s");
break;
266 case 'A': buffer = dt.toString(
"AP");
break;
267 case 'a': buffer = dt.toString(
"ap");
break;
272 result.
Append(qPrintable(buffer));
292 if (
args.Size() == 2)
299 int dayOfWeek = dt.date().dayOfWeek();
316 if (
args.Size() == 2)
337 if (
args.Size() == 2)
355 if (
args.Size() == 3)
371 if (
args.Size() == 2)
388 if (
args.Size() == 4)
392 int nBeginExtract =
GetInt(
args.GetAt(1), engine);
393 int nEndExtract =
GetInt(
args.GetAt(2), engine);
395 if (nBeginExtract < 1)
400 if (nBeginExtract >
string.Size())
402 nBeginExtract =
string.Size();
410 if (nEndExtract >
string.Size())
412 nEndExtract =
string.Size();
418 MHOctetString(
string, nBeginExtract - 1, nEndExtract - nBeginExtract + 1));
429 if (
args.Size() == 4)
446 for (nPos = nStart - 1; nPos <=
string.Size() - searchString.
Size(); nPos++)
450 for (i = 0; i < searchString.
Size(); i++)
452 if (searchString.
GetAt(i) !=
string.GetAt(i + nPos))
458 if (i == searchString.
Size())
468 if (nPos <=
string.Size() - searchString.
Size())
486 if (
args.Size() == 5)
504 for (nPos = nStart - 1; nPos <=
string.Size() - searchString.
Size(); nPos++)
508 for (i = 0; i < searchString.
Size(); i++)
510 if (searchString.
GetAt(i) !=
string.GetAt(i + nPos))
516 if (i == searchString.
Size())
527 if (nPos <=
string.Size() - searchString.
Size())
532 MHOctetString resultString(
string, nStart - 1, nPos - nStart + 1);
550 if (
args.Size() == 2)
558 QString str = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
572 if (
args.Size() == 1)
587 if (
args.Size() == 1)
603 if (
args.Size() == 5)
605 int channelId =
GetInt(
args.GetAt(0), engine);
612 transportId, serviceId);
632 MHERROR(
"GetBootInfo ResidentProgram is not implemented");
640 if (
args.Size() == 3)
652 if (! csPath.isEmpty())
674 MHERROR(
"CheckGroupIDRef ResidentProgram is not implemented");
679 MHERROR(
"VideoToGraphics ResidentProgram is not implemented");
685 MHERROR(
"SetWidescreenAlignment ResidentProgram is not implemented");
690 MHERROR(
"GetDisplayAspectRatio ResidentProgram is not implemented");
695 MHERROR(
"CI_SendMessage ResidentProgram is not implemented");
700 if (
args.Size() == 1) {
703 .arg(status ?
"enabled" :
"disabled"));
714 if (
args.Size() == 1)
721 result.
Copy(
"SNYPVR");
742 QString message =
"DEBUG: ";
744 for (
int i = 0; i <
args.Size(); i++)
752 message.append(QString(
"%1").arg(un.
m_nIntVal));
755 message.append(un.
m_fBoolVal ?
"True" :
"False");
779 if (
args.Size() == 1) {
782 .arg(status ?
"enabled" :
"disabled"));
791 if (
args.Size() == 1)
795 ICstatus == 0 ?
"active" : ICstatus == 1 ?
"inactive" :
796 ICstatus == 2 ?
"disabled" :
"undefined"));
803 if (
args.Size() >= 3)
807 QUrl url = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
812 for (; i + 2 <
args.Size(); i += 2)
815 QString name = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
823 .arg(url.toEncoded().constData()) );
835 result.
Append(text.constData());
843 if (
args.Size() == 2)
847 QString str = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
849 QString str2 = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
858 if (
args.Size() == 1)
866 if (
args.Size() == 4)
870 QString
id = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
873 QString val = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
877 .arg(
id).arg(iExpiry).arg(val).arg(bSecure) );
882 MHERROR(
"GetCookie ResidentProgram is not implemented");
888 if (
args.Size() == 2)
892 QString url = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
895 .arg(url).arg(
GetInt(
args.GetAt(1), engine)) );
903 if (
args.Size() == 2)
907 QString info = QString::fromUtf8((
const char *)
string.Bytes(),
string.Size());
918 if (
args.Size() == 1)
926 if (
args.Size() == 1)
942 if (
args.Size() == 1)
955 for (
int i = 0; i <
args.Size(); ++i)
986 fprintf(fd,
"{:RemotePrg");
988 fprintf(fd,
"****TODO\n");
1002 fprintf(fd,
"{:InterchgPrg");
1004 fprintf(fd,
"****TODO\n");
1017 for (
int i = 0; i <
args->GetSeqCount(); i++)
1021 pParm->Initialise(
args->GetSeqN(i), engine);
virtual bool GetCarouselData(const QString &objectPath, QByteArray &result)=0
virtual void Activation(MHEngine *engine)
static void GetString(MHParameter *parm, MHOctetString &str, MHEngine *engine)
static const char * GetAsString(enum UnionTypes t)
void Initialise(MHParseNode *p, MHEngine *engine)
void PrintMe(FILE *fd, int nTabs) const override
static void GetCurrentDate(int64_t &mJDN, int &seconds)
virtual void Deactivation(MHEngine *engine)
void Preparation(MHEngine *engine) override
MHOwnPtrSequence< MHParameter > m_parameters
void Initialise(MHParseNode *p, MHEngine *engine) override
MHObjectRef * GetReference()
void CheckType(enum UnionTypes t) const
void PrintMe(FILE *fd, int nTabs) const
static const char * MHEGEngineProviderIdString
void Initialise(MHParseNode *p, MHEngine *engine) override
unsigned char GetAt(int i) const
const unsigned char * Bytes() const
void CallProgram(bool fIsFork, const MHObjectRef &success, const MHSequence< MHParameter * > &args, MHEngine *engine) override
static QDateTime recoverDateTime(int64_t mJDN, int64_t seconds)
void Perform(MHEngine *engine) override
virtual void SetVariableValue(const MHUnion &)
virtual void Initialise(MHParseNode *p, MHEngine *engine)
void SetTuneInfo(int tuneinfo)
void PrintMe(FILE *fd, int nTabs) const
virtual bool TuneTo(int channel, int tuneinfo)=0
QString GetPathName(const MHOctetString &str)
void PrintArgs(FILE *fd, int nTabs) const override
bool m_fInitiallyAvailable
void EventTriggered(MHRoot *pSource, enum EventType ev)
virtual int GetICStatus()=0
static void SetSuccessFlag(const MHObjectRef &success, bool result, MHEngine *engine)
void PrintTabs(FILE *fd, int n)
MHParseNode * GetArgN(int n)
void PrintMe(FILE *fd, int nTabs) const override
void PrintMe(FILE *fd, int nTabs) const override
MHRoot * FindObject(const MHObjectRef &oRef, bool failOnNotFound=true)
void Initialise(MHParseNode *p, MHEngine *engine) override
#define MHLOG(__level, __text)
QString Printable() const
enum MHUnion::UnionTypes U_None
void PrintMe(FILE *fd, int nTabs) const override
void GetValueFrom(const MHParameter &value, MHEngine *engine)
MHRoot * Target(MHEngine *engine)
MHContentRef m_contentRefVal
QString Printable() const
virtual const char * GetDSMCCId(void)=0
void Initialise(MHParseNode *p, MHEngine *engine) override
MHOctetString m_contentRef
virtual void CallProgram(bool, const MHObjectRef &, const MHSequence< MHParameter * > &, MHEngine *)
void Deactivation(MHEngine *engine) override
virtual bool GetServiceInfo(int channelId, int &netId, int &origNetId, int &transportId, int &serviceId)=0
QString Printable() const
static bool GetBool(MHParameter *parm, MHEngine *engine)
void Initialise(MHParseNode *p, MHEngine *engine) override
static int GetInt(MHParameter *parm, MHEngine *engine)
virtual int GetChannelIndex(const QString &str)=0
static const QDateTime k_mJD_epoch
Midnight on 17 November 1858, the epoch of the modified Julian day.
void PrintMe(FILE *fd, int nTabs) const override
void GetStringValue(MHOctetString &str)
bool Equal(const MHOctetString &str) const
void Activation(MHEngine *engine) override
virtual const char * GetReceiverId(void)=0
void Copy(const MHContentRef &cr)
void Append(const MHOctetString &str)
void PrintMe(FILE *fd, int nTabs) const
uint32_t MythRandom()
generate 32 random bits
void Copy(const MHOctetString &str)
QString Printable() const