diff options
| author | Felix Domke <tmbinc@elitedvb.net> | 2003-10-17 15:36:42 +0000 |
|---|---|---|
| committer | Felix Domke <tmbinc@elitedvb.net> | 2003-10-17 15:36:42 +0000 |
| commit | d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5 (patch) | |
| tree | 84d0cacfd0b6c1241c236c7860f7cbd7f26901bb /main | |
| download | enigma2-d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5.tar.gz enigma2-d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5.zip | |
import of enigma2
Diffstat (limited to 'main')
| -rw-r--r-- | main/Makefile.am | 31 | ||||
| -rw-r--r-- | main/Makefile.in | 0 | ||||
| -rw-r--r-- | main/enigma-dvbtest.cpp | 125 | ||||
| -rw-r--r-- | main/enigma-scan.cpp | 94 | ||||
| -rw-r--r-- | main/enigma.cpp | 90 |
5 files changed, 340 insertions, 0 deletions
diff --git a/main/Makefile.am b/main/Makefile.am new file mode 100644 index 00000000..2f63dff1 --- /dev/null +++ b/main/Makefile.am @@ -0,0 +1,31 @@ +INCLUDES = \ + -I$(top_srcdir)/include + +bin_PROGRAMS = enigma2 + +enigma2_SOURCES = \ + enigma.cpp + +enigma2_LDADD_WHOLE = \ + $(top_builddir)/lib/base/libenigma_base.a \ + $(top_builddir)/lib/driver/libenigma_driver.a \ + $(top_builddir)/lib/dvb/libenigma_dvb.a \ + $(top_builddir)/lib/dvb_si/libenigma_dvb_si.a \ + $(top_builddir)/lib/gui/libenigma_gui.a \ + $(top_builddir)/lib/gdi/libenigma_gdi.a \ + $(top_builddir)/lib/network/libenigma_network.a \ + $(top_builddir)/lib/service/libenigma_service.a + +enigma2_LDADD = \ + @FREETYPE_LIBS@ \ + @ID3TAG_LIBS@ \ + @MAD_LIBS@ \ + @MD5SUM_LIBS@ \ + @PNG_LIBS@ \ + @SIGC_LIBS@ \ + @XMLTREE_LIBS@ \ + -ldl -lpthread -lcrypt -lresolv + +enigma2$(EXEEXT): $(enigma2_OBJECTS) $(enigma2_DEPENDENCIES) $(enigma2_LDADD_WHOLE) + @rm -f enigma2$(EXEEXT) + $(CXXLINK) $(enigma2_LDFLAGS) $(enigma2_OBJECTS) -Wl,--export-dynamic -Wl,--whole-archive $(enigma2_LDADD_WHOLE) -Wl,--no-whole-archive $(enigma2_LDADD) $(LIBS) diff --git a/main/Makefile.in b/main/Makefile.in new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/main/Makefile.in diff --git a/main/enigma-dvbtest.cpp b/main/enigma-dvbtest.cpp new file mode 100644 index 00000000..4fdb6984 --- /dev/null +++ b/main/enigma-dvbtest.cpp @@ -0,0 +1,125 @@ +#include <stdio.h> +#include <libsig_comp.h> +#include <lib/base/ebase.h> +#include <lib/base/eerror.h> + +#include <lib/dvb/dvb.h> +#include <lib/dvb/db.h> +#include <lib/dvb/isection.h> +#include <lib/dvb/esection.h> +#include <lib/dvb_si/pmt.h> +#include <lib/dvb/specs.h> +#include <unistd.h> + +class eMain: public eApplication, public Object +{ + ePtr<eDVBResourceManager> m_mgr; + ePtr<iDVBChannel> m_channel; + ePtr<iDVBDemux> m_demux; + eAUTable<eTable<ProgramMapTable> > m_table; + + ePtr<eDVBDB> m_dvbdb; + + ePtr<eConnection> m_state_change_connection; + int m_last_channel_state; +public: + eMain() + { + eDebug("mich gibts nu!"); + + m_mgr = new eDVBResourceManager(); + + m_dvbdb = new eDVBDB(); + m_mgr->setChannelList(m_dvbdb); + + eDVBChannelID chid(1,2,3); + + eDVBFrontendParametersSatellite fesat; + + fesat.frequency = 12070000; + fesat.symbol_rate = 27500000; + fesat.polarisation = eDVBFrontendParametersSatellite::Polarisation::Horizontal; + fesat.fec = eDVBFrontendParametersSatellite::FEC::f3_4; + fesat.inversion = eDVBFrontendParametersSatellite::Inversion::Off; + fesat.orbital_position = 192; + + eDVBFrontendParameters *fe = new eDVBFrontendParameters(); + + fe->setDVBS(fesat); + + m_dvbdb->addChannelToList(chid, fe); + + if (m_mgr->allocateChannel(chid, m_channel)) + eDebug("shit it failed!"); + + if (m_channel) + { + m_channel->connectStateChange(slot(*this, &eMain::channelStateChanged), m_state_change_connection); + channelStateChanged(m_channel); + } + } + + void channelStateChanged(iDVBChannel *channel) + { + int state; + channel->getState(state); + eDebug("channel state is now %d", state); + + if ((m_last_channel_state != iDVBChannel::state_ok) + && (state == iDVBChannel::state_ok) && (!m_demux)) + { + eDebug("we'll start tuning!"); + if (m_channel) + if (m_channel->getDemux(m_demux)) + eDebug("shit it failed.. again."); + + if (m_demux) + { + CONNECT(m_table.tableReady, eMain::tableReady); + m_table.begin(this, eDVBPMTSpec(0x20, 0x33f6), m_demux); + } + } + + m_last_channel_state = state; + } + + void tableReady(int) + { + ePtr<eTable<ProgramMapTable> > ptr; + if (!m_table.getCurrent(ptr)) + { + ProgramMapTableConstIterator i; + for (i = ptr->getSections().begin(); i != ptr->getSections().end(); ++i) + { + const ProgramMapTable &pmt = **i; + eDebug("pcr pid: %x", pmt.getPcrPid()); + } + eDebug("program map ..."); + quit(0); + } + eDebug("table ready."); + } + + ~eMain() + { + eDebug("... nicht mehr."); + } +}; + +#ifdef OBJECT_DEBUG +int object_total_remaining; + +void object_dump() +{ + printf("%d items left\n", object_total_remaining); +} +#endif + +int main() +{ +#ifdef OBJECT_DEBUG + atexit(object_dump); +#endif + eMain app; + return app.exec(); +} diff --git a/main/enigma-scan.cpp b/main/enigma-scan.cpp new file mode 100644 index 00000000..af50548e --- /dev/null +++ b/main/enigma-scan.cpp @@ -0,0 +1,94 @@ +#include <stdio.h> +#include <libsig_comp.h> +#include <lib/base/ebase.h> +#include <lib/base/eerror.h> +#include <lib/base/init.h> +#include <lib/base/init_num.h> + +#include <lib/dvb/dvb.h> +#include <lib/dvb/db.h> +#include <lib/dvb/isection.h> +#include <lib/dvb/esection.h> +#include <lib/dvb_si/pmt.h> +#include <lib/dvb/scan.h> +#include <unistd.h> + +class eMain: public eApplication, public Object +{ + eInit init; + + eDVBScan *m_scan; + + ePtr<eDVBResourceManager> m_mgr; + ePtr<iDVBChannel> m_channel; + ePtr<eDVBDB> m_dvbdb; + + void scanEvent(int evt) + { + eDebug("scan event %d!", evt); + if (evt == eDVBScan::evtFinish) + { + m_scan->insertInto(m_dvbdb); + quit(0); + } + } + ePtr<eConnection> m_scan_event_connection; +public: + eMain() + { + m_dvbdb = new eDVBDB(); + m_mgr = new eDVBResourceManager(); + + eDVBFrontendParametersSatellite fesat; + + fesat.frequency = 11817000; // 12070000; + fesat.symbol_rate = 27500000; + fesat.polarisation = eDVBFrontendParametersSatellite::Polarisation::Vertical; + fesat.fec = eDVBFrontendParametersSatellite::FEC::f3_4; + fesat.inversion = eDVBFrontendParametersSatellite::Inversion::Off; + fesat.orbital_position = 192; + + eDVBFrontendParameters *fe = new eDVBFrontendParameters(); + + fe->setDVBS(fesat); + + if (m_mgr->allocateRawChannel(m_channel)) + eDebug("shit it failed!"); + +// init.setRunlevel(eAutoInitNumbers::main); + eDebug("starting scan..."); + + std::list<ePtr<iDVBFrontendParameters> > list; + + list.push_back(fe); + + m_scan = new eDVBScan(m_channel); + m_scan->start(list); + + m_scan->connectEvent(slot(*this, &eMain::scanEvent), m_scan_event_connection); + } + + ~eMain() + { + delete m_scan; + eDebug("... nicht mehr."); + } +}; + +#ifdef OBJECT_DEBUG +int object_total_remaining; + +void object_dump() +{ + printf("%d items left\n", object_total_remaining); +} +#endif + +int main() +{ +#ifdef OBJECT_DEBUG + atexit(object_dump); +#endif + eMain app; + return app.exec(); +} diff --git a/main/enigma.cpp b/main/enigma.cpp new file mode 100644 index 00000000..7543e451 --- /dev/null +++ b/main/enigma.cpp @@ -0,0 +1,90 @@ +#include <stdio.h> +#include <libsig_comp.h> +#include <lib/base/ebase.h> +#include <lib/base/eerror.h> +#include <lib/base/init.h> +#include <lib/base/init_num.h> + +#include <lib/dvb/dvb.h> +#include <lib/dvb/db.h> +#include <lib/dvb/isection.h> +#include <lib/dvb/esection.h> +#include <lib/dvb_si/pmt.h> +#include <lib/dvb/scan.h> +#include <unistd.h> + +#include <lib/service/iservice.h> + +class eMain: public eApplication, public Object +{ + eInit init; + + ePtr<eDVBResourceManager> m_mgr; + ePtr<iDVBChannel> m_channel; + ePtr<eDVBDB> m_dvbdb; + + ePtr<iPlayableService> m_playservice; +public: + eMain() + { + init.setRunlevel(eAutoInitNumbers::main); + m_dvbdb = new eDVBDB(); + m_mgr = new eDVBResourceManager(); + m_mgr->setChannelList(m_dvbdb); + + ePtr<eServiceCenter> service_center; + eServiceCenter::getInstance(service_center); + + if (service_center) + { + eServiceReference ref("2:0:1:0:0:0:0:0:0:0:/"); + ePtr<iListableService> lst; + if (service_center->list(ref, lst)) + eDebug("no list available!"); + else + { + std::list<eServiceReference> list; + if (lst->getContent(list)) + eDebug("list itself SUCKED AROUND!!!"); + else + for (std::list<eServiceReference>::const_iterator i(list.begin()); + i != list.end(); ++i) + eDebug("%s", i->toString().c_str()); + } + } + + eServiceReference ref("1:0:1:6de2:44d:1:c00000:0:0:0:"); + + if (service_center) + { + if (service_center->play(ref, m_playservice)) + eDebug("play sucked around!"); + else + eDebug("play r00lz!"); + } else + eDebug("no service center: no play."); + } + + ~eMain() + { + + } +}; + +#ifdef OBJECT_DEBUG +int object_total_remaining; + +void object_dump() +{ + printf("%d items left\n", object_total_remaining); +} +#endif + +int main() +{ +#ifdef OBJECT_DEBUG + atexit(object_dump); +#endif + eMain app; + return app.exec(); +} |
