1 #include <showbnversion.h>
2 #include <lib/driver/rc.h>
3 #include <lib/dvb/edvb.h>
4 #include <lib/dvb/si.h>
5 #include <lib/gui/elabel.h>
6 #include <lib/dvb/dvbservice.h>
7 #include <lib/gui/guiactions.h>
8 #include <lib/gdi/font.h>
11 was hier fehlt: parsen der BAT (batid: 5001) auf 0001:0085. daher wird 0001:0085:0F03 assumed.
12 ebenfalls: ContentDescriptor, stream_identifier fuer population-zuordnung.
14 extrahieren und tag anzeigen sowie decompilieren/simulieren um "Starte ..." zu ermitteln.
17 class BNDirectory
: public eSection
19 int sectionRead(__u8
*d
);
20 void sectionFinish(int err
);
24 BNDirectory(int pid
, eString text
, eLabel
*res
);
27 int BNDirectory::sectionRead(__u8
*d
)
30 eString versions
=text
;
37 eString dst
="", file
="", dst2
="", version
="";
51 eDebug("%s/%s/%s/%s", dst
.c_str(), file
.c_str(), dst2
.c_str(), version
.c_str());
52 if (versions
.find(version
)==eString::npos
)
60 result
->setText(versions
);
64 void BNDirectory::sectionFinish(int err
)
68 BNDirectory::BNDirectory(int pid
, eString text
, eLabel
*res
): eSection(pid
, 0x80, -1, -1, 0), result(res
), text(text
)
72 void ShowBNVersion::willShow()
74 eDVBServiceController
*sapi
=eDVB::getInstance()->getServiceAPI();
77 text
->setText("Service system unavailable");
81 // try astra 19.2 and cable.
82 if (sapi
->switchService(eServiceReferenceDVB(eDVBNamespace(192<<16), eTransportStreamID(0x0001), eOriginalNetworkID(0x0085), eServiceID(0x0F03), -1)) &&
83 sapi
->switchService(eServiceReferenceDVB(eDVBNamespace(0), eTransportStreamID(0x0001), eOriginalNetworkID(0x0085), eServiceID(0x0F03), -1)))
84 text
->setText("Transponder not found. Do a channelsearch first.");
86 text
->setText("Tuning in transponder...");
89 int ShowBNVersion::eventHandler(const eWidgetEvent
&event
)
93 case eWidgetEvent::evtAction
:
94 if ((event
.action
== &i_cursorActions
->ok
) || (event
.action
== &i_cursorActions
->cancel
))
102 return eWidget::eventHandler(event
);
105 void ShowBNVersion::willHide()
109 void ShowBNVersion::eventOccured(const eDVBEvent
&event
)
111 eDVBServiceController
*sapi
=eDVB::getInstance()->getServiceAPI();
115 if (event
.type
==eDVBServiceEvent::eventServiceSwitched
)
117 if ((sapi
->service
.getServiceID()==eServiceID(0x0F03)) &&
118 (sapi
->service
.getOriginalNetworkID()==eOriginalNetworkID(0x0085)))
120 text
->setText("Tuned in transponder.\nReading version information...");
121 PMT
*pmt
=eDVB::getInstance()->getPMT();
126 for (ePtrList
<PMTEntry
>::iterator
i(pmt
->streams
); i
!= pmt
->streams
.end() && n
<2; ++i
)
127 pid
[n
++]=i
->elementary_PID
;
131 bnd
[1]=new BNDirectory(pid
[0], "pop=1: ", res1
);
137 bnd
[0]=new BNDirectory(pid
[1], "pop=2: ", res2
);
144 if (event
.type
==eDVBServiceEvent::eventServiceFailed
)
145 text
->setText("Tune failed. Please do a channelsearch first.");
148 ShowBNVersion::ShowBNVersion(): eWindow(1)
150 setText("Show current BN version");
151 cmove(ePoint(150, 150));
152 cresize(eSize(400, 300));
154 text
=new eLabel(this);
155 text
->move(ePoint(10, 40));
156 text
->resize(eSize(380, 60));
157 text
->setFlags(RS_WRAP
);
159 res1
=new eLabel(this);
160 res1
->move(ePoint(10, 100));
161 res1
->resize(eSize(380, 30));
163 res2
=new eLabel(this);
164 res2
->move(ePoint(10, 130));
165 res2
->resize(eSize(380, 30));
167 CONNECT(eDVB::getInstance()->eventOccured
, ShowBNVersion::eventOccured
);
174 ShowBNVersion::~ShowBNVersion()