aboutsummaryrefslogtreecommitdiff
path: root/lib/dvb
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-12-05 19:24:42 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2005-12-05 19:24:42 +0000
commit572caca1ba06dd8247724c9f5d6bcad515e2edf4 (patch)
tree8525a3017c1d58b03b667cd8d77f942318256ddd /lib/dvb
parent3c2c648735df18576453aa52f0d8441793619dc7 (diff)
downloadenigma2-572caca1ba06dd8247724c9f5d6bcad515e2edf4.tar.gz
enigma2-572caca1ba06dd8247724c9f5d6bcad515e2edf4.zip
add support for Linkage services ( Premiere Subservices )
TODO: show/hide green point depending on avail subservices
Diffstat (limited to 'lib/dvb')
-rw-r--r--lib/dvb/eit.cpp5
-rw-r--r--lib/dvb/eit.h1
-rw-r--r--lib/dvb/idvb.h6
-rw-r--r--lib/dvb/specs.h21
4 files changed, 33 insertions, 0 deletions
diff --git a/lib/dvb/eit.cpp b/lib/dvb/eit.cpp
index cc2c29b2..9f3169f9 100644
--- a/lib/dvb/eit.cpp
+++ b/lib/dvb/eit.cpp
@@ -42,6 +42,11 @@ void eDVBServiceEITHandler::start(iDVBDemux *demux, int sid)
m_EIT.begin(eApp, eDVBEITSpec(sid), demux);
}
+void eDVBServiceEITHandler::startOther(iDVBDemux *demux, int sid)
+{
+ m_EIT.begin(eApp, eDVBEITSpecOther(sid), demux);
+}
+
RESULT eDVBServiceEITHandler::getEvent(ePtr<eServiceEvent> &event, int nownext)
{
event = nownext ? m_event_next : m_event_now;
diff --git a/lib/dvb/eit.h b/lib/dvb/eit.h
index 43bdb6b2..bc52e146 100644
--- a/lib/dvb/eit.h
+++ b/lib/dvb/eit.h
@@ -19,6 +19,7 @@ public:
eDVBServiceEITHandler();
void start(iDVBDemux *demux, int sid);
+ void startOther(iDVBDemux *demux, int sid);
RESULT getEvent(ePtr<eServiceEvent> &event, int nownext);
diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h
index 22eccbd9..742a3a32 100644
--- a/lib/dvb/idvb.h
+++ b/lib/dvb/idvb.h
@@ -153,6 +153,12 @@ struct eServiceReferenceDVB: public eServiceReference
eDVBNamespace getDVBNamespace() const { return eDVBNamespace(data[4]); }
void setDVBNamespace(eDVBNamespace dvbnamespace) { data[4]=dvbnamespace.get(); }
+ eServiceID getParentServiceID() const { return eServiceID(data[5]); }
+ void setParentServiceID( eServiceID sid ) { data[5]=sid.get(); }
+
+ eTransportStreamID getParentTransportStreamID() const { return eTransportStreamID(data[6]); }
+ void setParentTransportStreamID( eTransportStreamID tsid ) { data[6]=tsid.get(); }
+
eServiceReferenceDVB(eDVBNamespace dvbnamespace, eTransportStreamID transport_stream_id, eOriginalNetworkID original_network_id, eServiceID service_id, int service_type)
:eServiceReference(eServiceReference::idDVB, 0)
{
diff --git a/lib/dvb/specs.h b/lib/dvb/specs.h
index 23ef2cec..afd5cef8 100644
--- a/lib/dvb/specs.h
+++ b/lib/dvb/specs.h
@@ -127,4 +127,25 @@ public:
}
};
+class eDVBEITSpecOther
+{
+ eDVBTableSpec m_spec;
+public:
+ /* this is for now&next on actual transponder. */
+ eDVBEITSpecOther(int sid)
+ {
+ m_spec.pid = EventInformationSection::PID;
+ m_spec.tid = TID_EIT_OTHER;
+ m_spec.tidext = sid;
+ m_spec.timeout = EventInformationSection::TIMEOUT;
+ m_spec.flags = eDVBTableSpec::tfAnyVersion |
+ eDVBTableSpec::tfHaveTID | eDVBTableSpec::tfHaveTIDExt |
+ eDVBTableSpec::tfCheckCRC | eDVBTableSpec::tfHaveTimeout;
+ }
+ operator eDVBTableSpec &()
+ {
+ return m_spec;
+ }
+};
+
#endif