aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-09 12:01:47 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-03-09 12:01:47 +0000
commitf2c69b1c3a49b8b03866894fe3e3f3a4f330f517 (patch)
tree348b473aa104829a62b9ed0eec44d2fcb8f34e52 /lib/dvb
parentd0ffa458c4d703df7c2d7dceb8f101bb6c047ff8 (diff)
downloadenigma2-f2c69b1c3a49b8b03866894fe3e3f3a4f330f517.tar.gz
enigma2-f2c69b1c3a49b8b03866894fe3e3f3a4f330f517.zip
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
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/dvb.h26
-rw-r--r--lib/dvb/frontend.cpp8
-rw-r--r--lib/dvb/frontend.h10
-rw-r--r--lib/dvb/idvb.h54
4 files changed, 71 insertions, 27 deletions
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 <lib/base/ebase.h>
#include <lib/base/filepush.h>
#include <lib/base/elock.h>
@@ -117,6 +119,8 @@ private:
eSmartPtrList<eDVBDemux> 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<eDVBResourceManager> &ptr) { if (instance) { ptr = instance; return 0; } return -1; }
-
+
RESULT setChannelList(iDVBChannelList *list);
RESULT getChannelList(ePtr<iDVBChannelList> &list);
@@ -186,16 +190,21 @@ public:
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);
- RESULT allocateRawChannel(eUsePtr<iDVBChannel> &channel, int frontend_index);
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
{
@@ -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 <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;
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 <lib/dvb/idvb.h>
-#include <lib/dvb/sec.h>
-
-class eSecCommandList;
-
class eDVBFrontendParameters: public iDVBFrontendParameters
{
DECLARE_REF(eDVBFrontendParameters);
@@ -33,6 +29,11 @@ public:
RESULT getHash(unsigned long &hash) const;
};
+#ifndef SWIG
+
+#include <lib/dvb/sec.h>
+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 <ost/frontend.h>
#define FRONTENDPARAMETERS FrontendParameters
@@ -299,16 +301,22 @@ public:
virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &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<void,iDVBFrontend*> &stateChange, ePtr<eConnection> &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<iDVBFrontendParameters> &feparm)=0;
+#endif
};
+TEMPLATE_TYPEDEF(ePtr<iDVBFrontend>, 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<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;
- 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<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;
+#endif
};
+TEMPLATE_TYPEDEF(ePtr<iDVBChannel>, 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