make eDVBResourceManager accessible from python (needed for allocate a raw iDVBChannel)
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 9 Mar 2006 12:01:47 +0000 (12:01 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Thu, 9 Mar 2006 12:01:47 +0000 (12:01 +0000)
make iDVBChannel accessible from python (needed for get iDVBFrontend)
make iDVBFrontend accessible from python for raw tuning transponders and send diseqc messages

lib/dvb/dvb.h
lib/dvb/frontend.cpp
lib/dvb/frontend.h
lib/dvb/idvb.h
lib/python/enigma_python.i

index 836a494..3451e48 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __dvb_dvb_h
 #define __dvb_dvb_h
 
 #ifndef __dvb_dvb_h
 #define __dvb_dvb_h
 
+#ifndef SWIG
+
 #include <lib/base/ebase.h>
 #include <lib/base/filepush.h>
 #include <lib/base/elock.h>
 #include <lib/base/ebase.h>
 #include <lib/base/filepush.h>
 #include <lib/base/elock.h>
@@ -117,6 +119,8 @@ private:
        eSmartPtrList<eDVBDemux>    m_demux;
 };
 
        eSmartPtrList<eDVBDemux>    m_demux;
 };
 
+#endif // SWIG
+
 class eDVBResourceManager: public iObject, public Object
 {
        DECLARE_REF(eDVBResourceManager);
 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();
        eTimer m_releaseCachedChannelTimer;
        void DVBChannelStateChanged(iDVBChannel*);
        void releaseCachedChannel();
+#ifndef SWIG
 public:
 public:
+#endif
        eDVBResourceManager();
        virtual ~eDVBResourceManager();
        eDVBResourceManager();
        virtual ~eDVBResourceManager();
-       
-       static RESULT getInstance(ePtr<eDVBResourceManager> &ptr) { if (instance) { ptr = instance; return 0; } return -1; }
-       
+
        RESULT setChannelList(iDVBChannelList *list);
        RESULT getChannelList(ePtr<iDVBChannelList> &list);
        
        RESULT setChannelList(iDVBChannelList *list);
        RESULT getChannelList(ePtr<iDVBChannelList> &list);
        
@@ -186,16 +190,21 @@ public:
                errChidNotFound = -3
        };
 
                errChidNotFound = -3
        };
 
+       RESULT connectChannelAdded(const Slot1<void,eDVBChannel*> &channelAdded, ePtr<eConnection> &connection);
+       bool canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID &ignore);
+
                /* allocate channel... */
        RESULT allocateChannel(const eDVBChannelID &channelid, eUsePtr<iDVBChannel> &channel);
                /* allocate channel... */
        RESULT allocateChannel(const eDVBChannelID &channelid, eUsePtr<iDVBChannel> &channel);
-       RESULT allocateRawChannel(eUsePtr<iDVBChannel> &channel, int frontend_index);
        RESULT allocatePVRChannel(eUsePtr<iDVBPVRChannel> &channel);
        RESULT allocatePVRChannel(eUsePtr<iDVBPVRChannel> &channel);
-
-       RESULT connectChannelAdded(const Slot1<void,eDVBChannel*> &channelAdded, ePtr<eConnection> &connection);
-
-       bool canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID &ignore);
+#ifdef SWIG
+public:
+#endif
+       RESULT allocateRawChannel(eUsePtr<iDVBChannel> &channel, int frontend_index);
+       static RESULT getInstance(ePtr<eDVBResourceManager> &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
 {
        /* iDVBPVRChannel includes iDVBChannel. don't panic. */
 class eDVBChannel: public iDVBPVRChannel, public iFilePushScatterGather, public Object
 {
@@ -272,4 +281,5 @@ private:
        void ReleaseUse();
 };
 
        void ReleaseUse();
 };
 
+#endif // SWIG
 #endif
 #endif
index 0fd12be..3e2efbe 100644 (file)
 #include <dvbsi++/cable_delivery_system_descriptor.h>
 #include <dvbsi++/terrestrial_delivery_system_descriptor.h>
 
 #include <dvbsi++/cable_delivery_system_descriptor.h>
 #include <dvbsi++/terrestrial_delivery_system_descriptor.h>
 
+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;
 void eDVBFrontendParametersSatellite::set(const SatelliteDeliverySystemDescriptor &descriptor)
 {
        frequency    = descriptor.getFrequency() * 10;
index 6d68326..8781400 100644 (file)
@@ -2,10 +2,6 @@
 #define __dvb_frontend_h
 
 #include <lib/dvb/idvb.h>
 #define __dvb_frontend_h
 
 #include <lib/dvb/idvb.h>
-#include <lib/dvb/sec.h>
-
-class eSecCommandList;
-
 class eDVBFrontendParameters: public iDVBFrontendParameters
 {
        DECLARE_REF(eDVBFrontendParameters);
 class eDVBFrontendParameters: public iDVBFrontendParameters
 {
        DECLARE_REF(eDVBFrontendParameters);
@@ -33,6 +29,11 @@ public:
        RESULT getHash(unsigned long &hash) const;
 };
 
        RESULT getHash(unsigned long &hash) const;
 };
 
+#ifndef SWIG
+
+#include <lib/dvb/sec.h>
+class eSecCommandList;
+
 class eDVBFrontend: public iDVBFrontend, public Object
 {
        DECLARE_REF(eDVBFrontend);
 class eDVBFrontend: public iDVBFrontend, public Object
 {
        DECLARE_REF(eDVBFrontend);
@@ -111,4 +112,5 @@ public:
        int closeFrontend();
 };
 
        int closeFrontend();
 };
 
+#endif // SWIG
 #endif
 #endif
index 955688b..a6a19ff 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef __dvb_idvb_h
 #define __dvb_idvb_h
 
 #ifndef __dvb_idvb_h
 #define __dvb_idvb_h
 
+#ifndef SWIG
+
 #if HAVE_DVB_API_VERSION < 3
 #include <ost/frontend.h>
 #define FRONTENDPARAMETERS FrontendParameters
 #if HAVE_DVB_API_VERSION < 3
 #include <ost/frontend.h>
 #define FRONTENDPARAMETERS FrontendParameters
@@ -299,16 +301,22 @@ public:
        virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source)=0;
 };
 
        virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query, const eServiceReference &source)=0;
 };
 
+#endif  // SWIG
+
 class iDVBFrontendParameters: public iObject
 {
 class iDVBFrontendParameters: public iObject
 {
+#ifdef SWIG
+       iDVBFrontendParameters();
+       ~iDVBFrontendParameters();
+#endif
 public:
 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
 };
 
 #define MAX_DISEQC_LENGTH  16
@@ -317,11 +325,14 @@ class eDVBDiseqcCommand
 {
 public:
        int len;
 {
 public:
        int len;
+#ifndef SWIG
        __u8 data[MAX_DISEQC_LENGTH];
 #if HAVE_DVB_API_VERSION < 3
        int tone;
        int voltage;
 #endif
        __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;
 };
 
 class iDVBSatelliteEquipmentControl;
@@ -335,7 +346,9 @@ public:
        };
        virtual RESULT getFrontendType(int &type)=0;
        virtual RESULT tune(const iDVBFrontendParameters &where)=0;
        };
        virtual RESULT getFrontendType(int &type)=0;
        virtual RESULT tune(const iDVBFrontendParameters &where)=0;
+#ifndef SWIG
        virtual RESULT connectStateChange(const Slot1<void,iDVBFrontend*> &stateChange, ePtr<eConnection> &connection)=0;
        virtual RESULT connectStateChange(const Slot1<void,iDVBFrontend*> &stateChange, ePtr<eConnection> &connection)=0;
+#endif
        enum {
                stateIdle = 0,
                stateTuning = 1,
        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;
        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;
        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;
 
        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;
        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<iDVBFrontendParameters> &feparm)=0;
                /* 0 means: not compatible. other values are a priority. */
        virtual int isCompatibleWith(ePtr<iDVBFrontendParameters> &feparm)=0;
+#endif
 };
 };
+TEMPLATE_TYPEDEF(ePtr<iDVBFrontend>, iDVBFrontendPtr);
 
 
+#ifndef SWIG
 class iDVBSatelliteEquipmentControl: public iObject
 {
 public:
 class iDVBSatelliteEquipmentControl: public iObject
 {
 public:
@@ -382,6 +399,7 @@ struct eDVBCIRouting
 {
        int enabled;
 };
 {
        int enabled;
 };
+#endif // SWIG
 
 class iDVBChannel: public iObject
 {
 
 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. */
        };
                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<iDVBFrontend> &frontend)=0;
+
+#ifndef SWIG
+       virtual RESULT getCurrentFrontendParameters(ePtr<iDVBFrontendParameters> &)=0;
        enum 
        {
                evtEOF, evtSOF, evtFailed
        };
        virtual RESULT connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)=0;
        virtual RESULT connectEvent(const Slot2<void,iDVBChannel*,int> &eventChange, ePtr<eConnection> &connection)=0;
        enum 
        {
                evtEOF, evtSOF, evtFailed
        };
        virtual RESULT connectStateChange(const Slot1<void,iDVBChannel*> &stateChange, ePtr<eConnection> &connection)=0;
        virtual RESULT connectEvent(const Slot2<void,iDVBChannel*,int> &eventChange, ePtr<eConnection> &connection)=0;
-       virtual RESULT getState(int &state)=0;
-       
+
                /* demux capabilities */
        enum
        {
                /* demux capabilities */
        enum
        {
@@ -414,14 +437,14 @@ public:
        virtual RESULT setCIRouting(const eDVBCIRouting &routing)=0;
        virtual RESULT getDemux(ePtr<iDVBDemux> &demux, int cap=0)=0;
        
        virtual RESULT setCIRouting(const eDVBCIRouting &routing)=0;
        virtual RESULT getDemux(ePtr<iDVBDemux> &demux, int cap=0)=0;
        
-               /* direct frontend access for raw channels and/or status inquiries. */
-       virtual RESULT getFrontend(ePtr<iDVBFrontend> &frontend)=0;
-       virtual RESULT getCurrentFrontendParameters(ePtr<iDVBFrontendParameters> &)=0;
-       
                /* use count handling */
        virtual void AddUse() = 0;
        virtual void ReleaseUse() = 0;
                /* use count handling */
        virtual void AddUse() = 0;
        virtual void ReleaseUse() = 0;
+#endif
 };
 };
+TEMPLATE_TYPEDEF(ePtr<iDVBChannel>, iDVBChannelPtr);
+
+#ifndef SWIG
 
        /* signed, so we can express deltas. */
        
 
        /* signed, so we can express deltas. */
        
@@ -558,4 +581,5 @@ public:
        virtual RESULT getPTS(int what, pts_t &pts) = 0;
 };
 
        virtual RESULT getPTS(int what, pts_t &pts) = 0;
 };
 
+#endif //SWIG
 #endif
 #endif
index 36aeaa1..29294b1 100644 (file)
@@ -72,6 +72,9 @@ is usually caused by not marking PSignals as immutable.
 #include <lib/gdi/gfont.h>
 #include <lib/gdi/epng.h>
 #include <lib/dvb/db.h>
 #include <lib/gdi/gfont.h>
 #include <lib/gdi/epng.h>
 #include <lib/dvb/db.h>
+#include <lib/dvb/dvb.h>
+#include <lib/dvb/idvb.h>
+#include <lib/dvb/frontend.h>
 #include <lib/dvb/volume.h>
 #include <lib/dvb/sec.h>
 #include <lib/dvb/epgcache.h>
 #include <lib/dvb/volume.h>
 #include <lib/dvb/sec.h>
 #include <lib/dvb/epgcache.h>
@@ -188,6 +191,9 @@ typedef long time_t;
 %include <lib/dvb/epgcache.h>
 %include <lib/dvb/frontendparms.h>
 %include <lib/dvb/dvbtime.h>
 %include <lib/dvb/epgcache.h>
 %include <lib/dvb/frontendparms.h>
 %include <lib/dvb/dvbtime.h>
+%include <lib/dvb/dvb.h>
+%include <lib/dvb/idvb.h>
+%include <lib/dvb/frontend.h>
 %include <lib/driver/avswitch.h>
 %include <lib/driver/rfmod.h>
 %include <lib/driver/etimezone.h>
 %include <lib/driver/avswitch.h>
 %include <lib/driver/rfmod.h>
 %include <lib/driver/etimezone.h>