flagDirectory=isDirectory|mustDescent|canDescent,
shouldSort=8, // should be ASCII-sorted according to service_name. great for directories.
hasSortKey=16, // has a sort key in data[3]. not having a sort key implies 0.
- sort1=32 // sort key is 1 instead of 0
+ sort1=32, // sort key is 1 instead of 0
+ isMarker=64, // Marker
+ isGroup=128 // is a group of services
};
int flags; // flags will NOT be compared.
data[3]=data3;
data[4]=data4;
}
+#endif
eServiceReference(int type, int flags, const std::string &path)
: type(type), flags(flags), path(path)
{
memset(data, 0, sizeof(data));
}
-#endif
eServiceReference(const std::string &string);
std::string toString() const;
+ std::string toCompareString() const;
bool operator==(const eServiceReference &c) const
{
if (type != c.type)
extern PyObject *New_eServiceReference(const eServiceReference &ref); // defined in enigma_python.i
+#ifndef SWIG
+#ifdef PYTHON_REFCOUNT_DEBUG
+inline ePyObject Impl_New_eServiceReference(const char* file, int line, const eServiceReference &ref)
+{
+ return ePyObject(New_eServiceReference(ref), file, line);
+}
+#define NEW_eServiceReference(ref) Impl_New_eServiceReference(__FILE__, __LINE__, ref)
+#else
+inline ePyObject Impl_New_eServiceReference(const eServiceReference &ref)
+{
+ return New_eServiceReference(ref);
+}
+#define NEW_eServiceReference(ref) Impl_New_eServiceReference(ref)
+#endif
+#endif // SWIG
+
typedef long long pts_t;
/* the reason we have the servicereference as additional argument is
Hide the result only if there is another way to check for failure! */
+TEMPLATE_TYPEDEF(ePtr<eServiceEvent>, eServiceEventPtr);
+
class iStaticServiceInformation: public iObject
{
#ifdef SWIG
virtual int getLength(const eServiceReference &ref);
virtual SWIG_VOID(RESULT) getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &SWIG_OUTPUT, time_t start_time=-1);
// returns true when not implemented
- virtual bool isPlayable(const eServiceReference &ref, const eServiceReference &ignore);
+ virtual int isPlayable(const eServiceReference &ref, const eServiceReference &ignore);
virtual int getInfo(const eServiceReference &ref, int w);
virtual std::string getInfoString(const eServiceReference &ref,int w);
+
+ virtual int setInfo(const eServiceReference &ref, int w, int v);
+ virtual int setInfoString(const eServiceReference &ref, int w, const char *v);
};
TEMPLATE_TYPEDEF(ePtr<iStaticServiceInformation>, iStaticServiceInformationPtr);
-TEMPLATE_TYPEDEF(ePtr<eServiceEvent>, eServiceEventPtr);
-
class iServiceInformation: public iObject
{
#ifdef SWIG
sTracknumber,
sGenre,
sCAIDs,
- sVideoType // MPEG2 MPEG4
+ sVideoType, // MPEG2 MPEG4
+
+ sTags, /* space seperated list of tags */
+
+ sDVBState, /* states as defined in pmt handler (as events there) */
};
enum { resNA = -1, resIsString = -2, resIsPyObject = -3 };
virtual int getInfo(int w);
virtual std::string getInfoString(int w);
virtual PyObject *getInfoObject(int w);
+
+ virtual int setInfo(int w, int v);
+ virtual int setInfoString(int w, const char *v);
};
TEMPLATE_TYPEDEF(ePtr<iServiceInformation>, iServiceInformationPtr);
struct iAudioTrackInfo
{
-#ifdef SWIG
-private:
- iAudioTrackInfo();
- ~iAudioTrackInfo();
-public:
-#endif
#ifndef SWIG
std::string m_description;
std::string m_language; /* iso639 */
TEMPLATE_TYPEDEF(ePtr<iAudioDelay>, iAudioDelayPtr);
+class iRadioText: public iObject
+{
+#ifdef SWIG
+ iRadioText();
+ ~iRadioText();
+#endif
+public:
+ virtual std::string getRadioText(int x=0)=0;
+};
+
+TEMPLATE_TYPEDEF(ePtr<iRadioText>, iRadioTextPtr);
+
class iSubserviceList: public iObject
{
#ifdef SWIG
public:
/* returns a list of (pts, what)-tuples */
virtual PyObject *getCutList() = 0;
- virtual void setCutList(PyObject *list) = 0;
+ virtual void setCutList(SWIG_PYOBJECT(ePyObject) list) = 0;
virtual void setCutListEnable(int enable) = 0;
enum { cutIn = 0, cutOut = 1, cutMark = 2 };
};
class iSubtitleOutput: public iObject
{
public:
- virtual RESULT enableSubtitles(eWidget *parent, PyObject *entry)=0;
+ virtual RESULT enableSubtitles(eWidget *parent, SWIG_PYOBJECT(ePyObject) entry)=0;
virtual RESULT disableSubtitles(eWidget *parent)=0;
virtual PyObject *getSubtitleList()=0;
+ virtual PyObject *getCachedSubtitle()=0;
};
TEMPLATE_TYPEDEF(ePtr<iSubtitleOutput>, iSubtitleOutputPtr);
/* only when cueSheet is implemented */
evCuesheetChanged,
+
+ evUpdatedRadioText
};
+#ifndef SWIG
virtual RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection)=0;
+#endif
virtual RESULT start()=0;
virtual RESULT stop()=0;
/* might have to be changed... */
virtual SWIG_VOID(RESULT) cueSheet(ePtr<iCueSheet> &SWIG_OUTPUT)=0;
virtual SWIG_VOID(RESULT) subtitle(ePtr<iSubtitleOutput> &SWIG_OUTPUT)=0;
virtual SWIG_VOID(RESULT) audioDelay(ePtr<iAudioDelay> &SWIG_OUTPUT)=0;
+ virtual SWIG_VOID(RESULT) radioText(ePtr<iRadioText> &SWIG_OUTPUT)=0;
};
TEMPLATE_TYPEDEF(ePtr<iPlayableService>, iPlayableServicePtr);
~iRecordableService();
#endif
public:
+ enum
+ {
+ evStart,
+ evStop,
+ evTunedIn,
+ evTuneFailed,
+ evRecordRunning,
+ evRecordStopped,
+ evNewProgramInfo,
+ evRecordFailed
+// evDiskFull
+ };
+ enum
+ {
+ NoError=0,
+ errOpenRecordFile=-1,
+ errNoDemuxAvailable=-2,
+ errNoTsRecorderAvailable=-3,
+ errDiskFull=-4,
+ errTuneFailed=-255
+ };
+#ifndef SWIG
+ virtual RESULT connectEvent(const Slot2<void,iRecordableService*,int> &event, ePtr<eConnection> &connection)=0;
+#endif
+ virtual RESULT getError(int &)=0;
virtual RESULT prepare(const char *filename, time_t begTime=-1, time_t endTime=-1, int eit_event_id=-1)=0;
virtual RESULT start()=0;
virtual RESULT stop()=0;
TEMPLATE_TYPEDEF(ePtr<iRecordableService>, iRecordableServicePtr);
+extern PyObject *New_iRecordableServicePtr(const ePtr<iRecordableService> &ref); // defined in enigma_python.i
+
+inline PyObject *PyFrom(ePtr<iRecordableService> &c)
+{
+ return New_iRecordableServicePtr(c);
+}
+
+#ifndef SWIG
+#ifdef PYTHON_REFCOUNT_DEBUG
+inline ePyObject Impl_New_iRecordableServicePtr(const char* file, int line, const ePtr<iRecordableService> &ptr)
+{
+ return ePyObject(New_iRecordableServicePtr(ptr), file, line);
+}
+#define NEW_iRecordableServicePtr(ptr) Impl_New_iRecordableServicePtr(__FILE__, __LINE__, ptr)
+#else
+inline ePyObject Impl_New_iRecordableServicePtr(const ePtr<iRecordableService> &ptr)
+{
+ return New_iRecordableServicePtr(ptr);
+}
+#define NEW_iRecordableServicePtr(ptr) Impl_New_iRecordableServicePtr(ptr)
+#endif
+#endif // SWIG
+
// TEMPLATE_TYPEDEF(std::list<eServiceReference>, eServiceReferenceList);
class iMutableServiceList: public iObject
/* flush changes */
virtual RESULT flushChanges()=0;
/* adds a service to a list */
- virtual RESULT addService(eServiceReference &ref)=0;
+ virtual RESULT addService(eServiceReference &ref, eServiceReference before=eServiceReference())=0;
/* removes a service from a list */
virtual RESULT removeService(eServiceReference &ref)=0;
/* moves a service in a list, only if list suppports a specific sort method. */
~iListableService();
#endif
public:
+#ifndef SWIG
/* legacy interface: get a list */
virtual RESULT getContent(std::list<eServiceReference> &list, bool sorted=false)=0;
+#endif
virtual PyObject *getContent(const char* format, bool sorted=false)=0;
/* new, shiny interface: streaming. */