From d9ee52e4f0fbe9a1ae00d0e66f9e6f0a07fa319f Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Mon, 7 Feb 2005 09:14:02 +0000 Subject: [PATCH] - added iStaticServiceInformation - added service list interface for dvb - started work on queries (currently only "instr" on servicename) - started work on infobar - added listbox with service - fixed dvbdb - remove some debug output --- components.py | 5 +- lamedb | 3255 ++++++++++++++++++++++++++++++++++++++++ lib/base/connection.cpp | 5 + lib/dvb/db.cpp | 85 ++ lib/dvb/db.h | 32 +- lib/dvb/idvb.h | 69 +- lib/dvb/stT1RVV7 | 0 lib/gdi/font.cpp | 2 +- lib/gui/elistbox.cpp | 69 +- lib/gui/elistbox.h | 18 +- lib/gui/elistboxcontent.cpp | 14 +- lib/gui/elistboxcontent.h | 2 - lib/nav/core.cpp | 2 +- lib/python/enigma_python.i | 1 + lib/service/iservice.h | 25 +- lib/service/listboxservice.cpp | 134 ++ lib/service/listboxservice.h | 48 + lib/service/service.cpp | 4 +- lib/service/service.h | 2 +- lib/service/servicedvb.cpp | 94 +- lib/service/servicedvb.h | 17 +- lib/service/servicefs.cpp | 10 +- lib/service/servicefs.h | 4 +- lib/service/servicemp3.cpp | 20 +- lib/service/servicemp3.h | 14 +- mytest.py | 35 +- screens.py | 78 +- skin.py | 33 +- 28 files changed, 3928 insertions(+), 149 deletions(-) create mode 100644 lamedb create mode 100644 lib/base/connection.cpp delete mode 100644 lib/dvb/stT1RVV7 create mode 100644 lib/service/listboxservice.cpp create mode 100644 lib/service/listboxservice.h diff --git a/components.py b/components.py index 8015621..48bcdaf 100644 --- a/components.py +++ b/components.py @@ -174,11 +174,11 @@ class Clock(HTMLComponent, GUIComponent, VariableText): return self.getText() class Button(HTMLComponent, GUIComponent, VariableText): - def __init__(self, text=""): + def __init__(self, text="", onClick = [ ]): GUIComponent.__init__(self) VariableText.__init__(self) self.setText(text) - self.onClick = [ ] + self.onClick = onClick def push(self): for x in self.onClick: @@ -224,7 +224,6 @@ class VolumeBar(HTMLComponent, GUIComponent, VariableValue): g.setRange(0, 100) return g - class MenuList(HTMLComponent, GUIComponent): def __init__(self, list): GUIComponent.__init__(self) diff --git a/lamedb b/lamedb new file mode 100644 index 0000000..83299f9 --- /dev/null +++ b/lamedb @@ -0,0 +1,3255 @@ +eDVB services /3/ +transponders +00c00000:03f0:0001 + s 11317500:22000000:1:4:2:192 +/ +00c00000:03fa:0001 + s 11479000:22000000:1:4:2:192 +/ +00c00000:03fc:0001 + s 11508500:22000000:1:4:2:192 +/ +00c00000:0400:0001 + s 11567500:22000000:1:4:2:192 +/ +00c00000:0402:0001 + s 11597000:22000000:1:4:2:192 +/ +00c00000:0408:0001 + s 11685500:22000000:1:4:2:192 +/ +00c00000:040a:0001 + s 10979000:22000000:1:4:2:192 +/ +00c00000:040e:0001 + s 11038000:22000000:1:4:2:192 +/ +00c00000:0412:0001 + s 11097000:22000000:1:4:2:192 +/ +00c00000:0416:0001 + s 11156000:22000000:1:4:2:192 +/ +00c00000:041d:0001 + s 10773250:22000000:0:4:2:192 +/ +00c00000:041e:0001 + s 10788000:22000000:1:4:2:192 +/ +00c00000:0420:0001 + s 10817500:22000000:1:4:2:192 +/ +00c00000:0421:0001 + s 10832250:22000000:0:4:2:192 +/ +00c00000:0422:0001 + s 10847000:22000000:1:4:2:192 +/ +00c00000:0423:0001 + s 10861750:22000000:0:4:2:192 +/ +00c00000:0424:0001 + s 10876500:22000000:1:4:2:192 +/ +00c00000:042a:0001 + s 11739000:27500000:1:3:2:192 +/ +00c00000:042c:0001 + s 11778000:27500000:1:3:2:192 +/ +00c00000:042e:0001 + s 11817000:27500000:1:3:2:192 +/ +00c00000:0430:0001 + s 11856000:27500000:1:3:2:192 +/ +00c00000:0431:0001 + s 12109500:27500000:0:3:2:192 +/ +00c00000:0432:0001 + s 11895000:27500000:1:3:2:192 +/ +00c00000:0434:0001 + s 11934000:27500000:1:3:2:192 +/ +00c00000:0436:0001 + s 11973000:27500000:1:3:2:192 +/ +00c00000:0437:0001 + s 11953500:27500000:0:3:2:192 +/ +00c00000:0438:0001 + s 12012000:27500000:1:3:2:192 +/ +00c00000:043a:0001 + s 12051000:27500000:1:3:2:192 +/ +00c00000:043c:0001 + s 12090000:29900000:1:5:2:192 +/ +00c00000:043e:0001 + s 12129000:27500000:1:3:2:192 +/ +00c00000:0440:0001 + s 12168000:27500000:1:3:2:192 +/ +00c00000:0441:0001 + s 12187500:27500000:0:3:2:192 +/ +00c00000:0442:0001 + s 12207000:27500000:1:3:2:192 +/ +00c00000:0443:0001 + s 12226500:27500000:0:3:2:192 +/ +00c00000:0444:0001 + s 12246000:27500000:1:3:2:192 +/ +00c00000:0445:0001 + s 12265500:27500000:0:3:2:192 +/ +00c00000:0446:0001 + s 12285000:27500000:1:3:2:192 +/ +00c00000:0447:0001 + s 12304500:27500000:0:3:2:192 +/ +00c00000:0448:0001 + s 12324000:27500000:1:3:2:192 +/ +00c00000:044a:0001 + s 12363050:27500000:1:3:2:192 +/ +00c00000:044b:0001 + s 12382500:27500000:0:3:2:192 +/ +00c00000:044c:0001 + s 12402000:27500000:1:3:2:192 +/ +00c00000:044d:0001 + s 11836500:27500000:0:3:2:192 +/ +00c00000:044e:0001 + s 12441000:27500000:1:3:2:192 +/ +00c00000:044f:0001 + s 12460500:27500000:0:3:2:192 +/ +00c00000:0452:0001 + s 12522000:22000000:1:4:2:192 +/ +00c00000:0453:0001 + s 12544750:22000000:0:4:2:192 +/ +00c00000:0454:0001 + s 12551500:22000000:1:4:2:192 +/ +00c00000:0456:0001 + s 12581000:22000000:1:4:2:192 +/ +00c00000:0457:0001 + s 12603750:22000000:0:4:2:192 +/ +00c00000:0458:0001 + s 12610500:22000000:1:4:2:192 +/ +00c00000:0459:0001 + s 12633250:22000000:0:4:2:192 +/ +00c00000:045a:0001 + s 12640000:22000000:1:4:2:192 +/ +00c00000:045b:0001 + s 12662750:22000000:0:4:2:192 +/ +00c00000:045c:0001 + s 12669500:22000000:1:4:2:192 +/ +00c00000:045d:0001 + s 12692250:22000000:0:4:2:192 +/ +00c00000:045e:0001 + s 12699000:22000000:1:4:2:192 +/ +00c00000:045f:0001 + s 12721750:22000000:0:4:2:192 +/ +00c00000:04b1:0001 + s 12421500:27500000:0:3:2:192 +/ +00c00000:04f9:0001 + s 11875500:27500000:0:3:2:192 +/ +00c00000:04ff:0001 + s 11992500:27500000:0:3:2:192 +/ +00c00000:0423:0019 + s 10861750:22000000:0:4:2:192 +/ +00c00000:043c:0019 + s 12090000:27500000:1:3:2:192 +/ +00c00000:0445:0019 + s 12265500:27500000:0:3:2:192 +/ +00c00000:0460:0019 + s 12728500:22000000:1:4:2:192 +/ +00c00000:0449:0035 + s 12343500:27500000:0:3:2:192 +/ +00c00000:0451:0035 + s 12515250:22000000:0:4:2:192 +/ +00c00000:0455:0035 + s 12574250:22000000:0:4:2:192 +/ +00c00000:0001:0085 + s 12070500:27500000:0:3:2:192 +/ +00c00000:0002:0085 + s 11797500:27500000:0:3:2:192 +/ +00c00000:0003:0085 + s 11719500:27500000:0:3:2:192 +/ +00c00000:0004:0085 + s 12031500:27500000:0:3:2:192 +/ +00c00000:0005:0085 + s 12460500:27500000:0:3:2:192 +/ +00c00000:0007:0085 + s 12148500:27500000:0:3:2:192 +/ +00c00000:0011:0085 + s 11758500:27500000:0:3:2:192 +/ +00c00000:0021:0085 + s 12480000:27500000:1:3:2:192 +/ +end +services +0300:00c00000:0007:0085:1:0 +†RNF‡plus +p:BetaDigital +7500:00c00000:0420:0001:1:0 +DCINE ESPAÑOL +p:DIGITAL+ +0201:00c00000:0004:0085:1:0 +DIREKT †EROTIK‡ +p:PREMIERE,C:1702,C:1722,C:1801 +0301:00c00000:0007:0085:1:0 +TV †TRAVEL‡ SHOP +p:BetaDigital +2201:00c00000:044c:0001:1:0 +JETIX +p:CSAT +7501:00c00000:0420:0001:1:0 +CANAL COCINA +p:DIGITAL+ +0202:00c00000:0007:0085:1:0 +†ONTV‡ Regional +p:BetaDigital +0302:00c00000:0007:0085:1:0 +†BD‡ Partner† TV‡ +p:BetaDigital,C:1702,C:1801 +2202:00c00000:044c:0001:1:0 +L'EQUIPE TV +p:CSAT +7502:00c00000:0420:0001:1:0 +CCVALENCIANA +p:DIGITAL+ +7602:00c00000:0408:0001:1:0 +CNN+ +p:DIGITAL+ +0203:00c00000:0011:0085:1:0 +MGM +p:PREMIERE,C:1702,C:1722,C:1801 +0303:00c00000:0007:0085:1:0 +BD 1 +p:BetaDigital,C:1702,C:1801 +2203:00c00000:044c:0001:1:0 +PLANETE CHOC +p:CSAT +7503:00c00000:0420:0001:1:0 +FOX +p:DIGITAL+ +0204:00c00000:0004:0085:1:0 +PREMIERE †NOSTALGIE‡ +p:PREMIERE,C:1702,C:1722,C:1801 +0304:00c00000:0007:0085:1:0 +†TV.B‡ERLIN +p:BetaDigital +2204:00c00000:044c:0001:1:0 +NAT GEOGRAPHIC +p:CSAT +7504:00c00000:0420:0001:1:0 +AXN +p:DIGITAL+ +0305:00c00000:0007:0085:1:0 +BD 4 +p:BetaDigital,C:1702,C:1801 +2205:00c00000:044c:0001:1:0 +C CINEMA CLASSIC +p:CSAT +0206:00c00000:0001:0085:1:0 +†GOLDSTAR‡ TV +p:PREMIERE,C:1702,C:1722,C:1801 +0306:00c00000:0007:0085:1:0 +†GOD ‡Channel +p:BetaDigital +0307:00c00000:0007:0085:1:0 +†F‡ranken †SAT‡ +p:BetaDigital +2207:00c00000:044c:0001:1:0 +C CINEMA FAMIZ +p:CSAT +0008:00c00000:0002:0085:1:0 +PREMIERE †START‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2f08:00c00000:0441:0001:1:0 +†S‡uper† RTL‡ +p:RTL World +0009:00c00000:0002:0085:1:0 +†PREM‡IERE† 4‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2009:00c00000:0430:0001:1:0 +CANAL+ +p:CSAT +000a:00c00000:0002:0085:1:0 +†PREM‡IERE† 1‡ +p:PREMIERE,C:1702,C:1722,C:1801 +200a:00c00000:0430:0001:1:0 +CANAL+ CONFORT +p:CSAT +000b:00c00000:0002:0085:1:0 +†PREM‡IERE† 2‡ +p:PREMIERE,C:1702,C:1722,C:1801 +200b:00c00000:0430:0001:1:0 +CANAL+ CINEMA +p:CSAT +f20b:00c00000:0421:0001:1:0 +RAZE TV +p:Astra +000c:00c00000:0011:0085:1:0 +†ANIMAL‡ PLANET +p:PREMIERE,C:1702,C:1722,C:1801 +200c:00c00000:0430:0001:1:0 +CANAL+ 16/9 +p:CSAT +300c:00c00000:0458:0001:1:0 +CLEAR TV +p:ASTRA +760c:00c00000:0408:0001:1:0 +CINEM. CLÁSICO +p:DIGITAL+ +000d:00c00000:0011:0085:1:0 +†Neu‡er Kanal +p:PREMIERE,C:1702,C:1722,C:1801 +200d:00c00000:0430:0001:1:0 + +p:CSAT +220d:00c00000:044c:0001:1:0 +GAME ONE +p:CSAT +300d:00c00000:0458:0001:1:0 +TV6 +p:X-Gate +760d:00c00000:0408:0001:1:0 +FDF +p:DIGITAL+ +000e:00c00000:0011:0085:1:0 +†DISCOVERY‡ CHANNEL +p:PREMIERE,C:1702,C:1722,C:1801 +200e:00c00000:0430:0001:1:0 +C CINEMA PREMIER +p:CSAT +760e:00c00000:0408:0001:1:0 +TV GALICIA +p:DIGITAL+ +000f:00c00000:0001:0085:1:0 +CLASSICA +p:PREMIERE,C:1702,C:1722,C:1801 +200f:00c00000:0430:0001:1:0 +DISNEY CHANNEL +p:CSAT +0010:00c00000:0004:0085:1:0 +PREMIERE †SERIE‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2010:00c00000:0430:0001:1:0 +CANAL+ SPORT +p:CSAT +0011:00c00000:0003:0085:1:0 +PREMIERE †SPORT 1‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2011:00c00000:0430:0001:1:0 +EQUIDIA +p:CSAT +0012:00c00000:0004:0085:1:0 +PREMIERE †DIREKT‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2712:00c00000:0402:0001:1:0 +RTM MAROC +p:CANALSATELLITE +0013:00c00000:0011:0085:1:0 +†JUNIOR‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2013:00c00000:0430:0001:1:0 +PAD +p:CSAT +5013:00c00000:0447:0001:1:0 +UPC_EPG +p:UPC Direct +0014:00c00000:0002:0085:1:0 +†PREM‡IERE† 7‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2014:00c00000:0430:0001:1:0 +PAD 2 +p:CSAT +0015:00c00000:0001:0085:1:0 +†B‡EATE†-UHSE‡.TV +p:PREMIERE,C:1702,C:1722,C:1801 +2015:00c00000:0430:0001:1:0 +CANAL+ 16/9. +p:CSAT +0016:00c00000:0001:0085:1:0 +†HEIMAT‡KANAL +p:PREMIERE,C:1702,C:1722,C:1801 +0017:00c00000:0004:0085:1:0 +PREMIERE †KRIMI‡ +p:PREMIERE,C:1702,C:1722,C:1801 +271a:00c00000:0402:0001:1:0 +EUROSPORT +p:Eurosport +001b:00c00000:0004:0085:1:0 +PREMIERE †SPORT 2‡ +p:PREMIERE,C:1702,C:1722,C:1801 +001c:00c00000:0011:0085:1:0 +†FOX‡ †KIDS‡ +p:PREMIERE,C:1702,C:1722,C:1801 +2f1c:00c00000:0441:0001:1:0 +VOX +p:RTL World +f21c:00c00000:0421:0001:1:0 +Free-X TV +p:RRSAT +001d:00c00000:0002:0085:1:0 +†PREM‡IERE† 5‡ +p:PREMIERE,C:1702,C:1722,C:1801 +1c1f:00c00000:0451:0035:1:0 +EPG +p:CANAL+ +0020:00c00000:0021:0085:1:0 +†Sonnen‡klar †TV‡ +p:PREMIERE +1c20:00c00000:0451:0035:1:0 +Lunapark +p:CANAL+ +0021:00c00000:0007:0085:1:0 +PFH +p:,C:1810 +4e21:00c00000:043a:0001:1:0 +ProSieben Schweiz +p:ProSiebenSat.1 +0022:00c00000:0011:0085:1:0 +†DISNEY‡ CHANNEL +p:PREMIERE,C:1702,C:1722,C:1801 +4e22:00c00000:043a:0001:1:0 +ProSieben Austria +p:ProSiebenSat.1 +4e23:00c00000:043a:0001:1:0 +Kabel 1 Schweiz +p:ProSiebenSat.1 +7023:00c00000:0402:0001:1:0 +Sky News +p:BSkyB +0024:00c00000:0011:0085:1:0 +SCI FI +p:PREMIERE,C:1702,C:1722,C:1801 +2724:00c00000:0402:0001:1:0 +DW-TV +p:Deutsche Welle +4e24:00c00000:043a:0001:1:0 +Kabel 1 Austria +p:ProSiebenSat.1 +7724:00c00000:0416:0001:1:0 +CARTOON NET. +p:DIGITAL+ +4e25:00c00000:043a:0001:1:0 +SAT.1 A +p:ProSiebenSat.1 +f226:00c00000:0421:0001:1:0 +Ocko TV +p:OCKO TV +0028:00c00000:0021:0085:1:0 +†HSE24‡ +p:BetaDigital +7728:00c00000:0416:0001:1:0 +PEOPLE+ARTS +p:DIGITAL+ +f228:00c00000:0421:0001:1:0 +TV SHOP +p:CLT-UFA +0029:00c00000:0002:0085:1:0 +†PREM‡IERE† 6‡ +p:PREMIERE,C:1702,C:1722,C:1801 +6e29:00c00000:0431:0001:1:0 +EinsExtra +p:ARD +7729:00c00000:0416:0001:1:0 +VIAJAR +p:DIGITAL+ +f229:00c00000:0421:0001:1:0 +24.CZ +p:teresticky +002a:00c00000:0011:0085:1:0 +†13 TH‡ STREET +p:PREMIERE,C:1702,C:1722,C:1801 +6e2a:00c00000:0431:0001:1:0 +EinsFestival +p:ARD +772a:00c00000:0416:0001:1:0 +NICK-PARAMOUNT +p:DIGITAL+ +002b:00c00000:0002:0085:1:0 +†PREM‡IERE† 3‡ +p:PREMIERE,C:1702,C:1722,C:1801 +6e2b:00c00000:0431:0001:1:0 +EinsMuXx +p:ARD +772b:00c00000:0416:0001:1:0 +CAZA Y PESCA +p:DIGITAL+ +6e2c:00c00000:0431:0001:1:0 +MDR FERNSEHEN +p:ARD +332d:00c00000:045b:0001:1:0 +TW1 +p:ORF +6e2d:00c00000:0431:0001:1:0 +rbb Brandenburg +p:ARD +002e:00c00000:0021:0085:1:0 +SAT.1 +p:ProSiebenSat.1 +272e:00c00000:0402:0001:1:0 +CNBC Europe +p:CNBC +332e:00c00000:045b:0001:1:0 +GoTV +p:GoTV +6e2e:00c00000:0431:0001:1:0 +rbb Berlin +p:ARD +772e:00c00000:0416:0001:1:0 +CALLE 13 +p:DIGITAL+ +002f:00c00000:0021:0085:1:0 +N24 +p:ProSiebenSat.1 +0030:00c00000:0007:0085:1:0 +SAT.1-CH +p:ProSiebenSat.1 +2f30:00c00000:0441:0001:1:0 +RTL Shop +p:RTL World +7730:00c00000:0416:0001:1:0 +COSMOPOLITAN +p:Digital+ +7731:00c00000:0416:0001:1:0 +BLOOMBERG +p:Digital+ +0032:00c00000:0001:0085:1:0 +BIG †BROTHER‡ +p:PREMIERE,C:1702,C:1722,C:1801 +0033:00c00000:0021:0085:1:0 +TELE 5 +p:BetaDigital +2333:00c00000:0400:0001:1:0 +CANAL ALGERIE +p:CANALSATELLITE +0034:00c00000:0007:0085:1:0 +†BLUE ‡MOVIE †A‡ustria +p:PREMIERE,C:1702,C:1801 +2334:00c00000:0400:0001:1:0 +TV 5 +p:CANALSATELLITE +0035:00c00000:0007:0085:1:0 +†PREM‡IERE† A‡ustria +p:PREMIERE,C:1702,C:1801 +2135:00c00000:0442:0001:1:0 +FRANCE 5 +p:CSAT +0036:00c00000:0007:0085:1:0 +DPC.TV 3 +p:BetaDigital +2136:00c00000:0442:0001:1:0 +TV BREIZH +p:CSAT +2336:00c00000:0400:0001:1:0 +ESC1 - EGYPT +p:CANALSATELLITE +3336:00c00000:045b:0001:1:0 +OEC +p:ORF +2137:00c00000:0442:0001:1:0 +LIVE 1 +p:CSAT +2337:00c00000:0400:0001:1:0 +RAI 1 +p:CANALSATELLITE +3037:00c00000:0458:0001:1:0 +Montagne TV +p:CANALSATELLITE +2138:00c00000:0442:0001:1:0 +PLANETE THALASSA +p:CSAT +3138:00c00000:0459:0001:1:0 +Bahn TV +p:T-Systems +2139:00c00000:0442:0001:1:0 +BLOOMBERG TV +p:CSAT +2339:00c00000:0400:0001:1:0 +RTPI +p:CANALSATELLITE +3139:00c00000:0459:0001:1:0 +K-TV +p:T-Systems +213a:00c00000:0442:0001:1:0 +LCP +p:CSAT +233a:00c00000:0400:0001:1:0 +TV7 +p:CANALSATELLITE +2f3a:00c00000:0441:0001:1:0 +n-tv +p:RTL World +313a:00c00000:0459:0001:1:0 +XXP +p:T-Systems +6e3a:00c00000:0431:0001:1:0 +ARD-Online-Kanal +p:ARD +233b:00c00000:0400:0001:1:0 +ARTE +p:CANALSATELLITE +313b:00c00000:0459:0001:1:0 +LifeStyle-TV +p:T-Systems +003c:00c00000:0005:0085:1:0 +VIC-Liebevoll.tv +p:BetaDigital +213c:00c00000:0442:0001:1:0 +RFO SAT +p:CSAT +003d:00c00000:0005:0085:1:0 +wellenlaenge.tv +p:BetaDigital +233d:00c00000:0400:0001:1:0 +Al Jazeera +p:CANALSATELLITE +6e3d:00c00000:0431:0001:1:0 +ARD-MHP-TEST-5 +p:ARD +003e:00c00000:0005:0085:1:0 +NEULAND.tv +p:BetaDigital +233e:00c00000:0400:0001:1:0 +TVEi +p:CANALSATELLITE +6e3e:00c00000:0431:0001:1:0 +ARD-MHP-TEST-6 +p:ARD +003f:00c00000:0005:0085:1:0 +Amio.tv +p:BetaDigital +2f3f:00c00000:0441:0001:1:0 +Traumpartner TV +p:RTL World +6e40:00c00000:0431:0001:1:0 +NDR FS MV +p:ARD +1f41:00c00000:042e:0001:1:0 +SEASONS +p:CSAT +6e41:00c00000:0431:0001:1:0 +NDR FS HH +p:ARD +1f42:00c00000:042e:0001:1:0 +C CINEMA EMOTION +p:CSAT +6e42:00c00000:0431:0001:1:0 +NDR FS NDS +p:ARD +1f43:00c00000:042e:0001:1:0 +C CINEMA FRISSON +p:CSAT +6e43:00c00000:0431:0001:1:0 +NDR FS SH +p:ARD +1f44:00c00000:042e:0001:1:0 +EURONEWS +p:CSAT +6e44:00c00000:0431:0001:1:0 +MDR SACHSEN +p:ARD +1c45:00c00000:0457:0001:1:0 +STB Wisplus +p:SES Astra +1f45:00c00000:042e:0001:1:0 +PARIS PREMIERE +p:CSAT +6e45:00c00000:0431:0001:1:0 +MDR S-ANHALT +p:ARD +1f46:00c00000:042e:0001:1:0 +JIMMY +p:CSAT +2346:00c00000:0400:0001:1:0 +2M Maroc +p:CANALSATELLITE +3146:00c00000:0459:0001:1:0 +rhein main tv +p:T-Systems +6e46:00c00000:0431:0001:1:0 +MDR THÜRINGEN +p:ARD +1f47:00c00000:042e:0001:1:0 +MEZZO +p:CSAT +6e47:00c00000:0431:0001:1:0 +SÜDWEST RP +p:ARD +1f48:00c00000:042e:0001:1:0 +LA CHAINE METEO +p:CSAT +3148:00c00000:0459:0001:1:0 +K1010 +p:T-Systems +1f49:00c00000:042e:0001:1:0 +SPORT+ +p:CSAT +1f4a:00c00000:042e:0001:1:0 +I>TELE +p:CSAT +314a:00c00000:0459:0001:1:0 +Spielekanal TV +p:T-Systems +314b:00c00000:0459:0001:1:0 +Quiz-des-Tages.de +p:T-Systems +1f4c:00c00000:042e:0001:1:0 +UFTU TJH +p:CSAT +1f4d:00c00000:042e:0001:1:0 +NCMESS +p:CSAT +4f4d:00c00000:0447:0001:1:0 +†Gal‡axie †Sport‡ +p:UPC Direct +4f4e:00c00000:0447:0001:1:0 +†Animal‡ †Pl‡anet +p:UPC Direct +4f4f:00c00000:0447:0001:1:0 +†Disc‡overy CE +p:UPC Direct +4f51:00c00000:0447:0001:1:0 +†Jetix‡ +p:UPC Direct +4f52:00c00000:0447:0001:1:0 +†Nat‡ †Geo‡ +p:UPC Direct +4f53:00c00000:0447:0001:1:0 +†Eurosport 2‡ +p:UPC Direct +4f54:00c00000:0447:0001:1:0 +†Hall‡mark +p:UPC Direct +2455:00c00000:0456:0001:1:0 +FESTIVAL +p:CSAT +4f55:00c00000:0447:0001:1:0 +†Pr‡ivate †Gold‡ +p:UPC Direct +2456:00c00000:0456:0001:1:0 +HISTOIRE +p:CSAT +4f56:00c00000:0447:0001:1:0 +†Real‡ity †TV‡ +p:UPC Direct +2457:00c00000:0456:0001:1:0 +TCHATCHE TV +p:CSAT +4f57:00c00000:0447:0001:1:0 +†Ex‡treme †Sports‡ +p:UPC Direct +2458:00c00000:0456:0001:1:0 + +p:CSAT +4f58:00c00000:0447:0001:1:0 +†Club‡ +p:UPC Direct +1b59:00c00000:03fc:0001:1:0 +full-X3 +p:GlobeCast +2459:00c00000:0456:0001:1:0 +EXTREME SPORTS +p:CSAT +4f59:00c00000:0447:0001:1:0 +†M2‡ +p:UPC Direct +1b5a:00c00000:03fc:0001:1:0 +full-X3 M +p: +4f5a:00c00000:0447:0001:1:0 +†Duna‡ +p:UPC Direct +1b5b:00c00000:03fc:0001:1:0 +Infocast Mail Astra +p:NEOTION +4f5b:00c00000:044b:0001:1:0 +†Eurosport‡ +p:UPC Direct +1b5c:00c00000:03fc:0001:1:0 +DEMAIN! +p:GlobeCast +245c:00c00000:0456:0001:1:0 +DISCOVERY +p:CSAT +4f5c:00c00000:044b:0001:1:0 +†MTV Europe‡ +p:UPC Direct +1b5d:00c00000:03fc:0001:1:0 +TELIF +p:GCE +245d:00c00000:0456:0001:1:0 +PINK TV +p:CSAT +4f5d:00c00000:044b:0001:1:0 +†Hall‡mark +p:UPC Direct +245e:00c00000:0456:0001:1:0 + +p:CSAT +4f5e:00c00000:044b:0001:1:0 +†Viasat-3‡ +p:UPC Direct +245f:00c00000:0456:0001:1:0 + +p:CSAT +4f5f:00c00000:044b:0001:1:0 +†TV Markiza† +p:UPC Direct +4f60:00c00000:044b:0001:1:0 +†TV JOJ† +p:UPC Direct +2261:00c00000:0438:0001:1:0 +FRANCE 2 +p:CSAT +4f61:00c00000:044b:0001:1:0 +UPC Direct +p:UPC Direct +1c62:00c00000:0457:0001:1:0 +STB Comag +p:SES Astra +2262:00c00000:0438:0001:1:0 +FRANCE 3 +p:CSAT +4f62:00c00000:044b:0001:1:0 +†BBC Prime‡ +p:UPC Direct +7562:00c00000:0412:0001:1:0 +GALAVISIÓN +p:DIGITAL+ +4f63:00c00000:044b:0001:1:0 +†Prima TV‡ +p:UPC Direct +6d63:00c00000:042c:0001:1:0 +Travel +p:Landmark Travel Channel Limited +7563:00c00000:0412:0001:1:0 +REAL MADRID TV +p:DIGITAL+ +1c64:00c00000:0457:0001:1:0 +OTTO MHP +p:SES Astra +4f64:00c00000:044b:0001:1:0 +†TA3‡ +p:UPC Direct +7564:00c00000:0412:0001:1:0 +BARÇA TV +p:DIGITAL+ +2265:00c00000:0438:0001:1:0 +RTL9 +p:CSAT +4f65:00c00000:044b:0001:1:0 +†Magyar ATV† +p:UPC Direct +7565:00c00000:0412:0001:1:0 +TAQUILLA 5 +p:DIGITAL+ +6d66:00c00000:0437:0001:1:0 +ZDF +p:ZDFvision +7566:00c00000:0412:0001:1:0 +TAQUILLA 6 +p:DIGITAL+ +2267:00c00000:0438:0001:1:0 +TRACE TV +p:CSAT +6d67:00c00000:0437:0001:1:0 +3sat +p:ZDFvision +7567:00c00000:0412:0001:1:0 +TAQUILLA 7 +p:DIGITAL+ +2268:00c00000:0438:0001:1:0 +TELE MELODY +p:CSAT +6d68:00c00000:0437:0001:1:0 +KiKa +p:ZDFvision +7468:00c00000:03f0:0001:1:0 +DOCUMANÍA +p:DIGITAL+ +7568:00c00000:0412:0001:1:0 +TAQUILLA X +p:DIGITAL+ +6d69:00c00000:0437:0001:1:0 +Eurosport +p:ZDFvision +6f69:00c00000:042c:0001:1:0 +Cartoon Network +p:TBS +7469:00c00000:03f0:0001:1:0 +JETIX +p:DIGITAL+ +7569:00c00000:0412:0001:1:0 +TAQUILLA X +p:DIGITAL+ +6f6a:00c00000:042c:0001:1:0 +CNN Int. +p:CNN +746a:00c00000:03f0:0001:1:0 +DISNEY CH. +1 +p:DIGITAL+ +756a:00c00000:0412:0001:1:0 +TAQUILLA XX +p:DIGITAL+ +6d6b:00c00000:0437:0001:1:0 +ZDFinfokanal +p:ZDFvision +746b:00c00000:03f0:0001:1:0 +PLAYHOUSE +p:DIGITAL+ +756b:00c00000:0412:0001:1:0 +TAQUILLA 12 +p:DIGITAL+ +526c:00c00000:0440:0001:1:0 +Euro1080 +p:EURO1080 +756c:00c00000:0412:0001:1:0 +TAQUILLA 9 +p:DIGITAL+ +226d:00c00000:0438:0001:1:0 +ESPN CLASSIC +p:CSAT +6f6d:00c00000:042c:0001:1:0 +TCM +p:TBS +756d:00c00000:0412:0001:1:0 +TAQUILLA 8 +p:DIGITAL+ +226e:00c00000:0438:0001:1:0 + +p:CSAT +6d6e:00c00000:0437:0001:1:0 +ZDFdokukanal +p:ZDFvision +6f6e:00c00000:042c:0001:1:0 +TCM +p:TBS. +6d6f:00c00000:0437:0001:1:0 +EuroNews +p:ZDFvision +746f:00c00000:03f0:0001:1:0 +TOON DISNEY +p:DIGITAL+ +1770:00c00000:0455:0035:1:0 +test +p:canal+ +2270:00c00000:0438:0001:1:0 +CANAL EVENEMENT +p:CSAT +6d70:00c00000:0437:0001:1:0 +ZDFtheaterkanal +p:ZDFvision +7472:00c00000:03f0:0001:1:0 +C+ CINE 1 +p:DIGITAL+ +7473:00c00000:03f0:0001:1:0 +C+ CINE 2 +p:DIGITAL+ +7474:00c00000:03f0:0001:1:0 +C+ CINE 3 +p:DIGITAL+ +7475:00c00000:03f0:0001:1:0 +EXPANSIÓN TV +p:DIGITAL+ +427c:00c00000:0446:0001:1:0 +AB MOTEURS +p:AB SAT,C:0100,C:0500 +427d:00c00000:0446:0001:1:0 +AB1 +p:ABSAT,C:0100,C:0500 +427e:00c00000:0446:0001:1:0 +ANIMAUX +p:ABSAT,C:0100 +427f:00c00000:0446:0001:1:0 +ENCYCLOPEDIA +p:ABSAT,C:0100 +4280:00c00000:0446:0001:1:0 +ZIK/XXL +p:ABSAT +7080:00c00000:0443:0001:1:0 +RTL Austria +p:RTL +0381:00c00000:0021:0085:1:0 +†NEUN LIVE‡ Television +p:BetaDigital +0c81:00c00000:0444:0001:1:0 +NDS_VOTE +p:Canal Satellite +4281:00c00000:0446:0001:1:0 +ESCALES +p:ABSAT,C:0100,C:0500 +0382:00c00000:0021:0085:1:0 +ProSieben +p:ProSiebenSat.1 +0c82:00c00000:0444:0001:1:0 +NDS_RR +p:Canal Satellite +4282:00c00000:0446:0001:1:0 +toute L'HISTOIRE +p:ABSAT,C:0100 +0383:00c00000:0021:0085:1:0 +KABEL1 +p:ProSiebenSat.1 +0c83:00c00000:0444:0001:1:0 +NDS_COD +p:Canal Satellite +4283:00c00000:0446:0001:1:0 +BBC WORLD +p:ABSAT +0384:00c00000:0021:0085:1:0 +DSF +p:BetaDigital +4284:00c00000:0446:0001:1:0 +RFM-TV +p:ABSAT,C:0100 +7085:00c00000:0443:0001:1:0 +VOX Austria +p:RTL +4286:00c00000:0446:0001:1:0 +ACTION +p:AB SAT,C:0100 +4287:00c00000:0446:0001:1:0 +MANGAS +p:ABSAT,C:0100 +7788:00c00000:0424:0001:1:0 +40 LATINO +p:DIGITAL+ +4289:00c00000:0446:0001:1:0 +TERRA NOVA +p:ABSAT +7789:00c00000:0424:0001:1:0 +GOLF+ +p:DIGITAL+ +0c8a:00c00000:0444:0001:1:0 +ASTRA Satmode EU 1 +p:SES ASTRA +428a:00c00000:0446:0001:1:0 +CINE FX +p:ABSAT,C:0100,C:0500 +708a:00c00000:0443:0001:1:0 +RTL2 Austria +p:RTL +778a:00c00000:0424:0001:1:0 +CANAL+...30 +p:DIGITAL+ +0c8b:00c00000:0444:0001:1:0 +ASTRA Satmode EU 2 +p:ASTRA +778b:00c00000:0424:0001:1:0 +PLAYBOY TV +p:DIGITAL+ +0c8c:00c00000:0444:0001:1:0 +ASTRA Satmode EU 3 +p:MGN +138c:00c00000:0455:0035:1:0 +NET5 +p:CANAL+ +778c:00c00000:0424:0001:1:0 +MÉTEO +p:DIGITAL+ +0c8d:00c00000:0444:0001:1:0 +ASTRA Satmode EU 4 +p:SES ASTRA +138d:00c00000:0455:0035:1:0 +SBS6 +p:CANAL+ +238d:00c00000:044a:0001:1:0 +GUIDE TV +p:C+ +778d:00c00000:0424:0001:1:0 +NAT GEOGRAPHIC +p:DIGITAL+ +0c8e:00c00000:0444:0001:1:0 +ASTRA Satmode DEV 1 +p:SES ASTRA +0f8e:00c00000:0458:0001:1:0 +RTBF SAT +p:RTBF +238e:00c00000:044a:0001:1:0 +CANALSAT JEUX +p:C+ +768e:00c00000:041e:0001:1:0 +TAQUILLA 1 +p:DIGITAL+ +0c8f:00c00000:0444:0001:1:0 +ASTRA Satmode DEV 2 +p:SES ASTRA +708f:00c00000:0443:0001:1:0 +Super RTL A +p:RTL +768f:00c00000:041e:0001:1:0 +TAQUILLA 2 +p:DIGITAL+ +0c90:00c00000:0444:0001:1:0 +ASTRA Satmode DEV 3 +p:SES ASTRA +2390:00c00000:044a:0001:1:0 +C:DIRECT +p:C+ +7690:00c00000:041e:0001:1:0 +TAQUILLA 3 +p:DIGITAL+ +2391:00c00000:044a:0001:1:0 +PLAYIN'TV +p:CSAT +6e91:00c00000:04b1:0001:1:0 +WDR Aachen +p:ARD +7691:00c00000:041e:0001:1:0 +TAQUILLA 4 +p:DIGITAL+ +0292:00c00000:0005:0085:1:0 +DPC.TV2 +p:BetaDigital +1392:00c00000:0455:0035:1:0 +Yorin +p:CANAL+ +2392:00c00000:044a:0001:1:0 +CASH TV +p:CSAT +6e92:00c00000:04b1:0001:1:0 +WDR Bielefeld +p:ARD +0293:00c00000:0005:0085:1:0 +tv.gusto +p:BetaDigital +2393:00c00000:044a:0001:1:0 +PRATIQUE LOISIRS +p:CSAT +6e93:00c00000:04b1:0001:1:0 +WDR Dortmund +p:ARD +7793:00c00000:0424:0001:1:0 +FOX NEWS +p:DIGITAL+ +0294:00c00000:0007:0085:1:0 +DPC_DVB +p:BetaDigital,C:1702 +2394:00c00000:044a:0001:1:0 + +p:CSAT +6e94:00c00000:04b1:0001:1:0 +WDR Düsseldorf +p:ARD +7594:00c00000:0422:0001:1:0 +MÚSICA DIGITAL +p:DIGITAL+ +0295:00c00000:0021:0085:1:0 +AstroTV +p:BetaDigital +2395:00c00000:044a:0001:1:0 + +p:CSAT +6e95:00c00000:04b1:0001:1:0 +WDR Essen +p:ARD +7595:00c00000:0422:0001:1:0 +MÚSICA DIGITAL +p:DIGITAL+ +7695:00c00000:041e:0001:1:0 +TAQUILLA XY +p:DIGITAL+ +0296:00c00000:0005:0085:1:0 +1-2-3.tv +p:BetaDigital +6e96:00c00000:04b1:0001:1:0 +WDR Münster +p:ARD +7596:00c00000:0422:0001:1:0 +RADIOS +p:DIGITAL+ +7696:00c00000:041e:0001:1:0 +TAQUILLA 10 +p:DIGITAL+ +0297:00c00000:0005:0085:1:0 +DPC.TV1 +p:BetaDigital +1397:00c00000:0455:0035:1:0 +TMF +p:CANAL+ +2397:00c00000:044a:0001:1:0 +EVENEMENT +p:CSAT +6e97:00c00000:04b1:0001:1:0 +WDR Siegen +p:ARD +7597:00c00000:0422:0001:1:0 +RADIOS +p:DIGITAL+ +7697:00c00000:041e:0001:1:0 +TELECINCO +p:DIGITAL+ +0298:00c00000:0004:0085:1:0 +†BLUE M‡OVIE +p:PREMIERE,C:1702,C:1722,C:1801,C:1810 +2398:00c00000:044a:0001:1:0 + +p:CSAT +6e98:00c00000:04b1:0001:1:0 +WDR Wuppertal +p:ARD +7598:00c00000:0422:0001:1:0 +RADIOS ESP +p:DIGITAL+ +2199:00c00000:0448:0001:1:0 +RFO SAT. +p:CSAT +2399:00c00000:044a:0001:1:0 +TIERCE N°1 +p:CSAT +7699:00c00000:041e:0001:1:0 +BOOMERANG +p:DIGITAL+ +219a:00c00000:0448:0001:1:0 +BANQUES +p:CSAT +239a:00c00000:044a:0001:1:0 +ESPACE CLIENT +p:C+ +219b:00c00000:0448:0001:1:0 +MOSAIQUE +p:CSAT +439b:00c00000:045e:0001:1:0 +Trend Pro +p:BT Broadcast Services +139c:00c00000:0455:0035:1:0 +Veronica/FoxKids +p:CANAL+ +779c:00c00000:0424:0001:1:0 +C+ DEPORTE 1 +p:DIGITAL+ +239d:00c00000:044a:0001:1:0 + +p:CSAT +779d:00c00000:0424:0001:1:0 +C+ DEPORTE 2 +p:DIGITAL+ +239e:00c00000:044a:0001:1:0 + +p:CSAT +209f:00c00000:0432:0001:1:0 +C CINEMA AUTEUR +p:CSAT +239f:00c00000:044a:0001:1:0 + +p:CSAT +20a0:00c00000:0432:0001:1:0 +MCM +p:CSAT +21a0:00c00000:0448:0001:1:0 +MOSAIQUE +p:CSAT +23a0:00c00000:044a:0001:1:0 + +p:CSAT +13a1:00c00000:0455:0035:1:0 +BVN +p:CANAL+ +20a1:00c00000:0432:0001:1:0 +KTO +p:CSAT +21a1:00c00000:0448:0001:1:0 +MMD +p:CSAT +23a1:00c00000:044a:0001:1:0 +UNIVERSAL MOBILE +p:CSAT +20a2:00c00000:0432:0001:1:0 +MCM POP +p:CSAT +21a2:00c00000:0448:0001:1:0 +CA TV +p:CSAT +23a2:00c00000:044a:0001:1:0 +JEUX +p:IMEDIA +20a3:00c00000:0432:0001:1:0 +MATCH TV +p:CSAT +23a3:00c00000:044a:0001:1:0 + +p:IMEDIA +20a4:00c00000:0432:0001:1:0 +C CINEMA INFO +p:CSAT +21a4:00c00000:0448:0001:1:0 +Best of Shopping +p:CSAT +23a4:00c00000:044a:0001:1:0 +PLAYJAM +p:C+ +0fa5:00c00000:0451:0035:1:0 +C+ Rood +p:CANAL+ +21a5:00c00000:0448:0001:1:0 + +p:CSAT +23a5:00c00000:044a:0001:1:0 +RTL JEUX +p:CSAT +0fa6:00c00000:0451:0035:1:0 +C+ Blauw +p:CANAL+ +0fa7:00c00000:0451:0035:1:0 +C+16/9 +p:CANAL+ +20a7:00c00000:0432:0001:1:0 +GOURMET TV +p:CSAT +21a7:00c00000:0448:0001:1:0 + +p:CSAT +2fa7:00c00000:0458:0001:1:0 +LibertyTV FR +p:LibertyTV.com +00a8:00c00000:0011:0085:1:0 +HIT24 +p:PREMIERE,C:1702,C:1722,C:1801 +20a8:00c00000:0432:0001:1:0 +TEST CDN 8 +p:CSAT +21a8:00c00000:0448:0001:1:0 +CDN12 +p:CSAT +23a8:00c00000:044a:0001:1:0 +ASTRALIA +p:CSAT +0fa9:00c00000:0451:0035:1:0 +SPICE PLATINUM +p:CANAL+ +20a9:00c00000:0432:0001:1:0 + +p:CSAT +21a9:00c00000:0448:0001:1:0 +SFR La Carte +p:CSAT +23a9:00c00000:044a:0001:1:0 +SMS TV +p:C+ +20aa:00c00000:0432:0001:1:0 +NBA+ +p:CSAT +0fab:00c00000:0451:0035:1:0 +NED1 +p:CANAL+ +20ab:00c00000:0432:0001:1:0 + +p:CSAT +23ab:00c00000:044a:0001:1:0 +COMMUNIQUER +p:CSAT +0fac:00c00000:0451:0035:1:0 +NED2 +p:CANAL+ +20ac:00c00000:0432:0001:1:0 + +p:CSAT +23ac:00c00000:044a:0001:1:0 +SPORT +p:C+ +0fad:00c00000:0451:0035:1:0 +NED3 +p:CANAL+ +20ad:00c00000:0432:0001:1:0 +MCM TOP +p:CSAT +23ae:00c00000:044a:0001:1:0 +A LA UNE +p:IMEDIA +0faf:00c00000:0451:0035:1:0 +Cartoon / TCM +p:CANAL+ +23b1:00c00000:044a:0001:1:0 + +p:CSAT +23b2:00c00000:044a:0001:1:0 +JEUNESSE +p:CSAT +31b2:00c00000:042c:0001:1:0 +ntl1.068 +p:Bloomberg +77ba:00c00000:040a:0001:1:0 +CINEMANÍA EXTRA +p:DIGITAL+ +77bb:00c00000:040a:0001:1:0 +CLÁSICO +p:DIGITAL+ +31bc:00c00000:045c:0001:1:0 +VIVA +p:VIVA Fernsehen GmbH & Co. KG +77bc:00c00000:040a:0001:1:0 +24 HORAS +p:DIGITAL+ +77bd:00c00000:040a:0001:1:0 +CINEMANÍA...30 +p:DIGITAL+ +23be:00c00000:044a:0001:1:0 +DT1 +p:C+ +23bf:00c00000:044a:0001:1:0 +DT2 +p:C+ +76c0:00c00000:040e:0001:1:0 +CANAL+ +p:DIGITAL+ +77c0:00c00000:040a:0001:1:0 +TELENOVELAS +p:DIGITAL+ +23c1:00c00000:044a:0001:1:0 +DT4 +p:C+ +77c1:00c00000:040a:0001:1:0 +HOLLYWOOD +p:DIGITAL+ +23c2:00c00000:044a:0001:1:0 +DT5 +p:C+ +77c2:00c00000:040a:0001:1:0 +CANAL HISTORIA +p:DIGITAL+ +23c3:00c00000:044a:0001:1:0 +DT6 +p:C+ +76c3:00c00000:040e:0001:1:0 +DISNEY CHANNEL +p:DIGITAL+ +23c4:00c00000:044a:0001:1:0 +DT7 +p:C+ +76c4:00c00000:040e:0001:1:0 +SPORTMANÍA +p:DIGITAL+ +22c5:00c00000:045a:0001:1:0 +C CINEMA 16/9 +p:CSAT +23c5:00c00000:044a:0001:1:0 +DT8 +p:C+ +76c5:00c00000:040e:0001:1:0 +40 TV +p:DIGITAL+ +77c5:00c00000:040a:0001:1:0 +TV CANARIA +p:DIGITAL+ +22c6:00c00000:045a:0001:1:0 +CINE POLAR +p:CSAT +23c6:00c00000:044a:0001:1:0 +DT9 +p:C+ +75c6:00c00000:0422:0001:1:0 +OKplus +p:DIGITAL+ +76c6:00c00000:040e:0001:1:0 +DISCOVERY +p:DIGITAL+ +23c7:00c00000:044a:0001:1:0 +DT10 +p:C+ +75c7:00c00000:0422:0001:1:0 +TIENDAS +p:DIGITAL+ +22c8:00c00000:045a:0001:1:0 + +p:CSAT +23c8:00c00000:044a:0001:1:0 +DT11 +p:C+ +75c8:00c00000:0422:0001:1:0 +EPG +p:DIGITAL+ +22c9:00c00000:045a:0001:1:0 +TEVA +p:CSAT +23c9:00c00000:044a:0001:1:0 +DT12 +p:C+ +32c9:00c00000:045d:0001:1:0 +ORF1 +p:ORF,C:0d05,C:1702,C:1762,C:1801 +22ca:00c00000:045a:0001:1:0 +DISNEY CHANNEL+1 +p:CSAT +23ca:00c00000:044a:0001:1:0 +DT13 +p:C+ +32ca:00c00000:045d:0001:1:0 +ORF2 +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dca:00c00000:044d:0001:1:0 +Das Erste +p:ARD +75ca:00c00000:0422:0001:1:0 +INFOBOLSA B. +p:DIGITAL+ +76ca:00c00000:040e:0001:1:0 +CANAL+ 2 +p:DIGITAL+ +22cb:00c00000:045a:0001:1:0 +PLAYHOUSE DISNEY +p:CSAT +23cb:00c00000:044a:0001:1:0 +DT14 +p:C+ +32cb:00c00000:045d:0001:1:0 +ORF2 W +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dcb:00c00000:044d:0001:1:0 +Bayerisches FS +p:ARD +75cb:00c00000:0422:0001:1:0 +LA CAIXA +p:DIGITAL+ +76cb:00c00000:040e:0001:1:0 +C+ DEPORTE 3 +p:DIGITAL+ +22cc:00c00000:045a:0001:1:0 +TOON DISNEY +p:CSAT +23cc:00c00000:044a:0001:1:0 +DT15 +p:C+ +32cc:00c00000:045d:0001:1:0 +ORF2 N +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dcc:00c00000:044d:0001:1:0 +hr-fernsehen +p:ARD +75cc:00c00000:0422:0001:1:0 +ONCEplus +p:DIGITAL+ +76cc:00c00000:040e:0001:1:0 +TELEDEPORTE +p:DIGITAL+ +f1cc:00c00000:0421:0001:1:0 +Bibel TV +p:Astra +22cd:00c00000:045a:0001:1:0 +BBC PRIME +p:CSAT +23cd:00c00000:044a:0001:1:0 +DT16 +p:C+ +32cd:00c00000:045d:0001:1:0 +ORF2 B +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dcd:00c00000:044d:0001:1:0 +arte +p:ARD +22ce:00c00000:045a:0001:1:0 +MOTORS TV +p:CSAT +23ce:00c00000:044a:0001:1:0 +DT17 +p:C+ +31ce:00c00000:045c:0001:1:0 +HOERZU DIGITAL +p:HOERZU +32ce:00c00000:045d:0001:1:0 +ORF2 O +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dce:00c00000:044d:0001:1:0 +SR Fernsehen Südwest +p:ARD +75ce:00c00000:0422:0001:1:0 +IBERDROLA +p:DIGITAL+ +22cf:00c00000:045a:0001:1:0 +E! ENTERTAINMENT +p:CSAT +23cf:00c00000:044a:0001:1:0 +DT18 +p:C+ +32cf:00c00000:045d:0001:1:0 +ORF2 S +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dcf:00c00000:044d:0001:1:0 +WDR Köln +p:ARD +75cf:00c00000:0422:0001:1:0 +DIGITAL+ +p:DIGITAL+ +23d0:00c00000:044a:0001:1:0 +DT19 +p:C+ +2fd0:00c00000:0458:0001:1:0 +TV5 Europe +p:TV5 +32d0:00c00000:045d:0001:1:0 +ORF2 T +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dd0:00c00000:044d:0001:1:0 +BR-alpha +p:ARD +75d0:00c00000:0422:0001:1:0 +CARTELERA +p:DIGITAL+ +23d1:00c00000:044a:0001:1:0 +DT20 +p:C+ +32d1:00c00000:045d:0001:1:0 +ORF2 V +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dd1:00c00000:044d:0001:1:0 +SÜDWEST BW +p:ARD +75d1:00c00000:0422:0001:1:0 +MOVISTAR +p:DIGITAL+ +32d2:00c00000:045d:0001:1:0 +ORF2 St +p:ORF,C:0d05,C:1702,C:1762,C:1801 +6dd2:00c00000:044d:0001:1:0 +Phoenix +p:ARD +75d2:00c00000:0422:0001:1:0 +TAQUILLA FÚTBOL +p:DIGITAL+ +32d3:00c00000:045d:0001:1:0 +ORF2 K +p:ORF,C:0d05,C:1702,C:1762,C:1801 +75d3:00c00000:0422:0001:1:0 +RECIBO +p:DIGITAL+ +07d4:00c00000:0449:0035:1:0 +RTL4 +p:CANAL+ +32d4:00c00000:045d:0001:1:0 +ATV+ +p:ATV+,C:0d05,C:1702,C:1762,C:1801 +07d5:00c00000:0449:0035:1:0 +RTL5 +p:CANAL+ +32d5:00c00000:045d:0001:1:0 +TW1 - 28Feb05 +p:ORF +32d6:00c00000:045d:0001:1:0 +ORF2E +p:ORF +75d6:00c00000:0422:0001:1:0 +AMENA +p:DIGITAL+ +1fd7:00c00000:0434:0001:1:0 +EUROSPORT +p:CSAT +32d7:00c00000:045d:0001:1:0 +GoTV - 28Feb05 +p:ATV+ +f1d7:00c00000:0421:0001:1:0 +TV TRWAM +p:Astra +1fd8:00c00000:0434:0001:1:0 +TMC +p:CSAT +6fd8:00c00000:042c:0001:1:0 +TVBS +p:Chinese Channel LTD. +75d8:00c00000:0422:0001:1:0 +TELEPIZZA +p:DIGITAL+ +1fd9:00c00000:0434:0001:1:0 +PLANETE +p:CSAT +07da:00c00000:0449:0035:1:0 +NGC +p:CANAL+ +1fdb:00c00000:0434:0001:1:0 +VOYAGE +p:CSAT +1fdc:00c00000:0434:0001:1:0 +LCI +p:CSAT +75dc:00c00000:0422:0001:1:0 +COMPRA SMS +p:DIGITAL+ +1fdd:00c00000:0434:0001:1:0 +CANAL J +p:CSAT +75dd:00c00000:0422:0001:1:0 +TEST TÉCNICO +p:DIGITAL+ +20de:00c00000:043e:0001:1:0 +KIOSQUE +p:CSAT +75de:00c00000:0422:0001:1:0 +TEST_CSD1 +p:DIGITAL+ +07df:00c00000:0449:0035:1:0 +Discovery +p:CANAL+ +1fdf:00c00000:0434:0001:1:0 +MA PLANETE +p:CSAT +75df:00c00000:0422:0001:1:0 +TEST_CSD2 +p:DIGITAL+ +1fe0:00c00000:0434:0001:1:0 +CUISINE.TV +p:CSAT +6fe0:00c00000:0443:0001:1:0 +MTV2 Pop Channel +p:MTV Networks +75e0:00c00000:0422:0001:1:0 +TEST_CSD3 +p:DIGITAL+ +f1e0:00c00000:0421:0001:1:0 +T.TV +p:Tele 2 +1fe1:00c00000:0434:0001:1:0 +FILLES TV +p:CSAT +75e1:00c00000:0422:0001:1:0 +TEST_CSD4 +p:DIGITAL+ +1fe2:00c00000:0434:0001:1:0 +TiJi +p:CSAT +6de2:00c00000:044d:0001:1:0 +Test-R +p:ARD +75e2:00c00000:0422:0001:1:0 +TEST_CSD5 +p:DIGITAL+ +2ee3:00c00000:0441:0001:1:0 +†RTL‡ Television +p:RTL World +75e3:00c00000:0422:0001:1:0 +TEST_CSD6 +p:DIGITAL+ +07e4:00c00000:0449:0035:1:0 +Animal Planet +p:CANAL+ +75e4:00c00000:0422:0001:1:0 +TEST_CSD7 +p:DIGITAL+ +75e5:00c00000:0422:0001:1:0 +TEST_CSD8 +p:DIGITAL+ +75e6:00c00000:0422:0001:1:0 +TEST_CSD9 +p:DIGITAL+ +75e7:00c00000:0422:0001:1:0 +TEST_CSD10 +p:DIGITAL+ +75e8:00c00000:0422:0001:1:0 +TEST_CSD11 +p:DIGITAL+ +07e9:00c00000:0449:0035:1:0 +Eurosport +p:canal+ +75e9:00c00000:0422:0001:1:0 +TEST_CSD12 +p:DIGITAL+ +23ea:00c00000:044a:0001:1:0 +CDN1 +p:CSAT +75ea:00c00000:0422:0001:1:0 +TEST_CSD13 +p:DIGITAL+ +23eb:00c00000:044a:0001:1:0 +CDN2 +p:CSAT +6feb:00c00000:042a:0001:1:0 +MTV ESP +p:MTV Networks +75eb:00c00000:0422:0001:1:0 +TEST_CSD14 +p:DIGITAL+ +23ec:00c00000:044a:0001:1:0 +CDN6 +p:CSAT +6fec:00c00000:042a:0001:1:0 +MTV F +p:MTV Networks +75ec:00c00000:0422:0001:1:0 +TEST_CSD15 +p:DIGITAL+ +23ed:00c00000:044a:0001:1:0 +CDN7 +p:CSAT +6fed:00c00000:042a:0001:1:0 +MTV Central +p:MTV Networks +07ee:00c00000:0449:0035:1:0 +BBC Prime +p:canal+ +23ee:00c00000:044a:0001:1:0 +CDN5 +p:CSAT +2fee:00c00000:0458:0001:1:0 +M6 Boutique +p:HSS +6fee:00c00000:042a:0001:1:0 +MTV HITS +p: +6eef:00c00000:04b1:0001:1:0 +ARD MHP-Test +p:ARD +6fef:00c00000:042a:0001:1:0 +MTV Base +p: +6ff0:00c00000:042a:0001:1:0 +VH1 +p: +23f1:00c00000:0452:0001:1:0 +walled garden +p:C+ +6ff1:00c00000:042a:0001:1:0 +VH1 Classic +p:MTV Networks +6ff2:00c00000:042a:0001:1:0 +Nickelodeon NL +p:MTV Networks +07f3:00c00000:0449:0035:1:0 +Hallmark +p:CANAL+ +6ff3:00c00000:042a:0001:1:0 +MTV 2 +p: +23f4:00c00000:0452:0001:1:0 +ABO1 +p:IMEDIA +2ef4:00c00000:0441:0001:1:0 +RTL2 +p:RTL World +6ff4:00c00000:042a:0001:1:0 +NICKELODEON ESP +p:MTV Networks +23f5:00c00000:0452:0001:1:0 +ABO2 +p:IMEDIA +6ff5:00c00000:042a:0001:1:0 +Service11 +p:MTV Networks +75f5:00c00000:0422:0001:1:0 +PLAYIN'TV +p:DIGITAL+ +23f6:00c00000:0452:0001:1:0 +testg2_1 +p:C+ +23f7:00c00000:0452:0001:1:0 +testg2_2 +p:C+ +23f8:00c00000:0452:0001:1:0 +testg2_3 +p:C+ +2ff8:00c00000:0458:0001:1:0 +LibertyTV FR +p:LibertyTV.com +6ff8:00c00000:042a:0001:1:0 +MTV HITS. +p: +6ff9:00c00000:042a:0001:1:0 +MTV Base. +p: +75f9:00c00000:0408:0001:1:0 +TVC INT. +p:DIGITAL+ +23fa:00c00000:0452:0001:1:0 +MON CSAT +p:IMEDIA +6ffa:00c00000:042a:0001:1:0 +VH1. +p: +75fa:00c00000:0408:0001:1:0 +ANDALUCÍA TV +p:DIGITAL+ +75fb:00c00000:0408:0001:1:0 +EUSKADI TV +p:DIGITAL+ +23fc:00c00000:0452:0001:1:0 +GL CONSULTANTS. +p:CSAT +75fc:00c00000:0408:0001:1:0 +TM SAT/LAOTRA +p:DIGITAL+ +02fd:00c00000:0007:0085:1:0 +iFoxKids +p:BetaDigital +23fd:00c00000:0452:0001:1:0 + +p:CSAT +6ffd:00c00000:042a:0001:1:0 +MTV 2. +p: +21fe:00c00000:044c:0001:1:0 +COMEDIE ! +p:CSAT +74fe:00c00000:0420:0001:1:0 +CINEMANÍA +p:DIGITAL+ +f1fe:00c00000:0421:0001:1:0 +ASTRA +p:Astra +02ff:00c00000:0007:0085:1:0 +LokalSAT +p:BetaDigital +21ff:00c00000:044c:0001:1:0 +13EME RUE +p:CSAT +74ff:00c00000:0420:0001:1:0 +CINEMANÍA 2 +p:DIGITAL+ +0803:00c00000:0449:0035:2:0 +RTL RADIO +p:CANAL+ +7508:00c00000:0420:0001:2:0 +CADENA SER +p:DIGITAL+ +f208:00c00000:0421:0001:2:0 +Radio Horeb +p:Eurociel +7509:00c00000:0420:0001:2:0 +M-80 RADIO +p:DIGITAL+ +750a:00c00000:0420:0001:2:0 +40 PRINCIPALES +p:DIGITAL+ +f20a:00c00000:0421:0001:2:0 +RDC +p:Polskie Radio-Regionalna +750b:00c00000:0420:0001:2:0 +CADENA DIAL +p:DIGITAL+ +750c:00c00000:0420:0001:2:0 +RADIOLÉ +p:DIGITAL+ +750d:00c00000:0420:0001:2:0 +MÁXIMA FM +p:DIGITAL+ +f20d:00c00000:0421:0001:2:0 +Jazz Radio Berlin +p:Deutsche Telekom AG +750e:00c00000:0420:0001:2:0 +SINFO RADIO +p:DIGITAL+ +f20e:00c00000:0421:0001:2:0 +Radio Caroline +p:StreamTel net +750f:00c00000:0420:0001:2:0 +EUSKADIRRATIA +p:DIGITAL+ +7510:00c00000:0420:0001:2:0 +RADIO EUSKADI +p:DIGITAL+ +7511:00c00000:0420:0001:2:0 +ANDALUCÍA RADIO +p:DIGITAL+ +7512:00c00000:0420:0001:2:0 +CAT. CULTURA +p:DIGITAL+ +7513:00c00000:0420:0001:2:0 +CAT. INFORM +p:DIGITAL+ +7514:00c00000:0420:0001:2:0 +CAT. MÚSICA +p:DIGITAL+ +7515:00c00000:0420:0001:2:0 +CAT. RADIO +p:DIGITAL+ +0816:00c00000:0449:0035:2:0 +RVi1 (VRT) +p:CANAL+ +081b:00c00000:0449:0035:2:0 +RVi2 (VRT) +p:CANAL+ +2725:00c00000:0402:0001:2:0 +DW01 +p:DW +2727:00c00000:0402:0001:2:0 +DW03 +p:Deutsche Telekom AG +2728:00c00000:0402:0001:2:0 +DW04 +p:DW +f22a:00c00000:0421:0001:2:0 +CFN/RFC +p:Canadian Forces Europe +f22b:00c00000:0421:0001:2:0 +Radio Neue Hoffnung +p:RADIO Neue Hoffnung +6e2f:00c00000:0431:0001:2:0 +NDR Kultur +p:ARD +6e30:00c00000:0431:0001:2:0 +MDR FIGARO +p:ARD +6e31:00c00000:0431:0001:2:0 +Fritz +p:ARD +6e32:00c00000:0431:0001:2:0 +MDR JUMP +p:ARD +6e33:00c00000:0431:0001:2:0 +MDR INFO +p:ARD +6e34:00c00000:0431:0001:2:0 +†SPUTNIK +p:ARD +3035:00c00000:0458:0001:2:0 +CFN/RFC +p:Canadian Forces Europe +6e35:00c00000:0431:0001:2:0 +RADIOmultikulti +p:ARD +3036:00c00000:0458:0001:2:0 +La Première Sat +p:RTBF +6e36:00c00000:0431:0001:2:0 +SWR2 +p:ARD +6e37:00c00000:0431:0001:2:0 +WDR 3 +p:ARD +6e38:00c00000:0431:0001:2:0 +WDR 5 +p:ARD +213b:00c00000:0442:0001:2:0 +CSAT RADIOS +p:CSAT +2140:00c00000:0442:0001:2:0 +RADIO INT 2 +p:CSAT +2141:00c00000:0442:0001:2:0 +RADIO INT +p:CSAT +3341:00c00000:045b:0001:2:0 +OE1 +p:ORF +2142:00c00000:0442:0001:2:0 +RADIO INT 3 +p:CSAT +3342:00c00000:045b:0001:2:0 +OE1 DD +p:ORF +3343:00c00000:045b:0001:2:0 +OE2 W +p:ORF +3344:00c00000:045b:0001:2:0 +OE2 N +p:ORF +3345:00c00000:045b:0001:2:0 +OE2 B +p:ORF +3346:00c00000:045b:0001:2:0 +OE2 O +p:ORF +2147:00c00000:0442:0001:2:0 +FRANCE MUSIQUES +p:CSAT +3347:00c00000:045b:0001:2:0 +OE2 S +p:ORF +2148:00c00000:0442:0001:2:0 +FIP +p:CSAT +3348:00c00000:045b:0001:2:0 +OE2 T +p:ORF +2149:00c00000:0442:0001:2:0 +France INFO +p:CSAT +3349:00c00000:045b:0001:2:0 +OE2 V +p:ORF +214a:00c00000:0442:0001:2:0 +France INTER +p:CSAT +334a:00c00000:045b:0001:2:0 +OE2 St +p:ORF +214b:00c00000:0442:0001:2:0 +LA CITY RADIO +p:CSAT +334b:00c00000:045b:0001:2:0 +OE2 K +p:ORF +214c:00c00000:0442:0001:2:0 +RFI INT +p:CSAT +214d:00c00000:0442:0001:2:0 +RADIO CLASSIQUE +p:CSAT +334d:00c00000:045b:0001:2:0 +OE3 +p:ORF +1f4e:00c00000:0449:0035:2:0 +MM +p:CANAL+ +214e:00c00000:0442:0001:2:0 +EUROPE 1 +p:CSAT +334e:00c00000:045b:0001:2:0 +FM4 +p:ORF +214f:00c00000:0442:0001:2:0 +RMC +p:CSAT +334f:00c00000:045b:0001:2:0 +ROI Wien +p:ORF +2150:00c00000:0442:0001:2:0 +RTL +p:CSAT +2151:00c00000:0442:0001:2:0 +RIRE ET CHANSONS +p:CSAT +2153:00c00000:0442:0001:2:0 +M FM +p:CSAT +2154:00c00000:0442:0001:2:0 +TSF +p:CSAT +3354:00c00000:045b:0001:2:0 +RADIO MARIA +p:Radio Maria Österreich +2155:00c00000:0442:0001:2:0 +NOSTALGIE +p:CSAT +2156:00c00000:0442:0001:2:0 +BFM +p:CSAT +2157:00c00000:0442:0001:2:0 +PARIS JAZZ +p:CSAT +2158:00c00000:0442:0001:2:0 +NRJ +p:CSAT +2159:00c00000:0442:0001:2:0 +EUROPE 2 +p:CSAT +215a:00c00000:0442:0001:2:0 +RTL 2 +p:CSAT +215b:00c00000:0442:0001:2:0 +SKYROCK +p:CSAT +215c:00c00000:0442:0001:2:0 +FUN RADIO +p:CSAT +215d:00c00000:0442:0001:2:0 +LE MOUV +p:CSAT +215e:00c00000:0442:0001:2:0 +RADIO NOVA +p:CSAT +215f:00c00000:0442:0001:2:0 +RADIO FG +p:CSAT +2160:00c00000:0442:0001:2:0 +VIBRATION +p:CSAT +2161:00c00000:0442:0001:2:0 +CONTACT FM +p:CSAT +2162:00c00000:0442:0001:2:0 +RADIO LATINA +p:CSAT +2163:00c00000:0442:0001:2:0 +RFM +p:CSAT +2164:00c00000:0442:0001:2:0 +CHERIE FM +p:CSAT +2165:00c00000:0442:0001:2:0 +ALOUETTE +p:CSAT +2166:00c00000:0442:0001:2:0 +VOLTAGE +p:CSAT +2167:00c00000:0442:0001:2:0 +OUI FM +p:CSAT +2168:00c00000:0442:0001:2:0 +ADO +p:CSAT +2169:00c00000:0442:0001:2:0 +COULEUR 3 +p:CSAT +216a:00c00000:0442:0001:2:0 +RFI MUSIQUE +p:CSAT +316a:00c00000:0459:0001:2:0 +Radio Maria +p:T-Systems +216b:00c00000:0442:0001:2:0 +RADIO NOTRE-DAME +p:CSAT +316b:00c00000:0459:0001:2:0 +Inselradio +p:T-Systems +6f6b:00c00000:042c:0001:2:0 +CNN Radio +p:CNN +216c:00c00000:0442:0001:2:0 +RADIO ALPHA +p:CSAT +6d6c:00c00000:0437:0001:2:0 +DLR-Berlin +p:ZDFvision +216d:00c00000:0442:0001:2:0 +RCJ / SHALOM +p:CSAT +6d6d:00c00000:0437:0001:2:0 +DLF-Köln +p:ZDFvision +216e:00c00000:0442:0001:2:0 +BEUR FM +p:CSAT +216f:00c00000:0442:0001:2:0 +MEDIA TROPICAL +p:CSAT +2170:00c00000:0442:0001:2:0 +AFRICA N1 +p:CSAT +2171:00c00000:0442:0001:2:0 +RCI SAT +p:CSAT +6d71:00c00000:0437:0001:2:0 +Österreich 1 +p:ZDFvision +2172:00c00000:0442:0001:2:0 +MEDI 1 +p:CSAT +2173:00c00000:0442:0001:2:0 +France CULTURE +p:CSAT +2174:00c00000:0442:0001:2:0 +WRN +p:CSAT +3174:00c00000:0459:0001:2:0 +HIT RADIO FFH +p:T-Systems +2175:00c00000:0442:0001:2:0 +RADIO DU VOYAGE +p:CSAT +3175:00c00000:0459:0001:2:0 +planet radio +p:T-Systems +2176:00c00000:0442:0001:2:0 +PARIS LIVE RADIO +p:CSAT +3176:00c00000:0459:0001:2:0 +harmony fm +p:T-Systems +4e85:00c00000:043a:0001:2:0 +Popular Classical +p:XtraMusic +4e86:00c00000:043a:0001:2:0 +Symphonic +p:XtraMusic +4e87:00c00000:043a:0001:2:0 +Opera +p:XtraMusic +4e88:00c00000:043a:0001:2:0 +Modern Country +p:XtraMusic +4e89:00c00000:043a:0001:2:0 +Traditional Country +p:XtraMusic +4e8a:00c00000:043a:0001:2:0 +Beautiful Instruments +p:XtraMusic +4e8b:00c00000:043a:0001:2:0 +New Age +p:XtraMusic +4e8c:00c00000:043a:0001:2:0 +Euro Hits +p:XtraMusic +4e8d:00c00000:043a:0001:2:0 +French Hits +p:XtraMusic +4e8e:00c00000:043a:0001:2:0 +German Folk +p:XtraMusic +4e8f:00c00000:043a:0001:2:0 +German Rock +p:XtraMusic +4e90:00c00000:043a:0001:2:0 +German Schlager +p:XtraMusic +0091:00c00000:0002:0085:2:0 +BLUES +p:PREMIERE,C:1702,C:1722,C:1801 +4e91:00c00000:043a:0001:2:0 +German Hits +p:XtraMusic +0092:00c00000:0002:0085:2:0 +†DINNER‡ PARTY +p:PREMIERE,C:1702,C:1722,C:1801 +4e92:00c00000:043a:0001:2:0 +Italian Contemporary +p:XtraMusic +0093:00c00000:0002:0085:2:0 +KLASSIK +p:PREMIERE,C:1702,C:1722,C:1801 +4e93:00c00000:043a:0001:2:0 +UK Hits +p:XtraMusic +0094:00c00000:0002:0085:2:0 +JAZZ +p:PREMIERE,C:1702,C:1722,C:1801 +4e94:00c00000:043a:0001:2:0 +Indian Pop +p:XtraMusic +0095:00c00000:0002:0085:2:0 +COUNTRY +p:PREMIERE,C:1702,C:1722,C:1801 +4e95:00c00000:043a:0001:2:0 +Turkish Pop +p:XtraMusic +0096:00c00000:0002:0085:2:0 +UK HITS +p:PREMIERE,C:1702,C:1722,C:1801 +4e96:00c00000:043a:0001:2:0 +Dutch Hits +p:XtraMusic +0097:00c00000:0002:0085:2:0 +†D‡EU†T‡SCHE† CHARTS‡ +p:PREMIERE,C:1702,C:1722,C:1801 +4e97:00c00000:043a:0001:2:0 +Acid Jazz +p:XtraMusic +0098:00c00000:0002:0085:2:0 +†HARD‡ †ROCK‡ +p:PREMIERE,C:1702,C:1722,C:1801 +4e98:00c00000:043a:0001:2:0 +Contemporary Jazz +p:XtraMusic +0099:00c00000:0002:0085:2:0 +†SOUL CL‡ASSICS +p:PREMIERE,C:1702,C:1722,C:1801 +4e99:00c00000:043a:0001:2:0 +Classic Jazz +p:XtraMusic +009a:00c00000:0002:0085:2:0 +†A‡LTERNATIVE† ROCK‡ +p:PREMIERE,C:1702,C:1722,C:1801 +4e9a:00c00000:043a:0001:2:0 +Smooth Jazz +p:XtraMusic +009b:00c00000:0002:0085:2:0 +†SOFT‡ †ROCK‡ +p:PREMIERE,C:1702,C:1722,C:1801 +4e9b:00c00000:043a:0001:2:0 +Brazil Carnival +p:XtraMusic +009c:00c00000:0002:0085:2:0 +†LOVE‡ †SONG‡S +p:PREMIERE,C:1702,C:1722,C:1801 +4e9c:00c00000:043a:0001:2:0 +Latin Contemporary +p:XtraMusic +009d:00c00000:0002:0085:2:0 +REGGAE +p:PREMIERE,C:1702,C:1722,C:1801 +4e9d:00c00000:043a:0001:2:0 +Salsa +p:XtraMusic +009e:00c00000:0002:0085:2:0 +†SPECIAL‡ EVENT +p:PREMIERE,C:1702,C:1722,C:1801 +4e9e:00c00000:043a:0001:2:0 +Rock en Espanol +p:XtraMusic +009f:00c00000:0002:0085:2:0 +†R&B‡/HIP HOP +p:PREMIERE,C:1702,C:1722,C:1801 +4e9f:00c00000:043a:0001:2:0 +Rock n Roll Oldies +p:XtraMusic +00a0:00c00000:0007:0085:2:0 +†ROCK ANT‡ENNE +p:BetaDigital +4ea0:00c00000:043a:0001:2:0 +70's Hits +p:XtraMusic +00a1:00c00000:0007:0085:2:0 +†ERF‡ Radio +p:BetaDigital +4ea1:00c00000:043a:0001:2:0 +80's Hits +p:XtraMusic +00a2:00c00000:0002:0085:2:0 +SCHLAGER +p:PREMIERE,C:1702,C:1722,C:1801 +4ea2:00c00000:043a:0001:2:0 +90's Hits +p:XtraMusic +00a3:00c00000:0002:0085:2:0 +†CL‡ASSIC† ROCK‡ +p:PREMIERE,C:1702,C:1722,C:1801 +4ea3:00c00000:043a:0001:2:0 +Great Standards +p:XtraMusic +00a4:00c00000:0002:0085:2:0 +†N‡EW† COUNT‡RY +p:PREMIERE,C:1702,C:1722,C:1801 +4ea4:00c00000:043a:0001:2:0 +Big Band Swing +p:XtraMusic +00a5:00c00000:0002:0085:2:0 +DANCE +p:PREMIERE,C:1702,C:1722,C:1801 +4ea5:00c00000:043a:0001:2:0 +Classic Rock +p:XtraMusic +00a6:00c00000:0002:0085:2:0 +70ER/80ER +p:PREMIERE,C:1702,C:1722,C:1801 +4ea6:00c00000:043a:0001:2:0 +Metal +p:XtraMusic +00a7:00c00000:0002:0085:2:0 +50ER/60ER +p:PREMIERE,C:1702,C:1722,C:1801 +13a7:00c00000:0455:0035:2:0 +NLR1 +p:CANAL+ +4ea7:00c00000:043a:0001:2:0 +Alternative +p:XtraMusic +13a8:00c00000:0455:0035:2:0 +NLR2 +p:CANAL+ +4ea8:00c00000:043a:0001:2:0 +Dance +p:XtraMusic +00a9:00c00000:0007:0085:2:0 +†sunshine‡ live +p:BetaDigital +13a9:00c00000:0455:0035:2:0 +NLR3 +p:CANAL+ +4ea9:00c00000:043a:0001:2:0 +Retro Dance +p:XtraMusic +00aa:00c00000:0007:0085:2:0 +†ANTENNE‡ BAYERN +p:BetaDigital +13aa:00c00000:0455:0035:2:0 +NLR4 +p:CANAL+ +4eaa:00c00000:043a:0001:2:0 +Trends +p:XtraMusic +00ab:00c00000:0005:0085:2:0 +domradio +p:BetaDigital +13ab:00c00000:0455:0035:2:0 +AM747 +p:CANAL+ +4eab:00c00000:043a:0001:2:0 +Contemporary Pop +p:XtraMusic +4eac:00c00000:043a:0001:2:0 +Hottest Hits +p:XtraMusic +4ead:00c00000:043a:0001:2:0 +Love Songs +p:XtraMusic +4eae:00c00000:043a:0001:2:0 +Power Hits +p:XtraMusic +4eaf:00c00000:043a:0001:2:0 +Blues +p:XtraMusic +4eb0:00c00000:043a:0001:2:0 +Classic R & B +p:XtraMusic +4eb1:00c00000:043a:0001:2:0 +R & B Hip Hop +p:XtraMusic +4eb2:00c00000:043a:0001:2:0 +Reggae +p:XtraMusic +4eb3:00c00000:043a:0001:2:0 +Rap +p:XtraMusic +0fb4:00c00000:0451:0035:2:0 +YAM FM +p:Canal+ +13ba:00c00000:0455:0035:2:0 +Yorin FM +p:CANAL+ +0fbe:00c00000:0451:0035:2:0 +RTL FM +p:canal+ +13bf:00c00000:0455:0035:2:0 +KINK FM +p:CANAL+ +0fc3:00c00000:0451:0035:2:0 +FunX . +p:CANAL+ +13c4:00c00000:0455:0035:2:0 +RNW1 +p:CANAL+ +13c5:00c00000:0455:0035:2:0 +RNW2 +p:CANAL+ +13c6:00c00000:0455:0035:2:0 +RNW3 +p:CANAL+ +13ce:00c00000:0455:0035:2:0 +Sky Radio +p:CANAL+ +13cf:00c00000:0455:0035:2:0 +Juize.FM +p:CANAL+ +13d0:00c00000:0455:0035:2:0 +Radio538 +p:CANAL+ +13d8:00c00000:0455:0035:2:0 +Concertzender +p:CANAL+ +6dd8:00c00000:044d:0001:2:0 +Bayern 4 Klassik +p:ARD +f1d8:00c00000:0421:0001:2:0 +Radio Maryja +p:Astra +6dd9:00c00000:044d:0001:2:0 +B5 aktuell +p:ARD +6dda:00c00000:044d:0001:2:0 +hr-info +p:ARD +6ddb:00c00000:044d:0001:2:0 +hr2 +p:ARD +6ddc:00c00000:044d:0001:2:0 +hr-klassik +p:ARD +13dd:00c00000:0455:0035:2:0 +Radio10Gold +p:Canal+ +32dd:00c00000:045d:0001:2:0 +OE1 - 28Feb05 +p:ORF +6ddd:00c00000:044d:0001:2:0 +YOU FM +p:ARD +6dde:00c00000:044d:0001:2:0 +Bayern 1 +p:ARD +32df:00c00000:045d:0001:2:0 +OE2 W - 28Feb05 +p:ORF +6ddf:00c00000:044d:0001:2:0 +NDR Info +p:ARD +32e0:00c00000:045d:0001:2:0 +OE2 N - 28Feb05 +p:ORF +6de0:00c00000:044d:0001:2:0 +NordwestRadio +p:ARD +32e1:00c00000:045d:0001:2:0 +OE2 B - 28Feb05 +p:ORF +6de1:00c00000:044d:0001:2:0 +SR 1 +p:ARD +32e2:00c00000:045d:0001:2:0 +OE2 O - 28Feb05 +p:ORF +32e3:00c00000:045d:0001:2:0 +OE2 S - 28Feb05 +p:ORF +32e4:00c00000:045d:0001:2:0 +OE2 T - 28Feb05 +p:ORF +32e5:00c00000:045d:0001:2:0 +OE2 V - 28Feb05 +p:ORF +32e6:00c00000:045d:0001:2:0 +OE2 St - 28Feb05 +p:ORF +13e7:00c00000:0455:0035:2:0 +Radio Veronica +p:CANAL+ +32e7:00c00000:045d:0001:2:0 +OE2 K - 28Feb05 +p:ORF +32e9:00c00000:045d:0001:2:0 +OE3 - 28Feb05 +p:ORF +32ea:00c00000:045d:0001:2:0 +FM4 - 28Feb05 +p:ORF +32eb:00c00000:045d:0001:2:0 +ROI Wien - 28Feb05 +p:ORF +6eed:00c00000:04b1:0001:2:0 +MEHRKANALTEST +p:ARD +6eee:00c00000:04b1:0001:2:0 +Mehrkanaltest +p:ARD +0c12:00c00000:045c:0001:12:0 +MMS01C +p:SES Multimedia SA +0c13:00c00000:0457:0001:12:0 +MMS02C +p:SES Astra +0c14:00c00000:041d:0001:12:0 +MMS03C +p:Ses-Astra +1d1b:00c00000:04f9:0001:12:0 +Net sys 01 +p:Netsystem +1d1c:00c00000:04f9:0001:12:0 +AliceSat +p:Netsystem +1d1d:00c00000:04f9:0001:12:0 +Net sys 03 +p:Netsystem +1d1e:00c00000:04f9:0001:12:0 +Net sys 04 +p:Netsystem +1d1f:00c00000:04f9:0001:12:0 +Net sys 05 +p:Netsystem +1d20:00c00000:04f9:0001:12:0 +Net sys 06 +p:Netsystem +1d21:00c00000:04f9:0001:12:0 +Net sys 07 +p:Netsystem +1c22:00c00000:0457:0001:12:0 +Lorcom +p:SES Astra +1d22:00c00000:04f9:0001:12:0 +Net sys 08 +p:Netsystem +1c23:00c00000:0457:0001:12:0 +Euro-Service 1 +p:SES Astra +1d23:00c00000:04f9:0001:12:0 +Net sys 09 +p:Netsystem +1c24:00c00000:0457:0001:12:0 +Icomera +p:OpenMux IP Gateway +1d24:00c00000:04f9:0001:12:0 +Net sys 10 +p:Netsystem +1c25:00c00000:0457:0001:12:0 +Demos Streams +p:SES Astra +1c27:00c00000:0457:0001:12:0 +MFTS Services +p:SES Astra +1c28:00c00000:0457:0001:12:0 +AN PTU-VS +p:SES Astra +1c29:00c00000:0457:0001:12:0 +AN PTU +p:SES Astra +1c32:00c00000:0457:0001:12:0 +CVCE +p:SES Astra +1c38:00c00000:0457:0001:12:0 +STB Skardin +p:SES Astra +1c3d:00c00000:0457:0001:12:0 +ASTON DOWNLOAD +p:ASTON +1c41:00c00000:0457:0001:12:0 +STB Won Ik +p:SES Multimeda SA +1c42:00c00000:0457:0001:12:0 +STB Loewe +p:SES Astra +3143:00c00000:0459:0001:12:0 +Wartezimmer TV +p:T-Systems +3145:00c00000:0459:0001:12:0 +RAPS +p:T-Systems +3149:00c00000:0459:0001:12:0 +b.i.s. AG +p:T-Systems +314c:00c00000:0459:0001:12:0 +InfomedTV +p:T-Systems +1c50:00c00000:0457:0001:12:0 +tvtv Digital +p:SES Astra +1c51:00c00000:0457:0001:12:0 +STB Bang-Olufsen +p:SES Astra +1c53:00c00000:0457:0001:12:0 +STB Pesi +p:SES Astra +1c54:00c00000:0457:0001:12:0 +FS Ecovision +p:SES Astra +1c57:00c00000:0457:0001:12:0 +Casablanca +p:SES Astra +6e5a:00c00000:0431:0001:12:0 +ARD-MHP-Data +p:ARD +185c:00c00000:0457:0001:12:0 +Proxy_txp2 +p:ses astra +185d:00c00000:0457:0001:12:0 +VPN TXP-2 +p:ses astra +1c5e:00c00000:0457:0001:12:0 +STB Seodu +p:SES Astra +1c60:00c00000:0457:0001:12:0 +STB Comag1 +p:SES Astra +1c63:00c00000:0457:0001:12:0 +STB Panasonic +p:SES Astra +1c66:00c00000:0457:0001:12:0 +Datendienst T1M +p:SES Astra +1c6c:00c00000:0457:0001:12:0 +Datacargo +p:SES Astra +1c71:00c00000:045c:0001:12:0 +Canal Net +p:OpenMux IP Gateway +1773:00c00000:0460:0019:12:0 +MPE FL1 Service +p:SES Astra +1c73:00c00000:0457:0001:12:0 +VS Unique Promo +p:SES-Astra +1d74:00c00000:03fa:0001:12:0 +Proxy GAC 1018 +p:Ses-Astra +0f77:00c00000:0005:0085:12:0 +BData6 +p:BetaDigital +0f79:00c00000:0005:0085:12:0 +moreTV +p:BetaDigital +1d79:00c00000:03fa:0001:12:0 +Proxy_26 +p:Ses-Astra +1e79:00c00000:043c:0001:12:0 +RBBS 1084 Chn1 +p:Ses Astra +1c7a:00c00000:0457:0001:12:0 +FWD PATH NF +p:SES Multimedia S.A. +1e7a:00c00000:043c:0001:12:0 +RBBS 1084 Inst +p:Ses Astra +1d7c:00c00000:03fa:0001:12:0 +Proxy_12 +p:Ses-Astra +1d7f:00c00000:041d:0001:12:0 +TDSL Proxy 1 +p:Ses-Astra +0f80:00c00000:0002:0085:12:0 + +p:betaresearch +1d80:00c00000:041d:0001:12:0 +DSL-MCST_02 +p:Ses-Astra +1d81:00c00000:041d:0001:12:0 +T-DSL VPN 1 +p:Ses-Astra +0f82:00c00000:0021:0085:12:0 +BData1 +p:BetaDigital +1d82:00c00000:041d:0001:12:0 +Proxy_02 +p:Ses-Astra +0f83:00c00000:0007:0085:12:0 +BData2 +p:BetaDigital +1d84:00c00000:041d:0001:12:0 +Sat@Once +p:SES Astra +0f86:00c00000:0007:0085:12:0 +BData3 +p:BetaDigital +0f87:00c00000:0007:0085:12:0 +BData4 +p:BetaDigital +0190:00c00000:0005:0085:12:0 +moreTVtest1 +p: +3390:00c00000:045d:0001:12:0 +AlphaCrypt +p:ORF +0191:00c00000:0005:0085:12:0 +moreTVtest2 +p: +0192:00c00000:0005:0085:12:0 +moreTVtest3 +p: +0193:00c00000:0005:0085:12:0 +moreTVtest4 +p: +0194:00c00000:0005:0085:12:0 +moreTVtest5 +p: +0195:00c00000:0005:0085:12:0 +moreTVtest6 +p: +0196:00c00000:0005:0085:12:0 +moreTVtest7 +p: +0197:00c00000:0005:0085:12:0 +moreTVtest8 +p: +0198:00c00000:0005:0085:12:0 +moreTVtest9 +p: +0199:00c00000:0005:0085:12:0 +moreTVtest10 +p: +019a:00c00000:0005:0085:12:0 +moreTVtest11 +p: +1da0:00c00000:041d:0001:12:0 +MediaSat +p:Ses-Astra +0dac:00c00000:0002:0085:12:0 +CPT_TP69 +p:PREMIERE +0dad:00c00000:0001:0085:12:0 +CPT_TP83 +p:PREMIERE +0dae:00c00000:0003:0085:12:0 +CPT_TP65 +p:PREMIERE +0daf:00c00000:0004:0085:12:0 +CPT_TP81 +p:PREMIERE +0db0:00c00000:0011:0085:12:0 +CPT_TP67 +p:PREMIERE +1cb7:00c00000:045f:0001:12:0 +HSI +p:SES Astra +0bb8:00c00000:045c:0001:12:0 +MMS1116A +p:SES Multimedia SA +1cb8:00c00000:045f:0001:12:0 +Zucchetti +p:SES Astra +1cb9:00c00000:045f:0001:12:0 +Demo +p:SES Astra +1edc:00c00000:041d:0001:12:0 +INT +p:SES ASTRA (An SES GLOBAL Company) +1edd:00c00000:0453:0001:12:0 +INT_1107 +p:SES ASTRA +1cdf:00c00000:045f:0001:12:0 +SkyData +p:SES Astra +1ce8:00c00000:0453:0001:12:0 +Proxy Global AC 1107 +p:OpenMux IP Gateway +1ce9:00c00000:0453:0001:12:0 +Servisys +p:OpenMux IP Gateway +1cea:00c00000:0453:0001:12:0 +ONET +p:OpenMux IP Gateway +1ceb:00c00000:0453:0001:12:0 +TVN24 +p:OpenMux IP Gateway +1cec:00c00000:0453:0001:12:0 +sat_speed +p:OpenMux IP Gateway +1ced:00c00000:0453:0001:12:0 +EasyNet +p:OpenMux IP Gateway +1cee:00c00000:0453:0001:12:0 +Filiago +p:OpenMux IP Gateway +1cef:00c00000:0453:0001:12:0 +Proxy_19 +p:OpenMux IP Gateway +1cf0:00c00000:0453:0001:12:0 +NetupSat +p:OpenMux IP Gateway +1cf4:00c00000:0453:0001:12:0 +File Push +p:SES Astra +1cf5:00c00000:0453:0001:12:0 +MT Tests +p:OpenMux IP Gateway +1cf6:00c00000:0453:0001:12:0 +IP4 Proxy +p:OpenMux IP Gateway +1cf7:00c00000:0453:0001:12:0 +EntrySat +p:OpenMux IP Gateway +1cf8:00c00000:0453:0001:12:0 +Sharp & Strong +p:OpenMux IP Gateway +1cfc:00c00000:0453:0001:12:0 +SGI +p:SES Astra +1771:00c00000:0460:0019:14:0 +RCS FL1 Service +p:ASTRA +7404:00c00000:044e:0001:128:0 +ASTRA HD +p:Ses-Astra +1c2a:00c00000:0457:0001:128:0 +STB Handan +p:SES Astra +1c2b:00c00000:0457:0001:128:0 +STB Hyundai +p:SES Astra +1c3a:00c00000:0457:0001:128:0 +STB Philips +p:SES Astra +1c3b:00c00000:0457:0001:128:0 +STB Opentech +p:SES Astra +1c48:00c00000:0457:0001:128:0 +STB Sony +p:SES Multimedia SA +1c49:00c00000:0457:0001:128:0 +STB GSS +p:SES Astra +1c4b:00c00000:0457:0001:128:0 +STB Inverto +p:SES Astra +1c4f:00c00000:0457:0001:128:0 +Topfield +p:SES Astra +1c58:00c00000:0457:0001:128:0 +GRUNDIG DVB +p:SES Astra +1c5b:00c00000:0457:0001:128:0 +Opentech +p:SES Astra +1c5c:00c00000:0457:0001:128:0 +SKYMASTER1 +p:SES Astra +1c5d:00c00000:0457:0001:128:0 +STB DMT +p:SES Astra +1c5f:00c00000:0457:0001:128:0 +SKYMASTER2 +p:SES Astra +1c65:00c00000:0457:0001:128:0 +STB Homecast +p:SES Astra +1c74:00c00000:0457:0001:128:0 +STB Eycos +p:SES Astra +0bba:00c00000:0457:0001:128:0 +MMS1111A +p:SES Astra +000d:00c00000:0457:0001:129:0 +ASTRA SDT +p:ASTRA +5014:00c00000:045c:0001:129:0 +ASTRA-NET GEN1 +p:ESM +1c21:00c00000:045c:0001:129:0 +ASTRA NET Service 1 +p:SES Multimedia SA +1c2e:00c00000:045c:0001:129:0 +Intersat +p:SES Multimedia SA +0065:00c00000:045c:0001:129:0 +Nokia SW Update1 +p:NOKIA +0071:00c00000:045c:0001:129:0 +Nokia SW Update2 +p:SES Multimedia SA +007a:00c00000:045c:0001:129:0 +Samsung2 +p:Samsung +33a4:00c00000:045d:0001:129:0 +VESTEL OAD2 +p:ORF +33ae:00c00000:045d:0001:129:0 +VESTEL DOWNLOAD +p:ORF +00e1:00c00000:0447:0001:129:0 +PHILIPS DOWNLOAD 1.1 +p:WIZJA 1 +00e2:00c00000:0447:0001:129:0 +PHILIPS DOWNLOAD 1.2 +p:UPC DIRECT +0066:00c00000:045c:0001:130:0 +HUMAX DOWNLOAD SVC +p:Humax +1c70:00c00000:045c:0001:130:0 +Icomera +p:NSAB +1774:00c00000:0460:0019:130:0 +MMT FL1 Service +p:ASTRA +1c3f:00c00000:0457:0001:144:0 +THOMSON download +p:SES Astra +1c83:00c00000:0457:0001:170:0 +Kathrein Download +p:SES Astra +1c3c:00c00000:0457:0001:171:0 +STB Radix +p:RADIXdownload +1c40:00c00000:0457:0001:171:0 +STB SMEL +p:SES Multimedia +1c43:00c00000:0457:0001:171:0 +STB Echostar +p:SES Astra +1c44:00c00000:0457:0001:171:0 +STB Grob +p:SES Astra +1c46:00c00000:0457:0001:171:0 +STB Samsung Co. +p:SES Astra +1c4e:00c00000:0457:0001:171:0 +STB Aston2 +p:ASTON +006a:00c00000:045c:0001:171:0 +GALAXIS DOWNLOAD +p:Astra +006b:00c00000:045c:0001:171:0 +FORCE DOWNLOAD +p:Astra +006c:00c00000:045c:0001:171:0 +SEMCO Download +p:Astra +006e:00c00000:045c:0001:171:0 +STB Galaxis 2 +p:Astra +0070:00c00000:045c:0001:171:0 +STB Technisat +p:SES Multimedia SA +0a82:00c00000:0004:0085:178:0 +Videotext +p:BetaResearch +0a94:00c00000:0011:0085:178:0 +TM V1.0 +p:Premiere World,C:1702,C:1722,C:1801 +0f84:00c00000:0011:0085:179:0 +VCR-Setup +p:BetaResearch +0f85:00c00000:0011:0085:179:0 +Modem-Setup +p:BetaResearch +23f0:00c00000:0452:0001:192:0 +CODE DOWN1 +p:C+ +2007:00c00000:0434:0001:193:0 +DATA SYSTEM†76‡ +p:CSAT +2327:00c00000:045a:0001:193:0 +DATASYSTEM †114‡ +p:CSAT +2133:00c00000:043e:0001:193:0 +DATA SYSTEM[86] +p:CSAT +233c:00c00000:0400:0001:193:0 +DATASYSTEMS TR 24 +p:CANALSATELLITE +2453:00c00000:0452:0001:193:0 +DATA SYS +p:test +1b58:00c00000:03fc:0001:193:0 +DATA SYSTEM +p:CSAT +225f:00c00000:044c:0001:193:0 +DATA SYSTEM[100] +p:CSAT +206b:00c00000:0430:0001:193:0 +DATA SYSTEM[72] +p:CSAT +6f71:00c00000:042c:0001:193:0 +DATA_SYS_68 +p:DT CSAT +2773:00c00000:0402:0001:193:0 +DATA SYSTEM +p:CSAT +0c84:00c00000:0444:0001:193:0 +NDS_DATA +p:Canal Satellite +2197:00c00000:0442:0001:193:0 +DATA SYSTEM[90] +p:CSAT +1fa3:00c00000:042e:0001:193:0 +DATA SYSTEM[70] +p:CSAT +24b7:00c00000:0456:0001:193:0 +DATASYSTEM 110 +p:CSAT +22c3:00c00000:0438:0001:193:0 +DATA SYSTEM†80‡ +p:CSAT +42cb:00c00000:0446:0001:193:0 +DATA SYSTEM TR94 +p:AB SAT +20cf:00c00000:0432:0001:193:0 +DATA SYSTEM†74‡ +p:CSAT +6fea:00c00000:042a:0001:193:0 +DATA_SYSTEM_TR_66 +p:MTV Networks +23ef:00c00000:044a:0001:193:0 +DATA SYSTEM[98] +p:C+ +21fb:00c00000:0448:0001:193:0 +DATA SYSTEM[96] +p:CSAT +2143:00c00000:0442:0001:195:0 +KIOSQUE 13 +p:CSAT +2144:00c00000:0442:0001:195:0 +OM'TV +p:CSAT +2263:00c00000:0438:0001:195:0 +CANAL EVENEMENT +p:CSAT +2266:00c00000:0438:0001:195:0 + +p:CSAT +2269:00c00000:0438:0001:195:0 +KIOSQUE 1 +p:CSAT +226a:00c00000:0438:0001:195:0 +KIOSQUE +p:CSAT +226b:00c00000:0438:0001:195:0 +KIOSQUE 11 +p:CSAT +226c:00c00000:0438:0001:195:0 +ESPACE KIOSQUE +p:CSAT +20d2:00c00000:043e:0001:195:0 +KIOSQUE 2 +p:CSAT +20d3:00c00000:043e:0001:195:0 +KIOSQUE 3 +p:CSAT +20d4:00c00000:043e:0001:195:0 +KIOSQUE 4 +p:CSAT +20d5:00c00000:043e:0001:195:0 +KIOSQUE 5 +p:CSAT +20d6:00c00000:043e:0001:195:0 +KIOSQUE 6 +p:CSAT +20d7:00c00000:043e:0001:195:0 +KIOSQUE 7 +p:CSAT +20d8:00c00000:043e:0001:195:0 +KIOSQUE 8 +p:CSAT +20d9:00c00000:043e:0001:195:0 +KIOSQUE 9 +p:CSAT +20da:00c00000:043e:0001:195:0 +KIOSQUE 10 +p:CSAT +20db:00c00000:043e:0001:195:0 +KIOSQUE 14 +p:CSAT +20dc:00c00000:043e:0001:195:0 +KIOSQUE 15 +p:CSAT +20dd:00c00000:043e:0001:195:0 +KIOSQUE 12 +p:CSAT +23f2:00c00000:0452:0001:195:0 +PPV1 +p:IMEDIA +23f3:00c00000:0452:0001:195:0 +PPV2 +p:IMEDIA +23f9:00c00000:0452:0001:195:0 +PPV3 +p:IMEDIA +23fb:00c00000:0452:0001:195:0 +KIOSQUE +p:IMEDIA +2012:00c00000:0430:0001:197:0 +PMU sur Canal+ +p:CSAT +219c:00c00000:0448:0001:197:0 +MOSA 2 +p:CSAT +219d:00c00000:0448:0001:197:0 +MOSA 3 +p:CSAT +21a6:00c00000:0448:0001:197:0 +MOSA 4 +p:CSAT +23c0:00c00000:044a:0001:197:0 +DT3 +p:IMEDIA +213d:00c00000:0442:0001:198:0 +CANALSAT RADIOS +p:CSAT +213e:00c00000:0442:0001:198:0 +RADIOS 2 +p:CSAT +213f:00c00000:0442:0001:198:0 +RADIOS 3 +p:CSAT +2146:00c00000:0442:0001:198:0 +RF +p:CSAT +end +Have a lot of bugs! diff --git a/lib/base/connection.cpp b/lib/base/connection.cpp new file mode 100644 index 0000000..f6a398c --- /dev/null +++ b/lib/base/connection.cpp @@ -0,0 +1,5 @@ +#include + +DEFINE_REF(eConnection); + + diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp index 810aba0..fe4bcc7 100644 --- a/lib/dvb/db.cpp +++ b/lib/dvb/db.cpp @@ -27,6 +27,52 @@ eDVBService &eDVBService::operator=(const eDVBService &s) return *this; } +RESULT eDVBService::getName(const eServiceReference &ref, std::string &name) +{ + name = m_service_name; +} + +int eDVBService::checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query) +{ + int res = 0; + switch (query.m_type) + { + case eDVBChannelQuery::tName: + res = m_service_name.find(query.m_string) != std::string::npos; + break; + case eDVBChannelQuery::tProvider: + res = m_provider_name.find(query.m_string) != std::string::npos; + break; + case eDVBChannelQuery::tType: + res = ref.getServiceType() == query.m_int; + break; + case eDVBChannelQuery::tBouquet: + res = 0; + break; + case eDVBChannelQuery::tSatellitePosition: + res = (ref.getDVBNamespace().get() >> 16) == query.m_int; + break; + case eDVBChannelQuery::tChannelID: + { + eDVBChannelID chid; + ref.getChannelID(chid); + res = chid == query.m_channelid; + break; + } + case eDVBChannelQuery::tAND: + res = checkFilter(ref, *query.m_p1) && checkFilter(ref, *query.m_p2); + break; + case eDVBChannelQuery::tOR: + res = checkFilter(ref, *query.m_p1) || checkFilter(ref, *query.m_p2); + break; + } + + if (query.m_inverse) + return !res; + else + return res; +} + DEFINE_REF(eDVBDB); eDVBDB::eDVBDB() @@ -282,3 +328,42 @@ RESULT eDVBDB::getService(const eServiceReferenceDVB &reference, ePtr &query, eDVBChannelQuery *q) +{ + query = new eDVBDBQuery(this, q); + return 0; +} + +DEFINE_REF(eDVBDBQuery); + +eDVBDBQuery::eDVBDBQuery(eDVBDB *db, eDVBChannelQuery *query): m_db(db), m_query(query) +{ + m_cursor = m_db->m_services.begin(); +} + +RESULT eDVBDBQuery::getNextResult(eServiceReferenceDVB &ref) +{ + while (m_cursor != m_db->m_services.end()) + { + ref = m_cursor->first; + + int res = (!m_query) || m_cursor->second->checkFilter(ref, *m_query); + + ++m_cursor; + + if (res) + return 0; + } + return 1; +} + +RESULT eDVBChannelQuery::compile(ePtr &res, std::string query) +{ + res = new eDVBChannelQuery(); + res->m_type = eDVBChannelQuery::tName; + res->m_inverse = 0; + res->m_string = query; + return 0; +} + +DEFINE_REF(eDVBChannelQuery); diff --git a/lib/dvb/db.h b/lib/dvb/db.h index e673b9e..55998eb 100644 --- a/lib/dvb/db.h +++ b/lib/dvb/db.h @@ -4,27 +4,12 @@ #include #include -class eDVBService: public iObject -{ - DECLARE_REF; -public: - eDVBService(); - std::string m_service_name; - std::string m_provider_name; - - int m_flags; - std::set m_ca; - std::map m_cache; - virtual ~eDVBService(); - - eDVBService &operator=(const eDVBService &); -}; - class ServiceDescriptionTable; class eDVBDB: public iDVBChannelList { DECLARE_REF; + friend class eDVBDBQuery; private: struct channel { @@ -45,6 +30,21 @@ public: RESULT addService(const eServiceReferenceDVB &service, eDVBService *service); RESULT getService(const eServiceReferenceDVB &reference, ePtr &service); + + RESULT startQuery(ePtr &query, eDVBChannelQuery *query); +}; + + // we have to add a possibility to invalidate here. +class eDVBDBQuery: public iDVBChannelListQuery +{ +DECLARE_REF; +private: + std::map >::iterator m_cursor; + ePtr m_db; + ePtr m_query; +public: + eDVBDBQuery(eDVBDB *db, eDVBChannelQuery *query); + virtual RESULT getNextResult(eServiceReferenceDVB &ref); }; #endif diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h index c68ad94..1579616 100644 --- a/lib/dvb/idvb.h +++ b/lib/dvb/idvb.h @@ -139,7 +139,7 @@ struct eServiceReferenceDVB: public eServiceReference setTransportStreamID(chid.transport_stream_id); } - void getChannelID(eDVBChannelID &chid) + void getChannelID(eDVBChannelID &chid) const { chid = eDVBChannelID(getDVBNamespace(), getTransportStreamID(), getOriginalNetworkID()); } @@ -151,14 +151,81 @@ struct eServiceReferenceDVB: public eServiceReference }; +////////////////// TODO: we need an interface here, but what exactly? + +#include +// btw, still implemented in db.cpp. FIX THIS, TOO. + +class eDVBChannelQuery; + +class eDVBService: public iStaticServiceInformation +{ + DECLARE_REF; +public: + eDVBService(); + std::string m_service_name; + std::string m_provider_name; + + int m_flags; + std::set m_ca; + std::map m_cache; + virtual ~eDVBService(); + + eDVBService &operator=(const eDVBService &); + + // iStaticServiceInformation + RESULT getName(const eServiceReference &ref, std::string &name); + + // for filtering: + int checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query); +}; + +////////////////// + class iDVBChannel; class iDVBDemux; class iDVBFrontendParameters; +class iDVBChannelListQuery: public iObject +{ +public: + virtual RESULT getNextResult(eServiceReferenceDVB &ref)=0; +}; + +class eDVBChannelQuery: public iObject +{ + DECLARE_REF; +public: + enum + { + tName, + tProvider, + tType, + tBouquet, + tSatellitePosition, + tChannelID, + tAND, + tOR + }; + + int m_type; + int m_inverse; + + std::string m_string; + int m_int; + eDVBChannelID m_channelid; + + static RESULT compile(ePtr &res, std::string query); + + ePtr m_p1, m_p2; +}; + class iDVBChannelList: public iObject { public: virtual RESULT getChannelFrontendData(const eDVBChannelID &id, ePtr &parm)=0; + virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr &service)=0; + virtual RESULT startQuery(ePtr &query, eDVBChannelQuery *query)=0; }; class iDVBResourceManager: public iObject diff --git a/lib/dvb/stT1RVV7 b/lib/dvb/stT1RVV7 deleted file mode 100644 index e69de29..0000000 diff --git a/lib/gdi/font.cpp b/lib/gdi/font.cpp index 187512d..9a7ec06 100644 --- a/lib/gdi/font.cpp +++ b/lib/gdi/font.cpp @@ -467,7 +467,7 @@ int eTextPara::renderString(const std::string &string, int rflags) while(p != string.end()) { - unsigned int unicode=*p++; + unsigned int unicode=(unsigned char)*p++; if (unicode & 0x80) // we have (hopefully) UTF8 here, and we assume that the encoding is VALID { diff --git a/lib/gui/elistbox.cpp b/lib/gui/elistbox.cpp index 5a9ee4d..f530019 100644 --- a/lib/gui/elistbox.cpp +++ b/lib/gui/elistbox.cpp @@ -1,3 +1,4 @@ + /* written by: Felix Domke */ #include #include @@ -9,11 +10,7 @@ eListbox::eListbox(eWidget *parent): eWidget(parent) void eListbox::setContent(iListboxContent *content) { m_content = content; - invalidate(); - if (m_content) - m_content->cursorHome(); - m_top = 0; - m_selected = 0; + entryReset(); } void eListbox::moveSelection(int dir) @@ -46,6 +43,8 @@ void eListbox::moveSelection(int dir) if (m_top < 0) m_top = 0; break; + case justCheck: + break; } /* note that we could be on an invalid cursor position, but we don't @@ -54,6 +53,7 @@ void eListbox::moveSelection(int dir) /* now, look wether the current selection is out of screen */ m_selected = m_content->cursorGet(); + if (m_selected < m_top) { m_top -= m_items_per_page; @@ -64,11 +64,12 @@ void eListbox::moveSelection(int dir) /* m_top should be always valid here as it's selected */ m_top += m_items_per_page; } - + if (m_top != oldtop) invalidate(); - else + else if (m_selected != oldsel) { + /* redraw the old and newly selected */ gRegion inv = eRect(0, m_itemheight * (m_selected-m_top), size().width(), m_itemheight); inv |= eRect(0, m_itemheight * (oldsel-m_top), size().width(), m_itemheight); @@ -119,3 +120,57 @@ void eListbox::recalcSize() m_content->setSize(eSize(size().width(), m_itemheight)); m_items_per_page = size().height() / m_itemheight; } + +void eListbox::entryAdded(int index) +{ + /* manage our local pointers. when the entry was added before the current position, we have to advance. */ + + /* we need to check <= - when the new entry has the (old) index of the cursor, the cursor was just moved down. */ + if (index <= m_selected) + ++m_selected; + if (index <= m_top) + ++m_top; + + /* we have to check wether our current cursor is gone out of the screen. */ + /* moveSelection will check for this case */ + moveSelection(justCheck); + + /* now, check if the new index is visible. */ + if ((m_top <= index) && (index < (m_top + m_items_per_page))) + { + /* todo, calc exact invalidation... */ + invalidate(); + } +} + +void eListbox::entryRemoved(int index) +{ + if (index == m_selected) + m_selected = m_content->cursorGet(); + + moveSelection(justCheck); + + if ((m_top <= index) && (index < (m_top + m_items_per_page))) + { + /* todo, calc exact invalidation... */ + invalidate(); + } +} + +void eListbox::entryChanged(int index) +{ + if ((m_top <= index) && (index < (m_top + m_items_per_page))) + { + gRegion inv = eRect(0, m_itemheight * (index-m_top), size().width(), m_itemheight); + invalidate(inv); + } +} + +void eListbox::entryReset() +{ + invalidate(); + if (m_content) + m_content->cursorHome(); + m_top = 0; + m_selected = 0; +} diff --git a/lib/gui/elistbox.h b/lib/gui/elistbox.h index d546486..9ec9466 100644 --- a/lib/gui/elistbox.h +++ b/lib/gui/elistbox.h @@ -34,13 +34,15 @@ protected: virtual int size()=0; - virtual RESULT connectItemChanged(const Slot0 &itemChanged, ePtr &connection)=0; + void setListbox(eListbox *lb); // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though virtual void setSize(const eSize &size)=0; /* the following functions always refer to the selected item */ virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)=0; + + eListbox *m_listbox; #endif }; @@ -55,12 +57,24 @@ public: moveUp, moveDown, moveTop, - moveEnd + moveEnd, + justCheck }; protected: int event(int event, void *data=0, void *data2=0); void recalcSize(); private: + friend class iListboxContent; + + /* entryAdded: an entry was added *before* the given index. it's index is the given number. */ + void entryAdded(int index); + /* entryRemoved: an entry with the given index was removed. */ + void entryRemoved(int index); + /* entryChanged: the entry with the given index was changed and should be redrawn. */ + void entryChanged(int index); + /* the complete list changed. you should not attemp to keep the current index. */ + void entryReset(); + int m_top, m_selected; int m_itemheight; int m_items_per_page; diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp index d3a2e77..0a10b27 100644 --- a/lib/gui/elistboxcontent.cpp +++ b/lib/gui/elistboxcontent.cpp @@ -29,6 +29,10 @@ iListboxContent::~iListboxContent() { } +void iListboxContent::setListbox(eListbox *lb) +{ + m_listbox = lb; +} DEFINE_REF(eListboxTestContent); @@ -203,11 +207,6 @@ int eListboxStringContent::size() return m_size; } -RESULT eListboxStringContent::connectItemChanged(const Slot0 &itemChanged, ePtr &connection) -{ - return 0; -} - void eListboxStringContent::setSize(const eSize &size) { m_itemsize = size; @@ -316,11 +315,6 @@ int eListboxPythonStringContent::size() return PyList_Size(m_list); } -RESULT eListboxPythonStringContent::connectItemChanged(const Slot0 &itemChanged, ePtr &connection) -{ - return 0; -} - void eListboxPythonStringContent::setSize(const eSize &size) { m_itemsize = size; diff --git a/lib/gui/elistboxcontent.h b/lib/gui/elistboxcontent.h index 7ef6011..deea300 100644 --- a/lib/gui/elistboxcontent.h +++ b/lib/gui/elistboxcontent.h @@ -55,8 +55,6 @@ protected: void cursorRestore(); int size(); - RESULT connectItemChanged(const Slot0 &itemChanged, ePtr &connection); - // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though void setSize(const eSize &size); diff --git a/lib/nav/core.cpp b/lib/nav/core.cpp index 72d3fc5..10d18e3 100644 --- a/lib/nav/core.cpp +++ b/lib/nav/core.cpp @@ -102,7 +102,7 @@ RESULT eNavigation::pause(int dop) if (!m_runningService) return -1; ePtr p; - if (m_runningService->getIPausableService(p)) + if (m_runningService->pause(p)) return -2; if (dop) return p->pause(); diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i index 8e55b74..4bd0cdc 100644 --- a/lib/python/enigma_python.i +++ b/lib/python/enigma_python.i @@ -66,6 +66,7 @@ extern PSignal1 &keyPressedSignal(); %} RefCount(eListboxPythonStringContent) +RefCount(eListboxServiceContent) #define DEBUG %include "stl.i" diff --git a/lib/service/iservice.h b/lib/service/iservice.h index 01c61fc..5a8a062 100644 --- a/lib/service/iservice.h +++ b/lib/service/iservice.h @@ -147,13 +147,21 @@ public: large list, provided that no state information is nessesary to deliver the required information. Anyway - ref *must* be the same as the argument to the info() or getIServiceInformation call! */ -class iServiceInformation: public iObject +class iStaticServiceInformation: public iObject { public: virtual RESULT getName(const eServiceReference &ref, std::string &name)=0; }; -typedef ePtr iServiceInformationPtr; +TEMPLATE_TYPEDEF(ePtr, iStaticServiceInformationPtr); + +class iServiceInformation: public iStaticServiceInformation +{ +public: + +}; + +TEMPLATE_TYPEDEF(ePtr, iServiceInformationPtr); class iPauseableService: public iObject { @@ -162,7 +170,7 @@ public: virtual RESULT unpause()=0; }; -typedef ePtr iPauseableServicePtr; +TEMPLATE_TYPEDEF(ePtr, iPauseableServicePtr); class iPlayableService: public iObject { @@ -176,8 +184,8 @@ public: virtual RESULT connectEvent(const Slot2 &event, ePtr &connection)=0; virtual RESULT start()=0; virtual RESULT stop()=0; - virtual RESULT getIPausableService(ePtr &ptr)=0; - virtual RESULT getIServiceInformation(ePtr &ptr)=0; + virtual RESULT pause(ePtr &ptr)=0; + virtual RESULT info(ePtr &ptr)=0; }; TEMPLATE_TYPEDEF(ePtr, iPlayableServicePtr); @@ -189,10 +197,9 @@ public: virtual RESULT stop()=0; }; -typedef ePtr iRecordableServicePtr; +TEMPLATE_TYPEDEF(ePtr, iRecordableServicePtr); // TEMPLATE_TYPEDEF(std::list, eServiceReferenceList); -typedef std::list eServiceReferenceList; class iListableService: public iObject { @@ -208,9 +215,9 @@ public: virtual RESULT play(const eServiceReference &, ePtr &ptr)=0; virtual RESULT record(const eServiceReference &, ePtr &ptr)=0; virtual RESULT list(const eServiceReference &, ePtr &ptr)=0; - virtual RESULT info(const eServiceReference &, ePtr &ptr); + virtual RESULT info(const eServiceReference &, ePtr &ptr); }; -typedef ePtr iServiceHandlerPtr; +TEMPLATE_TYPEDEF(ePtr, iServiceHandlerPtr); #endif diff --git a/lib/service/listboxservice.cpp b/lib/service/listboxservice.cpp new file mode 100644 index 0000000..011c96c --- /dev/null +++ b/lib/service/listboxservice.cpp @@ -0,0 +1,134 @@ +#include +#include + +void eListboxServiceContent::setRoot(const eServiceReference &root) +{ + m_root = root; + + assert(m_service_center); + + ePtr lst; + if (m_service_center->list(m_root, lst)) + eDebug("no list available!"); + else + if (lst->getContent(m_list)) + eDebug("getContent failed"); + + m_size = m_list.size(); + cursorHome(); +} + +DEFINE_REF(eListboxServiceContent); + +eListboxServiceContent::eListboxServiceContent() +{ + m_size = 0; + cursorHome(); + eServiceCenter::getInstance(m_service_center); +} + +void eListboxServiceContent::cursorHome() +{ + m_cursor = m_list.begin(); + m_cursor_number = 0; +} + +void eListboxServiceContent::cursorEnd() +{ + m_cursor = m_list.end(); + m_cursor_number = m_size; +} + +int eListboxServiceContent::cursorMove(int count) +{ + if (count > 0) + { + while (count && (m_cursor != m_list.end())) + { + ++m_cursor; + ++m_cursor_number; + --count; + } + } else if (count < 0) + { + while (count && (m_cursor != m_list.begin())) + { + --m_cursor; + --m_cursor_number; + ++count; + } + } + + return 0; +} + +int eListboxServiceContent::cursorValid() +{ + return m_cursor != m_list.end(); +} + +int eListboxServiceContent::cursorSet(int n) +{ + cursorHome(); + cursorMove(n); + + return 0; +} + +int eListboxServiceContent::cursorGet() +{ + return m_cursor_number; +} + +void eListboxServiceContent::cursorSave() +{ + m_saved_cursor = m_cursor; + m_saved_cursor_number = m_cursor_number; +} + +void eListboxServiceContent::cursorRestore() +{ + m_cursor = m_saved_cursor; + m_cursor_number = m_saved_cursor_number; +} + +int eListboxServiceContent::size() +{ + return m_size; +} + +void eListboxServiceContent::setSize(const eSize &size) +{ + m_itemsize = size; +} + +void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected) +{ + ePtr fnt = new gFont("Arial", 14); + painter.clip(eRect(offset, m_itemsize)); + style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal); + painter.clear(); + + if (cursorValid()) + { + painter.setFont(fnt); + + ePoint text_offset = offset + (selected ? ePoint(2, 2) : ePoint(1, 1)); + + /* get name of service */ + ePtr service_info; + m_service_center->info(*m_cursor, service_info); + std::string name = ""; + + if (service_info) + service_info->getName(*m_cursor, name); + + painter.renderText(eRect(text_offset, m_itemsize), name); + + if (selected) + style.drawFrame(painter, eRect(offset, m_itemsize), eWindowStyle::frameListboxEntry); + } + + painter.clippop(); +} + diff --git a/lib/service/listboxservice.h b/lib/service/listboxservice.h new file mode 100644 index 0000000..45e5ba7 --- /dev/null +++ b/lib/service/listboxservice.h @@ -0,0 +1,48 @@ +#ifndef __lib_service_listboxservice_h +#define __lib_service_listboxservice_h + +#include +#include + +class eServiceCenter; + +class eListboxServiceContent: public virtual iListboxContent +{ + DECLARE_REF; +public: + eListboxServiceContent(); + void setRoot(const eServiceReference &ref); + +protected: + void cursorHome(); + void cursorEnd(); + int cursorMove(int count=1); + int cursorValid(); + int cursorSet(int n); + int cursorGet(); + + void cursorSave(); + void cursorRestore(); + int size(); + + // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though + void setSize(const eSize &size); + + /* the following functions always refer to the selected item */ + void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected); +private: + typedef std::list list; + + list m_list; + list::iterator m_cursor, m_saved_cursor; + + int m_cursor_number, m_saved_cursor_number; + int m_size; + + eSize m_itemsize; + ePtr m_service_center; + + eServiceReference m_root; +}; + +#endif diff --git a/lib/service/service.cpp b/lib/service/service.cpp index 40cbf8d..75d4987 100644 --- a/lib/service/service.cpp +++ b/lib/service/service.cpp @@ -90,7 +90,7 @@ RESULT eServiceCenter::list(const eServiceReference &ref, ePtr return i->second->list(ref, ptr); } -RESULT eServiceCenter::info(const eServiceReference &ref, ePtr &ptr) +RESULT eServiceCenter::info(const eServiceReference &ref, ePtr &ptr) { std::map >::iterator i = handler.find(ref.type); if (i == handler.end()) @@ -114,7 +114,7 @@ RESULT eServiceCenter::removeServiceFactory(int id) } /* default handlers */ -RESULT iServiceHandler::info(const eServiceReference &, ePtr &ptr) +RESULT iServiceHandler::info(const eServiceReference &, ePtr &ptr) { ptr = 0; return -1; diff --git a/lib/service/service.h b/lib/service/service.h index c3f0c48..9f4b456 100644 --- a/lib/service/service.h +++ b/lib/service/service.h @@ -23,7 +23,7 @@ public: RESULT play(const eServiceReference &, iPlayableServicePtr &ptr); RESULT record(const eServiceReference &, iRecordableServicePtr &ptr); RESULT list(const eServiceReference &, iListableServicePtr &ptr); - RESULT info(const eServiceReference &, ePtr &ptr); + RESULT info(const eServiceReference &, ePtr &ptr); // eServiceCenter static RESULT getInstance(eServiceCenterPtr &ptr) { ptr = instance; return 0; } diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 0c6d72b..d1ebeb3 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -6,6 +6,9 @@ #include #include +#include +#include + DEFINE_REF(eServiceFactoryDVB) eServiceFactoryDVB::eServiceFactoryDVB() @@ -26,6 +29,53 @@ eServiceFactoryDVB::~eServiceFactoryDVB() sc->removeServiceFactory(eServiceFactoryDVB::id); } +DEFINE_REF(eDVBServiceList); + +eDVBServiceList::eDVBServiceList(const eServiceReference &parent): m_parent(parent) +{ +} + +eDVBServiceList::~eDVBServiceList() +{ +} + +RESULT eDVBServiceList::getContent(std::list &list) +{ + ePtr db; + ePtr res; + + int err; + if ((err = eDVBResourceManager::getInstance(res)) != 0) + { + eDebug("no resource manager"); + return err; + } + if ((err = res->getChannelList(db)) != 0) + { + eDebug("no channel list"); + return err; + } + + ePtr query; + + ePtr q; + + if (m_parent.path.size()) + eDVBChannelQuery::compile(q, m_parent.path); + + if ((err = db->startQuery(query, q)) != 0) + { + eDebug("startQuery failed"); + return err; + } + + eServiceReferenceDVB ref; + + while (!query->getNextResult(ref)) + list.push_back(ref); + return 0; +} + RESULT eServiceFactoryDVB::play(const eServiceReference &ref, ePtr &ptr) { // check resources... @@ -39,10 +89,46 @@ RESULT eServiceFactoryDVB::record(const eServiceReference &, ePtr &ptr) +RESULT eServiceFactoryDVB::list(const eServiceReference &ref, ePtr &ptr) +{ + ptr = new eDVBServiceList(ref); + return 0; +} + +RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr &ptr) { ptr = 0; - return -1; + // TODO: handle the listing itself + // if (ref.... == -1) .. return "... bouquets ..."; + // could be also done in another serviceFactory (with seperate ID) to seperate actual services and lists + // TODO: cache + ePtr db; + ePtr res; + + int err; + if ((err = eDVBResourceManager::getInstance(res)) != 0) + { + eDebug("no resource manager"); + return err; + } + if ((err = res->getChannelList(db)) != 0) + { + eDebug("no channel list"); + return err; + } + + ePtr service; + + /* we are sure to have a ..DVB reference as the info() call was forwarded here according to it's ID. */ + if ((err = db->getService((eServiceReferenceDVB&)ref, service)) != 0) + { + eDebug("getService failed!"); + return err; + } + + /* eDVBService has the iStaticServiceInformation interface, so we pass it here. */ + ptr = service; + return 0; } eDVBServicePlay::eDVBServicePlay(const eServiceReference &ref): @@ -145,14 +231,14 @@ RESULT eDVBServicePlay::connectEvent(const Slot2 &ev return -1; } -RESULT eDVBServicePlay::getIPausableService(ePtr &ptr) +RESULT eDVBServicePlay::pause(ePtr &ptr) { // not yet possible, maybe later... ptr = 0; return -1; } -RESULT eDVBServicePlay::getIServiceInformation(ePtr &ptr) +RESULT eDVBServicePlay::info(ePtr &ptr) { ptr = this; return 0; diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h index c54eb5c..94659ed 100644 --- a/lib/service/servicedvb.h +++ b/lib/service/servicedvb.h @@ -18,6 +18,19 @@ public: RESULT play(const eServiceReference &, ePtr &ptr); RESULT record(const eServiceReference &, ePtr &ptr); RESULT list(const eServiceReference &, ePtr &ptr); + RESULT info(const eServiceReference &, ePtr &ptr); +}; + +class eDVBServiceList: public iListableService +{ +DECLARE_REF; +private: + eServiceReference m_parent; + friend class eServiceFactoryDVB; + eDVBServiceList(const eServiceReference &parent); +public: + virtual ~eDVBServiceList(); + RESULT getContent(std::list &list); }; class eDVBServicePlay: public iPlayableService, public Object, public iServiceInformation @@ -41,8 +54,8 @@ public: RESULT connectEvent(const Slot2 &event, ePtr &connection); RESULT start(); RESULT stop(); - RESULT getIPausableService(ePtr &ptr); - RESULT getIServiceInformation(ePtr &ptr); + RESULT pause(ePtr &ptr); + RESULT info(ePtr &ptr); // iServiceInformation RESULT getName(const eServiceReference &ref, std::string &name); diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp index de75cc6..5a94567 100644 --- a/lib/service/servicefs.cpp +++ b/lib/service/servicefs.cpp @@ -12,16 +12,16 @@ #include -class eServiceFSInformation: public iServiceInformation +class eStaticServiceFSInformation: public iStaticServiceInformation { DECLARE_REF; public: RESULT getName(const eServiceReference &ref, std::string &name); }; -DEFINE_REF(eServiceFSInformation); +DEFINE_REF(eStaticServiceFSInformation); -RESULT eServiceFSInformation::getName(const eServiceReference &ref, std::string &name) +RESULT eStaticServiceFSInformation::getName(const eServiceReference &ref, std::string &name) { name = ref.path; } @@ -36,7 +36,7 @@ eServiceFactoryFS::eServiceFactoryFS() if (sc) sc->addServiceFactory(eServiceFactoryFS::id, this); - m_service_information = new eServiceFSInformation(); + m_service_information = new eStaticServiceFSInformation(); } eServiceFactoryFS::~eServiceFactoryFS() @@ -69,7 +69,7 @@ RESULT eServiceFactoryFS::list(const eServiceReference &ref, ePtr &ptr) +RESULT eServiceFactoryFS::info(const eServiceReference &ref, ePtr &ptr) { ptr = m_service_information; return 0; diff --git a/lib/service/servicefs.h b/lib/service/servicefs.h index d8e7760..337ff62 100644 --- a/lib/service/servicefs.h +++ b/lib/service/servicefs.h @@ -15,9 +15,9 @@ public: RESULT play(const eServiceReference &, ePtr &ptr); RESULT record(const eServiceReference &, ePtr &ptr); RESULT list(const eServiceReference &, ePtr &ptr); - RESULT info(const eServiceReference &, ePtr &ptr); + RESULT info(const eServiceReference &, ePtr &ptr); private: - ePtr m_service_information; + ePtr m_service_information; }; class eServiceFS: public iListableService diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp index 1f883f9..a5f1b77 100644 --- a/lib/service/servicemp3.cpp +++ b/lib/service/servicemp3.cpp @@ -17,7 +17,7 @@ eServiceFactoryMP3::eServiceFactoryMP3() if (sc) sc->addServiceFactory(eServiceFactoryMP3::id, this); - m_service_info = new eServiceMP3Info(); + m_service_info = new eStaticServiceMP3Info(); } eServiceFactoryMP3::~eServiceFactoryMP3() @@ -51,29 +51,29 @@ RESULT eServiceFactoryMP3::list(const eServiceReference &, ePtr &ptr) +RESULT eServiceFactoryMP3::info(const eServiceReference &ref, ePtr &ptr) { ptr = m_service_info; return 0; } -// eServiceMP3Info +// eStaticServiceMP3Info -// eServiceMP3Info is seperated from eServiceMP3 to give information +// eStaticServiceMP3Info is seperated from eServiceMP3 to give information // about unopened files. -// probably eServiceMP3 should use this class as well, and eServiceMP3Info +// probably eServiceMP3 should use this class as well, and eStaticServiceMP3Info // should have a database backend where ID3-files etc. are cached. // this would allow listing the mp3 database based on certain filters. -DEFINE_REF(eServiceMP3Info) +DEFINE_REF(eStaticServiceMP3Info) -eServiceMP3Info::eServiceMP3Info() +eStaticServiceMP3Info::eStaticServiceMP3Info() { } -RESULT eServiceMP3Info::getName(const eServiceReference &ref, std::string &name) +RESULT eStaticServiceMP3Info::getName(const eServiceReference &ref, std::string &name) { name = "MP3 file: " + ref.path; return 0; @@ -134,13 +134,13 @@ RESULT eServiceMP3::stop() return 0; } -RESULT eServiceMP3::getIPausableService(ePtr &ptr) { ptr=this; return 0; } +RESULT eServiceMP3::pause(ePtr &ptr) { ptr=this; return 0; } // iPausableService RESULT eServiceMP3::pause() { printf("mp3 pauses!\n"); return 0; } RESULT eServiceMP3::unpause() { printf("mp3 unpauses!\n"); return 0; } -RESULT eServiceMP3::getIServiceInformation(ePtr&i) { i = this; return 0; } +RESULT eServiceMP3::info(ePtr&i) { i = this; return 0; } RESULT eServiceMP3::getName(const eServiceReference &ref, std::string &name) { diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h index 7ef8402..40287ae 100644 --- a/lib/service/servicemp3.h +++ b/lib/service/servicemp3.h @@ -3,7 +3,7 @@ #include -class eServiceMP3Info ; +class eStaticServiceMP3Info; class eServiceFactoryMP3: public iServiceHandler { @@ -17,16 +17,16 @@ public: RESULT play(const eServiceReference &, ePtr &ptr); RESULT record(const eServiceReference &, ePtr &ptr); RESULT list(const eServiceReference &, ePtr &ptr); - RESULT info(const eServiceReference &, ePtr &ptr); + RESULT info(const eServiceReference &, ePtr &ptr); private: - ePtr m_service_info; + ePtr m_service_info; }; -class eServiceMP3Info: public iServiceInformation +class eStaticServiceMP3Info: public iServiceInformation { DECLARE_REF; friend class eServiceFactoryMP3; - eServiceMP3Info(); + eStaticServiceMP3Info(); public: RESULT getName(const eServiceReference &ref, std::string &name); }; @@ -53,13 +53,13 @@ public: RESULT connectEvent(const Slot2 &event, ePtr &connection); RESULT start(); RESULT stop(); - RESULT getIPausableService(ePtr &ptr); + RESULT pause(ePtr &ptr); // iPausableService RESULT pause(); RESULT unpause(); - RESULT getIServiceInformation(ePtr&); + RESULT info(ePtr&); // iServiceInformation RESULT getName(const eServiceReference &ref, std::string &name); diff --git a/mytest.py b/mytest.py index e257f11..2f6cecf 100644 --- a/mytest.py +++ b/mytest.py @@ -32,7 +32,7 @@ def dump(dir, p = ""): components = {} # do global -screens["global"](components) +doGlobal(components) # display @@ -84,15 +84,15 @@ class Session: if self.desktop != None: self.currentWindow = wnd = eWindow(self.desktop) - wnd.setTitle("Screen from python!") - wnd.move(ePoint(300, 100)) - wnd.resize(eSize(300, 300)) +# wnd.setTitle("Screen from python!") +# wnd.move(ePoint(300, 100)) +# wnd.resize(eSize(300, 300)) gui = GUIOutputDevice() gui.parent = wnd gui.create(self.currentDialog) - applyGUIskin(self.currentDialog, None, screen.__class__.__name__) + applyGUIskin(self.currentDialog, wnd, None, screen.__class__.__name__) wnd.show() else: @@ -102,9 +102,15 @@ class Session: # print "code " + str(code) if code == 32: self.currentDialog.data["okbutton"]["instance"].push() + + if code == 33: + self.currentDialog.data["channelSwitcher"]["instance"].push() if code >= 0x30 and code <= 0x39: - self.currentDialog.data["menu"]["instance"].moveSelection(code - 0x31) + try: + self.currentDialog.data["menu"]["instance"].moveSelection(code - 0x31) + except: + self.currentDialog.data["list"]["instance"].moveSelection(code - 0x31) def close(self): self.delayTimer.start(0, 1) @@ -113,21 +119,8 @@ def runScreenTest(): session = Session() session.desktop = getDesktop() -# session.open(screens["clockDisplay"](components["clock"])) - session.open(screens["testDialog"]()) - - # simple reason for this helper function: we want to call the currently - # active "okbutton", even when we changed the dialog - # - # more complicated reason: we don't want to hold a reference. -# def blub(): -# session.currentDialog.data["okbutton"]["instance"].push() -# session.currentDialog["okbutton"].setText("hello!") -# -# tmr = eTimer() -# CONNECT(tmr.timeout, blub) -# tmr.start(4000, 0) -# + session.open(infoBar()) + CONNECT(keyPressedSignal(), session.keyEvent) runMainloop() diff --git a/screens.py b/screens.py index 6aa88e8..9148f25 100644 --- a/screens.py +++ b/screens.py @@ -15,15 +15,8 @@ class Screen(dict, HTMLSkin, GUISkin): def close(self, retval=None): self.session.close() -# a test dialog -class testDialog(Screen): - def testDialogClick(self): - selection = self["menu"].getCurrent() - selection[1]() +class mainMenu(Screen): - def goMain(self): - self.session.open(screens["mainMenu"]()) - def goEmu(self): self["title"].setText("EMUs ARE ILLEGAL AND NOT SUPPORTED!") @@ -34,35 +27,61 @@ class testDialog(Screen): self["title"].setText("HDTV GREEN FLASHES: ENABLED") def goClock(self): - self.session.open(screens["clockDisplay"](Clock())) + self.session.open(clockDisplay(Clock())) + + def okbuttonClick(self): + selection = self["menu"].getCurrent() + selection[1]() def __init__(self): GUISkin.__init__(self) b = Button("ok") - b.onClick = [ self.testDialogClick ] + + b.onClick = [ self.okbuttonClick ] self["okbutton"] = b - self["title"] = Header("Test Dialog - press ok to leave!") -# self["menu"] = MenuList( -# [ -# ("MAIN MENU", self.goMain), -# ("EMU SETUP", self.goEmu), -# ("TIMESHIFT SETUP", self.goTimeshift), -# ("HDTV PIP CONFIG", self.goHDTV), -# ("wie spaet ists?!", self.goClock) -# ]) - self["menu"] = ServiceList() - - self["menu"].setRoot(eServiceReference("2:0:1:0:0:0:0:0:0:0:/")) + self["title"] = Header("Main Menu! - press ok to leave!") + self["menu"] = MenuList( + [ + ("EMU SETUP", self.goEmu), + ("TIMESHIFT SETUP", self.goTimeshift), + ("HDTV PIP CONFIG", self.goHDTV), + ("wie spaet ists?!", self.goClock) + ]) -class mainMenu(Screen): +#class mainMenu(Screen): +# def __init__(self): +# GUISkin.__init__(self) +# +# self["title"] = Header("this is the\nMAIN MENU !!!"); +# self["okbutton"] = Button("ok") +# self["okbutton"].onClick = [ self.close ] + +class channelSelection(Screen): def __init__(self): GUISkin.__init__(self) - self["title"] = Header("this is the\nMAIN MENU !!!"); - self["okbutton"] = Button("ok") - self["okbutton"].onClick = [ self.close ] + self["list"] = ServiceList() + self["list"].setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:PREMIERE")) + + self["okbutton"] = Button("ok", [self.channelSelected, self.close]) + + def channelSelected(self): +# print "channel selected!" + pass +class infoBar(Screen): + def __init__(self): + GUISkin.__init__(self) + + self["channelSwitcher"] = Button("switch Channel", [self.switchChannel]) + self["okbutton"] = Button("mainMenu", [self.mainMenu]) + def mainMenu(self): + self.session.open(mainMenu()) + + def switchChannel(self): + self.session.open(channelSelection()) + # a clock display dialog class clockDisplay(Screen): def okbutton(self): @@ -76,10 +95,3 @@ class clockDisplay(Screen): self["okbutton"] = b self["title"] = Header("clock dialog: here you see the current uhrzeit!") -# defined screens (evtl. kann man sich das sparen, ich seh den sinn gerade nicht mehr) -screens = { - "global": doGlobal, - "testDialog": testDialog, - "clockDisplay": clockDisplay , - "mainMenu": mainMenu } - diff --git a/skin.py b/skin.py index 9fbdfeb..687d808 100644 --- a/skin.py +++ b/skin.py @@ -13,7 +13,7 @@ def dump(x, i=0): dom = xml.dom.minidom.parseString( """ - + @@ -23,9 +23,12 @@ dom = xml.dom.minidom.parseString( - - + + + + + """) @@ -45,15 +48,23 @@ def applyAttributes(guiObject, node): for p in range(node.attributes.length): a = node.attributes.item(p) + # convert to string (was: unicode) + attrib = str(a.name) + # TODO: proper UTF8 translation?! (for value) + # TODO: localization? as in e1? + value = str(a.value) + # and set attributes - if a.name == 'position': - guiObject.move(parsePosition(a.value)) - elif a.name == 'size': - guiObject.resize(parseSize(a.value)) - elif a.name != 'name': - print "unsupported attribute " + a.name + if attrib == 'position': + guiObject.move(parsePosition(value)) + elif attrib == 'size': + guiObject.resize(parseSize(value)) + elif attrib == 'title': + guiObject.setTitle(value) + elif attrib != 'name': + print "unsupported attribute " + attrib + "=" + value -def applyGUIskin(screen, skin, name): +def applyGUIskin(screen, parent, skin, name): myscreen = None @@ -67,6 +78,8 @@ def applyGUIskin(screen, skin, name): assert myscreen != None, "no skin for screen '" + name + "' found!" + applyAttributes(parent, myscreen) + # now walk all widgets for widget in myscreen.getElementsByTagName("widget"): wname = widget.getAttribute('name') -- 2.7.4