remove Makefile.in
[enigma2.git] / main / enigma.cpp
1 #include <stdio.h>
2 #include <libsig_comp.h>
3 #include <lib/base/ebase.h>
4 #include <lib/base/eerror.h>
5 #include <lib/base/init.h>
6 #include <lib/base/init_num.h>
7
8 #include <lib/dvb/dvb.h>
9 #include <lib/dvb/db.h>
10 #include <lib/dvb/isection.h>
11 #include <lib/dvb/esection.h>
12 #include <lib/dvb_si/pmt.h>
13 #include <lib/dvb/scan.h>
14 #include <unistd.h>
15
16 #include <lib/service/iservice.h>
17 #include <lib/nav/core.h>
18
19 class eMain: public eApplication, public Object
20 {
21         eInit init;
22         
23         ePtr<eDVBResourceManager> m_mgr;
24         ePtr<iDVBChannel> m_channel;
25         ePtr<eDVBDB> m_dvbdb;
26
27         ePtr<iPlayableService> m_playservice;
28         ePtr<eNavigation> m_nav;
29         ePtr<eConnection> m_conn_event;
30         ePtr<iServiceInformation> m_serviceInformation;
31 public:
32         eMain()
33         {
34                 init.setRunlevel(eAutoInitNumbers::main);
35                 m_dvbdb = new eDVBDB();
36                 m_mgr = new eDVBResourceManager();
37                 m_mgr->setChannelList(m_dvbdb);
38                 
39                 ePtr<eServiceCenter> service_center;
40                 eServiceCenter::getInstance(service_center);
41
42                 assert(service_center);
43                 m_nav = new eNavigation(service_center);
44 #if 0
45                 if (service_center)
46                 {
47                         eServiceReference ref("2:0:1:0:0:0:0:0:0:0:/");
48                         ePtr<iListableService> lst;
49                         if (service_center->list(ref, lst))
50                                 eDebug("no list available!");
51                         else
52                         {
53                                 std::list<eServiceReference> list;
54                                 if (lst->getContent(list))
55                                         eDebug("list itself SUCKED AROUND!!!");
56                                 else
57                                         for (std::list<eServiceReference>::const_iterator i(list.begin());
58                                                 i != list.end(); ++i)
59                                                 eDebug("%s", i->toString().c_str());
60                         }
61                 }
62 #endif          
63                 m_nav->connectEvent(slot(*this, &eMain::event), m_conn_event);
64                 
65 //              eServiceReference ref("1:0:1:6de2:44d:1:c00000:0:0:0:");
66                 eServiceReference ref("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp3");
67                 eServiceReference ref1("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp31");
68                 eServiceReference ref2("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp32");
69                 
70                 if (m_nav->enqueueService(ref))
71                         eDebug("play sucked around!");
72                 else
73                         eDebug("play r00lz!");
74
75                 m_nav->enqueueService(ref1);
76                 m_nav->enqueueService(ref2);
77                 m_nav->enqueueService(ref1);
78         }
79         
80         void event(eNavigation *nav, int ev)
81         {
82                 switch (ev)
83                 {
84                 case eNavigation::evStopService:
85                                 /* very important: the old service should be deallocated, so clear *all* references to it */
86                         m_serviceInformation = 0;
87                         eDebug("STOP service!");
88                         break;
89                 case eNavigation::evNewService:
90                 {
91                         ePtr<iPlayableService> service;
92                         nav->getCurrentService(service);
93                         if (!service)
94                         {
95                                 eDebug("no running service!");
96                                 break;
97                         }
98                         if (service->getIServiceInformation(m_serviceInformation))
99                         {
100                                 eDebug("failed to get iserviceinformation");
101                                 break;
102                         }
103                         eString name;
104                         m_serviceInformation->getName(name);
105                         eDebug("NEW running service: %s", name.c_str());
106                         break;
107                 }
108                 case eNavigation::evPlayFailed:
109                         eDebug("play failed!");
110                         break;
111                 case eNavigation::evPlaylistDone:
112                         eDebug("playlist done");
113                         quit();
114                         break;
115                 default:
116                         eDebug("Navigation event %d", ev);
117                         break;
118                 }
119         }
120         
121         ~eMain()
122         {
123         }
124 };
125
126 #ifdef OBJECT_DEBUG
127 int object_total_remaining;
128
129 void object_dump()
130 {
131         printf("%d items left\n", object_total_remaining);
132 }
133 #endif
134
135 int main()
136 {
137 #ifdef OBJECT_DEBUG
138         atexit(object_dump);
139 #endif
140         eMain app;
141         int res = app.exec();
142         eDebug("after exec");
143 }