2 #include <libsig_comp.h>
3 #include <lib/base/ebase.h>
4 #include <lib/base/eerror.h>
6 #include <lib/dvb/dvb.h>
7 #include <lib/dvb/db.h>
8 #include <lib/dvb/isection.h>
9 #include <lib/dvb/esection.h>
10 #include <lib/dvb_si/pmt.h>
11 #include <lib/dvb/specs.h>
14 class eMain: public eApplication, public Object
16 ePtr<eDVBResourceManager> m_mgr;
17 ePtr<iDVBChannel> m_channel;
18 ePtr<iDVBDemux> m_demux;
19 eAUTable<eTable<ProgramMapTable> > m_table;
23 ePtr<eConnection> m_state_change_connection;
24 int m_last_channel_state;
28 eDebug("mich gibts nu!");
30 m_mgr = new eDVBResourceManager();
32 m_dvbdb = new eDVBDB();
33 m_mgr->setChannelList(m_dvbdb);
35 eDVBChannelID chid(1,2,3);
37 eDVBFrontendParametersSatellite fesat;
39 fesat.frequency = 12070000;
40 fesat.symbol_rate = 27500000;
41 fesat.polarisation = eDVBFrontendParametersSatellite::Polarisation::Horizontal;
42 fesat.fec = eDVBFrontendParametersSatellite::FEC::f3_4;
43 fesat.inversion = eDVBFrontendParametersSatellite::Inversion::Off;
44 fesat.orbital_position = 192;
46 eDVBFrontendParameters *fe = new eDVBFrontendParameters();
50 m_dvbdb->addChannelToList(chid, fe);
52 if (m_mgr->allocateChannel(chid, m_channel))
53 eDebug("shit it failed!");
57 m_channel->connectStateChange(slot(*this, &eMain::channelStateChanged), m_state_change_connection);
58 channelStateChanged(m_channel);
62 void channelStateChanged(iDVBChannel *channel)
65 channel->getState(state);
66 eDebug("channel state is now %d", state);
68 if ((m_last_channel_state != iDVBChannel::state_ok)
69 && (state == iDVBChannel::state_ok) && (!m_demux))
71 eDebug("we'll start tuning!");
73 if (m_channel->getDemux(m_demux))
74 eDebug("shit it failed.. again.");
78 CONNECT(m_table.tableReady, eMain::tableReady);
79 m_table.begin(this, eDVBPMTSpec(0x20, 0x33f6), m_demux);
83 m_last_channel_state = state;
88 ePtr<eTable<ProgramMapTable> > ptr;
89 if (!m_table.getCurrent(ptr))
91 ProgramMapTableConstIterator i;
92 for (i = ptr->getSections().begin(); i != ptr->getSections().end(); ++i)
94 const ProgramMapTable &pmt = **i;
95 eDebug("pcr pid: %x", pmt.getPcrPid());
97 eDebug("program map ...");
100 eDebug("table ready.");
105 eDebug("... nicht mehr.");
110 int object_total_remaining;
114 printf("%d items left\n", object_total_remaining);