From: Andreas Monzner Date: Thu, 9 Mar 2006 12:01:47 +0000 (+0000) Subject: make eDVBResourceManager accessible from python (needed for allocate a raw iDVBChannel) X-Git-Tag: 2.6.0~3832 X-Git-Url: https://git.cweiske.de/enigma2.git/commitdiff_plain/f2c69b1c3a49b8b03866894fe3e3f3a4f330f517 make eDVBResourceManager accessible from python (needed for allocate a raw iDVBChannel) make iDVBChannel accessible from python (needed for get iDVBFrontend) make iDVBFrontend accessible from python for raw tuning transponders and send diseqc messages --- diff --git a/lib/dvb/dvb.h b/lib/dvb/dvb.h index 836a4948..3451e48b 100644 --- a/lib/dvb/dvb.h +++ b/lib/dvb/dvb.h @@ -1,6 +1,8 @@ #ifndef __dvb_dvb_h #define __dvb_dvb_h +#ifndef SWIG + #include #include #include @@ -117,6 +119,8 @@ private: eSmartPtrList m_demux; }; +#endif // SWIG + class eDVBResourceManager: public iObject, public Object { DECLARE_REF(eDVBResourceManager); @@ -171,12 +175,12 @@ class eDVBResourceManager: public iObject, public Object eTimer m_releaseCachedChannelTimer; void DVBChannelStateChanged(iDVBChannel*); void releaseCachedChannel(); +#ifndef SWIG public: +#endif eDVBResourceManager(); virtual ~eDVBResourceManager(); - - static RESULT getInstance(ePtr &ptr) { if (instance) { ptr = instance; return 0; } return -1; } - + RESULT setChannelList(iDVBChannelList *list); RESULT getChannelList(ePtr &list); @@ -186,16 +190,21 @@ public: errChidNotFound = -3 }; + RESULT connectChannelAdded(const Slot1 &channelAdded, ePtr &connection); + bool canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID &ignore); + /* allocate channel... */ RESULT allocateChannel(const eDVBChannelID &channelid, eUsePtr &channel); - RESULT allocateRawChannel(eUsePtr &channel, int frontend_index); RESULT allocatePVRChannel(eUsePtr &channel); - - RESULT connectChannelAdded(const Slot1 &channelAdded, ePtr &connection); - - bool canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID &ignore); +#ifdef SWIG +public: +#endif + RESULT allocateRawChannel(eUsePtr &channel, int frontend_index); + static RESULT getInstance(ePtr &ptr) { if (instance) { ptr = instance; return 0; } return -1; } }; +#ifndef SWIG + /* iDVBPVRChannel includes iDVBChannel. don't panic. */ class eDVBChannel: public iDVBPVRChannel, public iFilePushScatterGather, public Object { @@ -272,4 +281,5 @@ private: void ReleaseUse(); }; +#endif // SWIG #endif diff --git a/lib/dvb/frontend.cpp b/lib/dvb/frontend.cpp index 0fd12bec..3e2efbe7 100644 --- a/lib/dvb/frontend.cpp +++ b/lib/dvb/frontend.cpp @@ -53,6 +53,14 @@ #include #include +void eDVBDiseqcCommand::setData(const char *str) +{ + len = strlen(str); + if (len > MAX_DISEQC_LENGTH) + len = MAX_DISEQC_LENGTH; + memcpy(data, str, len); +} + void eDVBFrontendParametersSatellite::set(const SatelliteDeliverySystemDescriptor &descriptor) { frequency = descriptor.getFrequency() * 10; diff --git a/lib/dvb/frontend.h b/lib/dvb/frontend.h index 6d683267..87814005 100644 --- a/lib/dvb/frontend.h +++ b/lib/dvb/frontend.h @@ -2,10 +2,6 @@ #define __dvb_frontend_h #include -#include - -class eSecCommandList; - class eDVBFrontendParameters: public iDVBFrontendParameters { DECLARE_REF(eDVBFrontendParameters); @@ -33,6 +29,11 @@ public: RESULT getHash(unsigned long &hash) const; }; +#ifndef SWIG + +#include +class eSecCommandList; + class eDVBFrontend: public iDVBFrontend, public Object { DECLARE_REF(eDVBFrontend); @@ -111,4 +112,5 @@ public: int closeFrontend(); }; +#endif // SWIG #endif diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index 955688b9..a6a19fff 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -1,6 +1,8 @@ #ifndef __dvb_idvb_h #define __dvb_idvb_h +#ifndef SWIG + #if HAVE_DVB_API_VERSION < 3 #include #define FRONTENDPARAMETERS FrontendParameters @@ -299,16 +301,22 @@ public: virtual RESULT startQuery(ePtr &query, eDVBChannelQuery *query, const eServiceReference &source)=0; }; +#endif // SWIG + class iDVBFrontendParameters: public iObject { +#ifdef SWIG + iDVBFrontendParameters(); + ~iDVBFrontendParameters(); +#endif public: - virtual RESULT getSystem(int &type) const = 0; - virtual RESULT getDVBS(eDVBFrontendParametersSatellite &p) const = 0; - virtual RESULT getDVBC(eDVBFrontendParametersCable &p) const = 0; - virtual RESULT getDVBT(eDVBFrontendParametersTerrestrial &p) const = 0; + virtual RESULT getSystem(int &SWIG_OUTPUT) const = 0; + virtual RESULT getDVBS(eDVBFrontendParametersSatellite &SWIG_OUTPUT) const = 0; + virtual RESULT getDVBC(eDVBFrontendParametersCable &SWIG_OUTPUT) const = 0; + virtual RESULT getDVBT(eDVBFrontendParametersTerrestrial &SWIG_OUTPUT) const = 0; - virtual RESULT calculateDifference(const iDVBFrontendParameters *parm, int &diff) const = 0; - virtual RESULT getHash(unsigned long &hash) const = 0; + virtual RESULT calculateDifference(const iDVBFrontendParameters *parm, int &SWIG_OUTPUT) const = 0; + virtual RESULT getHash(unsigned long &SWIG_OUTPUT) const = 0; }; #define MAX_DISEQC_LENGTH 16 @@ -317,11 +325,14 @@ class eDVBDiseqcCommand { public: int len; +#ifndef SWIG __u8 data[MAX_DISEQC_LENGTH]; #if HAVE_DVB_API_VERSION < 3 int tone; int voltage; #endif +#endif //SWIG + void setData(const char *str); }; class iDVBSatelliteEquipmentControl; @@ -335,7 +346,9 @@ public: }; virtual RESULT getFrontendType(int &type)=0; virtual RESULT tune(const iDVBFrontendParameters &where)=0; +#ifndef SWIG virtual RESULT connectStateChange(const Slot1 &stateChange, ePtr &connection)=0; +#endif enum { stateIdle = 0, stateTuning = 1, @@ -354,22 +367,26 @@ public: virtual RESULT setVoltage(int voltage)=0; virtual RESULT sendDiseqc(const eDVBDiseqcCommand &diseqc)=0; virtual RESULT sendToneburst(int burst)=0; +#ifndef SWIG virtual RESULT setSEC(iDVBSatelliteEquipmentControl *sec)=0; virtual RESULT setSecSequence(const eSecCommandList &list)=0; - +#endif enum { bitErrorRate, signalPower, signalQuality, Locked, Synced }; virtual int readFrontendData(int type)=0; virtual PyObject *readTransponderData(bool original)=0; +#ifndef SWIG virtual RESULT getData(int num, int &data)=0; virtual RESULT setData(int num, int val)=0; - /* 0 means: not compatible. other values are a priority. */ virtual int isCompatibleWith(ePtr &feparm)=0; +#endif }; +TEMPLATE_TYPEDEF(ePtr, iDVBFrontendPtr); +#ifndef SWIG class iDVBSatelliteEquipmentControl: public iObject { public: @@ -382,6 +399,7 @@ struct eDVBCIRouting { int enabled; }; +#endif // SWIG class iDVBChannel: public iObject { @@ -396,15 +414,20 @@ public: state_last_instance, /* just one reference to this channel is left */ state_release /* channel is being shut down. */ }; - + virtual RESULT getState(int &state)=0; + + /* direct frontend access for raw channels and/or status inquiries. */ + virtual RESULT getFrontend(ePtr &frontend)=0; + +#ifndef SWIG + virtual RESULT getCurrentFrontendParameters(ePtr &)=0; enum { evtEOF, evtSOF, evtFailed }; virtual RESULT connectStateChange(const Slot1 &stateChange, ePtr &connection)=0; virtual RESULT connectEvent(const Slot2 &eventChange, ePtr &connection)=0; - virtual RESULT getState(int &state)=0; - + /* demux capabilities */ enum { @@ -414,14 +437,14 @@ public: virtual RESULT setCIRouting(const eDVBCIRouting &routing)=0; virtual RESULT getDemux(ePtr &demux, int cap=0)=0; - /* direct frontend access for raw channels and/or status inquiries. */ - virtual RESULT getFrontend(ePtr &frontend)=0; - virtual RESULT getCurrentFrontendParameters(ePtr &)=0; - /* use count handling */ virtual void AddUse() = 0; virtual void ReleaseUse() = 0; +#endif }; +TEMPLATE_TYPEDEF(ePtr, iDVBChannelPtr); + +#ifndef SWIG /* signed, so we can express deltas. */ @@ -558,4 +581,5 @@ public: virtual RESULT getPTS(int what, pts_t &pts) = 0; }; +#endif //SWIG #endif diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i index 36aeaa13..29294b12 100644 --- a/lib/python/enigma_python.i +++ b/lib/python/enigma_python.i @@ -72,6 +72,9 @@ is usually caused by not marking PSignals as immutable. #include #include #include +#include +#include +#include #include #include #include @@ -188,6 +191,9 @@ typedef long time_t; %include %include %include +%include +%include +%include %include %include %include