Merge commit 'dm/experimental' into vuplus_experimental
authorikseong <ikseong@vuplus>
Wed, 28 Jul 2010 06:24:51 +0000 (15:24 +0900)
committerikseong <ikseong@vuplus>
Wed, 28 Jul 2010 06:24:51 +0000 (15:24 +0900)
108 files changed:
RecordTimer.py
SleepTimer.py [changed mode: 0644->0755]
acinclude.m4 [changed mode: 0644->0755]
configure.ac
data/defaults/Dream/settings.8000 [changed mode: 0644->0755]
data/keymap.xml
data/menu.xml
data/rcpositions.xml [changed mode: 0644->0755]
data/setup.xml
data/skin.xml
data/skin_default/spinner/wait1.png
data/skin_default/spinner/wait2.png
data/skin_default/spinner/wait3.png
data/skin_default/spinner/wait4.png
data/startwizard.xml [changed mode: 0644->0755]
data/tutorialwizard.xml [changed mode: 0644->0755]
lib/driver/Makefile.am [changed mode: 0644->0755]
lib/driver/memtest.cpp [new file with mode: 0755]
lib/driver/memtest.h [new file with mode: 0755]
lib/driver/rcinput.cpp
lib/driver/sc_test.cpp [new file with mode: 0755]
lib/driver/sc_test.h [new file with mode: 0755]
lib/dvb/decoder.cpp
lib/dvb/dvb.cpp [changed mode: 0644->0755]
lib/dvb/dvbtime.cpp
lib/dvb/frontend.cpp [changed mode: 0644->0755]
lib/gdi/accel.cpp
lib/gdi/bcm.cpp
lib/gdi/font.cpp
lib/gdi/glcddc.cpp [changed mode: 0644->0755]
lib/gdi/lcd.cpp [changed mode: 0644->0755]
lib/python/Components/AVSwitch.py [changed mode: 0644->0755]
lib/python/Components/Converter/ServiceInfo.py
lib/python/Components/Harddisk.py
lib/python/Components/TunerInfo.py [changed mode: 0644->0755]
lib/python/Plugins/Extensions/CutListEditor/meta/Makefile.am
lib/python/Plugins/Extensions/DVDBurn/DVDProject.py [changed mode: 0644->0755]
lib/python/Plugins/Extensions/DVDBurn/Process.py [changed mode: 0644->0755]
lib/python/Plugins/Extensions/DVDBurn/TitleList.py
lib/python/Plugins/Extensions/DVDBurn/meta/Makefile.am
lib/python/Plugins/Extensions/DVDPlayer/meta/Makefile.am
lib/python/Plugins/Extensions/DVDPlayer/meta/plugin_dvdplayer.xml
lib/python/Plugins/Extensions/GraphMultiEPG/meta/Makefile.am
lib/python/Plugins/Extensions/MediaPlayer/meta/Makefile.am
lib/python/Plugins/Extensions/MediaPlayer/plugin.py
lib/python/Plugins/Extensions/MediaScanner/meta/Makefile.am
lib/python/Plugins/Extensions/PicturePlayer/meta/Makefile.am
lib/python/Plugins/Extensions/SocketMMI/meta/Makefile.am
lib/python/Plugins/Extensions/TuxboxPlugins/meta/Makefile.am
lib/python/Plugins/SystemPlugins/CleanupWizard/meta/Makefile.am
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/meta/Makefile.am
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/meta/plugin_commoninterfaceassignment.xml
lib/python/Plugins/SystemPlugins/CommonInterfaceAssignment/plugin.py
lib/python/Plugins/SystemPlugins/CrashlogAutoSubmit/meta/Makefile.am
lib/python/Plugins/SystemPlugins/CrashlogAutoSubmit/plugin.py
lib/python/Plugins/SystemPlugins/DefaultServicesScanner/meta/Makefile.am
lib/python/Plugins/SystemPlugins/DiseqcTester/meta/Makefile.am
lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/__init__.py [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/FactoryTest/testdb [new file with mode: 0755]
lib/python/Plugins/SystemPlugins/Fancontrol/Makefile.am [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/Fancontrol/__init__.py [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/Fancontrol/meta/Makefile.am [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/Fancontrol/meta/plugin_fancontrol.xml [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/Fancontrol/plugin.py [new file with mode: 0644]
lib/python/Plugins/SystemPlugins/FrontprocessorUpgrade/meta/Makefile.am
lib/python/Plugins/SystemPlugins/Hotplug/meta/Makefile.am
lib/python/Plugins/SystemPlugins/Makefile.am
lib/python/Plugins/SystemPlugins/NFIFlash/downloader.py [changed mode: 0644->0755]
lib/python/Plugins/SystemPlugins/NFIFlash/meta/Makefile.am
lib/python/Plugins/SystemPlugins/NFIFlash/meta/plugin_nfiflash.xml
lib/python/Plugins/SystemPlugins/NetworkWizard/meta/Makefile.am
lib/python/Plugins/SystemPlugins/OldSoftwareUpdate/plugin.py [changed mode: 0644->0755]
lib/python/Plugins/SystemPlugins/PositionerSetup/meta/Makefile.am
lib/python/Plugins/SystemPlugins/SatelliteEquipmentControl/meta/Makefile.am
lib/python/Plugins/SystemPlugins/Satfinder/meta/Makefile.am
lib/python/Plugins/SystemPlugins/SkinSelector/meta/Makefile.am
lib/python/Plugins/SystemPlugins/SkinSelector/meta/plugin_skinselector.xml
lib/python/Plugins/SystemPlugins/SoftwareManager/SoftwareTools.py
lib/python/Plugins/SystemPlugins/SoftwareManager/imagewizard.xml
lib/python/Plugins/SystemPlugins/SoftwareManager/meta/Makefile.am
lib/python/Plugins/SystemPlugins/SoftwareManager/meta/plugin_softwaremanager.xml
lib/python/Plugins/SystemPlugins/SoftwareManager/plugin.py
lib/python/Plugins/SystemPlugins/VideoEnhancement/meta/Makefile.am
lib/python/Plugins/SystemPlugins/VideoEnhancement/meta/plugin_videoenhancement.xml
lib/python/Plugins/SystemPlugins/VideoTune/meta/Makefile.am
lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile.am
lib/python/Plugins/SystemPlugins/Videomode/plugin.py
lib/python/Plugins/SystemPlugins/WirelessLan/meta/Makefile.am
lib/python/Screens/AudioSelection.py
lib/python/Screens/ChannelSelection.py [changed mode: 0644->0755]
lib/python/Screens/DefaultWizard.py [changed mode: 0644->0755]
lib/python/Screens/InfoBar.py [changed mode: 0644->0755]
lib/python/Screens/InfoBarGenerics.py [changed mode: 0644->0755]
lib/python/Screens/LanguageSelection.py
lib/python/Screens/Makefile.am
lib/python/Screens/NetworkSetup.py
lib/python/Screens/PluginBrowser.py
lib/python/Screens/ServiceScan.py
lib/python/Screens/SleepTimerEdit.py [changed mode: 0644->0755]
lib/python/Screens/Subtitles.py [new file with mode: 0755]
lib/python/Screens/TaskView.py [changed mode: 0644->0755]
lib/python/Screens/Wizard.py
lib/python/Tools/KeyBindings.py [changed mode: 0644->0755]
lib/python/enigma_python.i [changed mode: 0644->0755]
lib/service/servicedvb.cpp
main/bsod.cpp

index def7568..188aae5 100755 (executable)
@@ -297,13 +297,13 @@ class RecordTimerEntry(timer.TimerEntry, object):
                                self.record_service = None
                        if self.afterEvent == AFTEREVENT.STANDBY:
                                if not Screens.Standby.inStandby: # not already in standby
-                                       Notifications.AddNotificationWithCallback(self.sendStandbyNotification, MessageBox, _("A finished record timer wants to set your\nDreambox to standby. Do that now?"), timeout = 20)
+                                       Notifications.AddNotificationWithCallback(self.sendStandbyNotification, MessageBox, _("A finished record timer wants to set your\nSTB to standby. Do that now?"), timeout = 20)
                        elif self.afterEvent == AFTEREVENT.DEEPSTANDBY:
                                if not Screens.Standby.inTryQuitMainloop: # not a shutdown messagebox is open
                                        if Screens.Standby.inStandby: # in standby
                                                RecordTimerEntry.TryQuitMainloop() # start shutdown handling without screen
                                        else:
-                                               Notifications.AddNotificationWithCallback(self.sendTryQuitMainloopNotification, MessageBox, _("A finished record timer wants to shut down\nyour Dreambox. Shutdown now?"), timeout = 20)
+                                               Notifications.AddNotificationWithCallback(self.sendTryQuitMainloopNotification, MessageBox, _("A finished record timer wants to shut down\nyour STB. Shutdown now?"), timeout = 20)
                        return True
 
        def setAutoincreaseEnd(self, entry = None):
old mode 100644 (file)
new mode 100755 (executable)
index 221e8f0..a6f39ef
@@ -26,12 +26,12 @@ class SleepTimerEntry(timer.TimerEntry):
                if self.state == self.StateRunning:
                        if config.SleepTimer.action.value == "shutdown":
                                if config.SleepTimer.ask.value and not Screens.Standby.inTryQuitMainloop:
-                                       Notifications.AddNotificationWithCallback(self.shutdown, MessageBox, _("A sleep timer wants to shut down\nyour Dreambox. Shutdown now?"), timeout = 20)
+                                       Notifications.AddNotificationWithCallback(self.shutdown, MessageBox, _("A sleep timer wants to shut down\nyour STB. Shutdown now?"), timeout = 20)
                                else:
                                        self.shutdown(True)
                        elif config.SleepTimer.action.value == "standby":
                                if config.SleepTimer.ask.value and not Screens.Standby.inStandby:
-                                       Notifications.AddNotificationWithCallback(self.standby, MessageBox, _("A sleep timer wants to set your\nDreambox to standby. Do that now?"), timeout = 20)
+                                       Notifications.AddNotificationWithCallback(self.standby, MessageBox, _("A sleep timer wants to set your\nSTB to standby. Do that now?"), timeout = 20)
                                else:
                                        self.standby(True)
 
old mode 100644 (file)
new mode 100755 (executable)
index 6f1cb0a..ab3835e
@@ -157,6 +157,9 @@ version DVB_API_VERSION
 ])
 fi
 
+ #csh
+AC_DEFINE(BUILD_VUPLUS,1,[Define to 1 for 750])
+
 if test "$DVB_API_VERSION"; then
        AC_DEFINE(HAVE_DVB,1,[Define to 1 if you have the dvb includes])
        AC_DEFINE_UNQUOTED(HAVE_DVB_API_VERSION,$DVB_API_VERSION,[Define to the version of the dvb api])
index 05c3a8e..0953e4c 100755 (executable)
@@ -181,6 +181,9 @@ lib/python/Plugins/SystemPlugins/Videomode/Makefile
 lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile
 lib/python/Plugins/SystemPlugins/WirelessLan/Makefile
 lib/python/Plugins/SystemPlugins/WirelessLan/meta/Makefile
+lib/python/Plugins/SystemPlugins/FactoryTest/Makefile
+lib/python/Plugins/SystemPlugins/Fancontrol/Makefile
+lib/python/Plugins/SystemPlugins/Fancontrol/meta/Makefile
 lib/python/Tools/Makefile
 lib/service/Makefile
 lib/components/Makefile
old mode 100644 (file)
new mode 100755 (executable)
index 1fe4a4c..ae2963b
@@ -1 +1 @@
-config.misc.rcused=0
\ No newline at end of file
+config.misc.rcused=1
\ No newline at end of file
index 9461d50..7a383c7 100755 (executable)
@@ -90,6 +90,8 @@
                        <key id="KEY_RECORD" mapto="instantRecord" flags="m" />
                </device>
                <device name="dreambox remote control (native)">
+<!--   ikseong insert KEY_RECORD action        -->
+                       <key id="KEY_RECORD" mapto="instantRecord" flags="m" />
                        <key id="KEY_RED" mapto="instantRecord" flags="b" />
                </device>
        </map>
                <key id="KEY_ENTER" mapto="ok" flags="m" />
                <key id="KEY_EXIT" mapto="back" flags="m" />
                <key id="KEY_ESC" mapto="back" flags="m" />
+<!--   ikseong for factory test        -->
+               <key id="KEY_SUBTITLE" mapto="test" flags="m" />
+               <key id="KEY_RADIO" mapto="testexit" flags="m" />
+               <key id="KEY_PAUSE" mapto="agingend" flags="m" />
+               <key id="KEY_STOP" mapto="agingfinish" flags="m" />             
+               <key id="KEY_GREEN" mapto="agingstart" flags="m" />
        </map>
        
        <map context="InfobarMenuActions">
                <key id="KEY_VIDEO" mapto="showMovies" flags="m" />
                <key id="KEY_RADIO" mapto="showRadio" flags="m" />
                <key id="KEY_TV" mapto="showTv" flags="m" />
+<!--   ikseong insert KEY_SUBTITLE action for subtitle hotkey  -->
+               <key id="KEY_SUBTITLE" mapto="showSubtitle" flags="m" />
        </map>
 
        <map context="InfobarAudioSelectionActions">
                        <key id="KEY_BLUE" mapto="seekFwd" flags="b" />
                        <key id="KEY_RED" mapto="seekBackManual" flags="l" />
                        <key id="KEY_BLUE" mapto="seekFwdManual" flags="l" />
+<!--   ikseong insert KEY_PAUSE, KEY_PLAY, KEY_REWIND, KEY_FASTFORWARD -->
+                       <key id="KEY_PAUSE" mapto="pauseService" flags="m" />
+                       <key id="KEY_PLAY" mapto="playpauseService" flags="m" />
+                       <key id="KEY_REWIND" mapto="seekBack" flags="b" />
+                       <key id="KEY_FASTFORWARD" mapto="seekFwd" flags="b" />
+                       <key id="KEY_REWIND" mapto="seekBackManual" flags="l" />
+                       <key id="KEY_FASTFORWARD" mapto="seekFwdManual" flags="l" />
                </device>
                <device name="dreambox advanced remote control (native)">
                        <key id="KEY_PLAY" mapto="playpauseService" flags="m" />
                        <key id="KEY_BLUE" mapto="seekFwd" flags="b" />
                        <key id="KEY_RED" mapto="seekBackManual" flags="l" />
                        <key id="KEY_BLUE" mapto="seekFwdManual" flags="l" />
+<!--   ikseong insert KEY_REWIND, KEY_FASTFORWARD      -->
+                       <key id="KEY_REWIND" mapto="seekBack" flags="b" />
+                       <key id="KEY_FASTFORWARD" mapto="seekFwd" flags="b" />
+                       <key id="KEY_REWIND" mapto="seekBackManual" flags="l" />
+                       <key id="KEY_FASTFORWARD" mapto="seekFwdManual" flags="l" />
                </device>
                <device name="dreambox advanced remote control (native)">
                        <key id="KEY_PREVIOUSSONG" mapto="seekBack" flags="b" />
                <device name="dreambox remote control (native)">
                        <key id="KEY_YELLOW" mapto="timeshiftStart" flags="b" />
                        <key id="KEY_TV" mapto="timeshiftStop" flags="m" />
+<!--   ikseong insert KEY_PAUSE, KEY_PLAY, KEY_STOP    -->
+                       <key id="KEY_PLAY" mapto="timeshiftStart" flags="m" />
+                       <key id="KEY_PAUSE" mapto="timeshiftStart" flags="m" />
+                       <key id="KEY_STOP" mapto="timeshiftStop" flags="m" />
                </device>
                <device name="dreambox advanced remote control (native)">
                        <key id="KEY_PLAY" mapto="timeshiftStart" flags="m" />
                <device name="dreambox remote control (native)">
                        <key id="KEY_RED" mapto="timeshiftActivateEnd" flags="b" />
                        <key id="KEY_YELLOW" mapto="timeshiftActivateEndAndPause" flags="b" />
+<!--   ikseong insert KEY_PAUSE, KEY_PLAY, KEY_REWIND  -->
+                       <key id="KEY_PLAY" mapto="timeshiftActivateEndAndPause" flags="m" />
+                       <key id="KEY_REWIND" mapto="timeshiftActivateEnd" flags="m" />
+                       <key id="KEY_PAUSE" mapto="timeshiftActivateEndAndPause" flags="m" />
                </device>
                <device name="dreambox advanced remote control (native)">
                        <key id="KEY_PREVIOUSSONG" mapto="timeshiftActivateEnd" flags="m" />
        <map context="MoviePlayerActions">
                <device name="dreambox remote control (native)">
                        <key id="KEY_TV" mapto="leavePlayer" flags="m" />
+                       <key id="KEY_STOP" mapto="leavePlayer" flags="m" />
+<!--   ikseong insert KEY_SUBTITLE action for subtitle hotkey  -->
+                       <key id="KEY_SUBTITLE" mapto="showSubtitle" flags="m" />                
                </device>
                <device name="dreambox advanced remote control (native)">
                        <key id="KEY_TV" mapto="leavePlayer" flags="m" />
                        <key id="KEY_RADIO" mapto="shift_record" flags="l" />
                        <key id="KEY_PREVIOUS" mapto="previous" flags="m" />
                        <key id="KEY_NEXT" mapto="next" flags="m" />
+<!--   ikseong insert KEY_PAUSE, KEY_PLAY, KEY_STOP, KEY_RECORD, KEY_REWIND, KEY_FASTFORWARD   -->
+                       <key id="KEY_PAUSE" mapto="pause" flags="m" />
+                       <key id="KEY_PLAY" mapto="play" flags="m" />
+                       <key id="KEY_STOP" mapto="stop" flags="b" />
+                       <key id="KEY_STOP" mapto="shift_stop" flags="l" />
+                       <key id="KEY_RECORD" mapto="shift_record" flags="l" />
                </device>
                <device name="dreambox advanced remote control (native)">
                        <key id="KEY_PLAYPAUSE" mapto="pause" flags="m" />
index 0d87471..57b8826 100755 (executable)
@@ -82,6 +82,7 @@ def msgClosed(ret):
                from os import system, _exit
                system("rm -R /etc/enigma2")
                system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
+               system("/usr/bin/showiframe /boot/backdrop.mvi")
                _exit(0)
 self.session.openWithCallback(msgClosed, FactoryReset)
 </code>
old mode 100644 (file)
new mode 100755 (executable)
index 373ed73..1c95050
@@ -1,88 +1,92 @@
+<!--   ikseong modify position as 750S RCU     -->
 <rcs>
        <rc id="0">
                <button name="SHIFT" pos="58,21" />
-               <button name="POWER" pos="90,21" />
+               <button name="POWER" pos="107,29" />
                <button name="DREAMSELECT" pos="54,53" />
                <button name="TVSELECT" pos="98,53" />
-               <button name="1" pos="37,83" />
-               <button name="2" pos="76,83" />
-               <button name="3" pos="115,83" />
-               <button name="4" pos="37,105" />
-               <button name="5" pos="76,105" />
-               <button name="6" pos="115,105" />
-               <button name="7" pos="37,126" />
-               <button name="8" pos="76,126" />
-               <button name="9" pos="115,126" />
-               <button name="ARROWLEFT" pos="37,148" />
-               <button name="0" pos="76,148" />
-               <button name="ARROWRIGHT" pos="115,148" />
-               <button name="VOL+" pos="30,184" />
-               <button name="VOL-" pos="39,208" />
-               <button name="MUTE" pos="76,179" />
-               <button name="EXIT" pos="76,201" />
-               <button name="BOUQUET+" pos="122,184" />
-               <button name="BOUQUET-" pos="113,208" />
-               <button name="INFO" pos="28,238" />
-               <button name="MENU" pos="124,238" />
-               <button name="OK" pos="77,266" />
-               <button name="UP" pos="77,241" />
-               <button name="DOWN" pos="77,291" />
-               <button name="LEFT" pos="48,266" />
-               <button name="RIGHT" pos="106,266" />
-               <button name="HELP" pos="32,298" />
-               <button name="PVR" pos="121,298" />
-               <button name="RED" pos="34,333" />
-               <button name="GREEN" pos="61,335" />
-               <button name="YELLOW" pos="90,335" />
-               <button name="BLUE" pos="118,333" />
-               <button name="REWIND" pos="37,365" />
-               <button name="PLAYPAUSE" pos="64,366" />
-               <button name="STOP" pos="90,366" />
-               <button name="FORWARD" pos="117,365" />
-               <button name="TV" pos="40,397" />
-               <button name="RADIO" pos="65,399" />
-               <button name="TEXT" pos="89,399" />
-               <button name="RECORD" pos="113,397" />
+               <button name="SUBTITLE" pos="60,70" />
+               <button name="1" pos="40,80" />
+               <button name="2" pos="71,80" />
+               <button name="3" pos="102,80" />
+               <button name="4" pos="40,108" />
+               <button name="5" pos="71,108" />
+               <button name="6" pos="102,108" />
+               <button name="7" pos="40,136" />
+               <button name="8" pos="71,136" />
+               <button name="9" pos="102,136" />
+               <button name="ARROWLEFT" pos="43,180" />
+               <button name="0" pos="71,164" />
+               <button name="ARROWRIGHT" pos="108,180" />
+               <button name="VOL+" pos="41,310" />
+               <button name="VOL-" pos="42,341" />
+               <button name="MUTE" pos="35,29" />
+               <button name="EXIT" pos="72,310" />
+               <button name="BOUQUET+" pos="105,315" />
+               <button name="BOUQUET-" pos="105,330" />
+               <button name="INFO" pos="75,340" />
+               <button name="MENU" pos="41,367" />
+               <button name="OK" pos="75,252" />
+               <button name="UP" pos="75,235" />
+               <button name="DOWN" pos="75,288" />
+               <button name="LEFT" pos="43,255" />
+               <button name="RIGHT" pos="106,255" />
+               <button name="HELP" pos="105,363" />
+               <button name="PVR" pos="65,370" />
+               <button name="RED" pos="40,202" />
+               <button name="GREEN" pos="65,202" />
+               <button name="YELLOW" pos="89,202" />
+               <button name="BLUE" pos="112,202" />
+               <button name="REWIND" pos="36,385" />
+               <button name="PLAYPAUSE" pos="63,400" />
+               <button name="STOP" pos="82,406" />
+               <button name="FORWARD" pos="105,385" />
+               <button name="TV" pos="41,412" />
+               <button name="RADIO" pos="110,412" />
+               <button name="TEXT" pos="40,70" />
+               <button name="RECORD" pos="64,412" />
        </rc>
        <rc id="1">
                <button name="SHIFT" pos="59,23" />
-               <button name="POWER" pos="93,23" />
+               <button name="POWER" pos="107,29" />
                <button name="DREAMSELECT" pos="51,55" />
                <button name="TVSELECT" pos="97,55" />
-               <button name="1" pos="38,81" />
-               <button name="2" pos="77,81" />
-               <button name="3" pos="113,81" />
-               <button name="4" pos="38,102" />
-               <button name="5" pos="77,102" />
-               <button name="6" pos="113,102" />
-               <button name="7" pos="38,122" />
-               <button name="8" pos="77,122" />
-               <button name="9" pos="113,122" />
-               <button name="ARROWLEFT" pos="38,143" />
-               <button name="0" pos="77,143" />
-               <button name="ARROWRIGHT" pos="113,143" />
-               <button name="VOL+" pos="31,181" />
-               <button name="VOL-" pos="42,206" />
-               <button name="MUTE" pos="76,172" />
-               <button name="EXIT" pos="76,194" />
-               <button name="BOUQUET+" pos="119,181" />
-               <button name="BOUQUET-" pos="111,206" />
-               <button name="INFO" pos="27,233" />
-               <button name="MENU" pos="125,233" />
-               <button name="OK" pos="77,262" />
-               <button name="UP" pos="76,235" />
-               <button name="DOWN" pos="76,289" />
-               <button name="LEFT" pos="45,262" />
-               <button name="RIGHT" pos="108,262" />
-               <button name="AUDIO" pos="31,295" />
-               <button name="VIDEO" pos="121,295" />
-               <button name="RED" pos="34,329" />
-               <button name="GREEN" pos="62,330" />
-               <button name="YELLOW" pos="89,330" />
-               <button name="BLUE" pos="118,329" />
-               <button name="TV" pos="37,362" />
-               <button name="RADIO" pos="62,363" />
-               <button name="TEXT" pos="89,363" />
-               <button name="HELP" pos="114,362" />
+               <button name="SUBTITLE" pos="64,73" />
+               <button name="1" pos="40,100" />
+               <button name="2" pos="76,100" />
+               <button name="3" pos="102,100" />
+               <button name="4" pos="40,108" />
+               <button name="5" pos="76,108" />
+               <button name="6" pos="102,108" />
+               <button name="7" pos="40,152" />
+               <button name="8" pos="76,152" />
+               <button name="9" pos="102,152" />
+               <button name="ARROWLEFT" pos="43,180" />
+               <button name="0" pos="76,180" />
+               <button name="ARROWRIGHT" pos="108,180" />
+               <button name="VOL+" pos="41,316" />
+               <button name="VOL-" pos="42,350" />
+               <button name="MUTE" pos="35,29" />
+               <button name="EXIT" pos="75,320" />
+               <button name="BOUQUET+" pos="106,316" />
+               <button name="BOUQUET-" pos="105,350" />
+               <button name="INFO" pos="76,342" />
+               <button name="MENU" pos="42,370" />
+               <button name="OK" pos="76,255" />
+               <button name="UP" pos="76,240" />
+               <button name="DOWN" pos="76,288" />
+               <button name="LEFT" pos="43,255" />
+               <button name="RIGHT" pos="106,255" />
+               <button name="RECORD" pos="65,414" />
+               <button name="AUDIO" pos="87,370" />
+               <button name="VIDEO" pos="64,370" />
+               <button name="RED" pos="40,204" />
+               <button name="GREEN" pos="64,204" />
+               <button name="YELLOW" pos="88,204" />
+               <button name="BLUE" pos="112,204" />
+               <button name="TV" pos="42,414" />
+               <button name="RADIO" pos="110,414" />
+               <button name="TEXT" pos="40,72" />
+               <button name="HELP" pos="108,370" />
        </rc>
-</rcs>
\ No newline at end of file
+</rcs>
index f5dea73..34e41f4 100755 (executable)
                        <item level="0" text="Aspect Ratio">config.av.aspectratio</item>
                        <item level="0" text="TV System">config.av.tvsystem</item>
                        <item level="1" text="WSS on 4:3">config.av.wss</item>
-                       <item level="1" text="AC3 default">config.av.defaultac3</item>
-                       <item level="1" text="General AC3 delay (ms)">config.av.generalAC3delay</item>
+                       <item level="1" text="Dolby Digital default">config.av.defaultac3</item>
+                       <item level="1" text="General Dolby Digital delay (ms)">config.av.generalAC3delay</item>
                        <item level="1" text="General PCM delay (ms)">config.av.generalPCMdelay</item>
-                       <item level="1" text="AC3 downmix" requires="CanDownmixAC3">config.av.downmix_ac3</item>
+                       <item level="1" text="Dolby Digital downmix" requires="CanDownmixAC3">config.av.downmix_ac3</item>
                        <item level="1" text="Auto scart switching" requires="ScartSwitch">config.av.vcrswitch</item>
                </setup>
                <setup key="usage" title="Customize">
index 868fbc4..cde03f4 100755 (executable)
                        <convert type="ConditionalShowHide" />
                </widget>
                <!-- Crypt icon (encrypted service?) -->
-               <ePixmap position="563,48" zPosition="0" size="107,15" pixmap="skin_default/icons/icons_off.png" />
+               <!-- ikseong
+               <ePixmap position="563,48" zPosition="0" size="107,15" pixmap="skin_default/icons/icons_off.png" />     -->
+               <ePixmap position="563,48" zPosition="0" size="80,15" pixmap="skin_default/icons/icons_off.png" />              
                <widget source="session.CurrentService" render="Pixmap" pixmap="skin_default/icons/icon_crypt.png" position="563,48" zPosition="1" size="12,16" alphatest="on">
                        <convert type="ServiceInfo">IsCrypted</convert>
                        <convert type="ConditionalShowHide" />
                        <convert type="ConditionalShowHide" />
                </widget>
                <!-- Audio icon (is there multichannel audio?) -->
+<!--   ikseong         
                <widget source="session.CurrentService" render="Pixmap" pixmap="skin_default/icons/icon_dolby.png" position="645,48" zPosition="1" size="26,16" alphatest="on">
                        <convert type="ServiceInfo">IsMultichannel</convert>
                        <convert type="ConditionalShowHide" />
-               </widget>
+               </widget>       -->
                <!-- Progressbar (current event duration)-->
                <ePixmap pixmap="skin_default/progress_bg.png" position="48,77" size="84,7" transparent="1" alphatest="on" />
                <widget source="session.Event_Now" render="Progress" pixmap="skin_default/progress_small.png" position="50,78" zPosition="1" size="80,5" transparent="1">
index 940e91a..49ffcc2 100644 (file)
Binary files a/data/skin_default/spinner/wait1.png and b/data/skin_default/spinner/wait1.png differ
index d534276..d19f3d3 100644 (file)
Binary files a/data/skin_default/spinner/wait2.png and b/data/skin_default/spinner/wait2.png differ
index 5534e35..229a91c 100644 (file)
Binary files a/data/skin_default/spinner/wait3.png and b/data/skin_default/spinner/wait3.png differ
index a052264..b96ad21 100644 (file)
Binary files a/data/skin_default/spinner/wait4.png and b/data/skin_default/spinner/wait4.png differ
old mode 100644 (file)
new mode 100755 (executable)
index 70a6e0d..7901a26
@@ -1,6 +1,7 @@
 <wizard>
                <step id="start" nextstep="introduction">
-                       <text value="Welcome.\n\nThis start wizard will guide you through the basic setup of your Dreambox.\nPress the OK button on your remote control to move to the next step." />
+                       <text value="Welcome.\n\nThis start wizard will guide you through the basic setup of your STB.\nPress the OK button on your remote control to move to the next step." />                        
+
                        <code>
 self.clearSelectedKeys()
 self.selectKey("OK")
@@ -128,7 +129,8 @@ self.condition = config.misc.startwizard.doservicescan.value and nimmanager.some
                        </list>
                </step>
                <step id="finisheddefaultsatlists">
-                       <text value="Do you want to enable the parental control feature on your dreambox?" />
+                       <text value="Do you want to enable the parental control feature on your STB?" />                        
+
                        <list>
                                <listentry caption="Yes" step="parentalsetup" />
                                <listentry caption="No" step="end" />
@@ -163,12 +165,14 @@ config.ParentalControl.setuppin.value = config.ParentalControl.servicepin[0].val
 config.ParentalControl.setuppin.save()
                        </code>
 
-                       <text value="After the start wizard is completed, you need to protect single services. Refer to your dreambox's manual on how to do that." />
+                       <text value="After the start wizard is completed, you need to protect single services. Refer to your STB's manual on how to do that." />
+
                </step>
                <step id="end" laststep="true">
                        <condition>
 self.condition = self.isLastWizard
                        </condition>
-                       <text value="Thank you for using the wizard. Your box is now ready to use.\nPlease press OK to start using your Dreambox." />
+                       <text value="Thank you for using the wizard. Your box is now ready to use.\nPlease press OK to start using your STB." />
+
                </step>
 </wizard>
old mode 100644 (file)
new mode 100755 (executable)
index bd2486b..2a8fffa
@@ -3,7 +3,7 @@
                        <text value="Do you want to view a tutorial?" />
                        <list>
                                <listentry caption="Yes, view the tutorial" step="next" />
-                               <listentry caption="No, just start my dreambox" step="end" />
+                               <listentry caption="No, just start my STB" step="end" />
                        </list>
                </step>
 
old mode 100644 (file)
new mode 100755 (executable)
index de1271b..c662545
@@ -4,4 +4,4 @@ INCLUDES = \
 noinst_LIBRARIES = libenigma_driver.a
 
 libenigma_driver_a_SOURCES = \
-       rc.cpp rcinput.cpp rcconsole.cpp avswitch.cpp rfmod.cpp etimezone.cpp misc_options.cpp
+       rc.cpp rcinput.cpp rcconsole.cpp avswitch.cpp rfmod.cpp etimezone.cpp misc_options.cpp memtest.cpp sc_test.cpp
diff --git a/lib/driver/memtest.cpp b/lib/driver/memtest.cpp
new file mode 100755 (executable)
index 0000000..94bc6aa
--- /dev/null
@@ -0,0 +1,55 @@
+#include <lib/driver/memtest.h>\r
+#include <errno.h>\r
+#include <lib/base/eerror.h>\r
+#include <lib/base/estring.h>\r
+\r
+#define TESTSIZE 32*1024\r
+\r
+eMemtest *eMemtest::instance;\r
+\r
+eMemtest::eMemtest()\r
+{\r
+       instance = this;\r
+\r
+}\r
+\r
+eMemtest::~eMemtest()\r
+{\r
+       instance=NULL;\r
+\r
+}\r
+/*\r
+*      return value\r
+*      0 - ok\r
+*      1 - fail\r
+*/\r
+int eMemtest::dramtest()\r
+{\r
+       int result=0;\r
+       int i;\r
+       char memt[TESTSIZE];\r
+       eDebug("dramtest start");\r
+\r
+       \r
+       for(i=0;i<TESTSIZE;i++)\r
+               memt[i]=0x13;\r
+       \r
+       for(i=0;i<TESTSIZE;i++)\r
+       {\r
+               if(memt[i]!=0x13)\r
+               {\r
+                       result=1;\r
+                       break;\r
+               }\r
+       }\r
+       \r
+       return result;\r
+               \r
+}\r
+\r
+int eMemtest::flashtest()\r
+{\r
+       int result=0;\r
+       \r
+       return result;\r
+}\r
diff --git a/lib/driver/memtest.h b/lib/driver/memtest.h
new file mode 100755 (executable)
index 0000000..a054eef
--- /dev/null
@@ -0,0 +1,21 @@
+#ifdef BUILD_VUPLUS /* ikseong  */\r
+#ifndef __memtest_h\r
+#define __memtest_h\r
+\r
+#include <lib/base/object.h>\r
+#include <lib/python/connections.h>\r
+\r
+class eMemtest\r
+{\r
+       static eMemtest *instance;\r
+public:\r
+       eMemtest();\r
+       ~eMemtest();\r
+       int dramtest();\r
+       int flashtest();\r
+       static eMemtest *getInstance() { return instance; }\r
+\r
+};\r
+#endif\r
+#endif\r
+\r
index 2bfeefa..f30ba8c 100644 (file)
@@ -73,16 +73,8 @@ void eRCDeviceInputDev::handleCode(long rccode)
 eRCDeviceInputDev::eRCDeviceInputDev(eRCInputEventDriver *driver)
        :eRCDevice(driver->getDeviceName(), driver), iskeyboard(false)
 {
-       int len=id.length();
-       int idx=0;
-       while(idx <= len-8)
-       {
-               if (!strncasecmp(&id[idx++], "KEYBOARD", 8))
-               {
-                       iskeyboard=true;
-                       break;
-               }
-       }
+       if (strcasestr(id.c_str(), "keyboard") != NULL)
+               iskeyboard = true;
        setExclusive(true);
        eDebug("Input device \"%s\" is %sa keyboard.", id.c_str(), iskeyboard ? "" : "not ");
 }
diff --git a/lib/driver/sc_test.cpp b/lib/driver/sc_test.cpp
new file mode 100755 (executable)
index 0000000..cfb1fcd
--- /dev/null
@@ -0,0 +1,325 @@
+#include <lib/dvb/dvb.h>\r
+#include <lib/dvb/frontendparms.h>\r
+\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <limits.h>\r
+#include <string.h>\r
+#include <errno.h>\r
+#include <sys/ioctl.h>\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+#include <sys/poll.h>\r
+#include <fcntl.h>\r
+#include <time.h>\r
+#include <unistd.h>\r
+#include <termios.h>\r
+#include <lib/driver/sc_test.h>\r
+#include <errno.h>\r
+#include <lib/base/eerror.h>\r
+#include <lib/base/estring.h>\r
+\r
+#include <stdint.h>\r
+#include <sys/time.h>\r
+#include <poll.h>\r
+\r
+\r
+#define SC_CHECK_TIMEOUT       5\r
+#define SC_REMOVE_TIMEOUT      10\r
+\r
+\r
+#define SMART_CARD0    "/dev/sci0"                     /* upper smart card */\r
+#define SMART_CARD1    "/dev/sci1"                     /* lower smart card */\r
+\r
+#define SC_SUCCESS                     0\r
+#define NO_DEV_FOUND           -1\r
+#define SC_NOT_INSERTED        -2\r
+#define SC_NOT_VALID_ATR       -3\r
+#define SC_NOT_REMOVED         -4\r
+#define SC_READ_TIMEOUT        -5\r
+\r
+\r
+#define SCI_IOW_MAGIC                  's'\r
+\r
+/* ioctl cmd table */\r
+//#include "sci_global.h"\r
+#define IOCTL_SET_RESET                        _IOW(SCI_IOW_MAGIC, 1,  unsigned long)\r
+#define IOCTL_SET_MODES                        _IOW(SCI_IOW_MAGIC, 2,  SCI_MODES)\r
+#define IOCTL_GET_MODES                        _IOW(SCI_IOW_MAGIC, 3,  SCI_MODES)\r
+#define IOCTL_SET_PARAMETERS           _IOW(SCI_IOW_MAGIC, 4,  SCI_PARAMETERS)\r
+#define IOCTL_GET_PARAMETERS           _IOW(SCI_IOW_MAGIC, 5,  SCI_PARAMETERS)\r
+#define IOCTL_SET_CLOCK_START          _IOW(SCI_IOW_MAGIC, 6,  unsigned long)\r
+#define IOCTL_SET_CLOCK_STOP           _IOW(SCI_IOW_MAGIC, 7,  unsigned long)\r
+#define IOCTL_GET_IS_CARD_PRESENT      _IOW(SCI_IOW_MAGIC, 8,  unsigned long)\r
+#define IOCTL_GET_IS_CARD_ACTIVATED    _IOW(SCI_IOW_MAGIC, 9,  unsigned long)\r
+#define IOCTL_SET_DEACTIVATE           _IOW(SCI_IOW_MAGIC, 10, unsigned long)\r
+#define IOCTL_SET_ATR_READY            _IOW(SCI_IOW_MAGIC, 11, unsigned long)\r
+#define IOCTL_GET_ATR_STATUS           _IOW(SCI_IOW_MAGIC, 12, unsigned long)\r
+#define IOCTL_DUMP_REGS                        _IOW(SCI_IOW_MAGIC, 20, unsigned long)\r
+\r
+eSctest *eSctest::instance;\r
+\r
+eSctest::eSctest()\r
+{\r
+       instance = this;\r
+\r
+}\r
+\r
+eSctest::~eSctest()\r
+{\r
+       instance=NULL;\r
+\r
+}\r
+\r
+int eSctest::n_check_smart_card(char *dev_name)\r
+{\r
+       int fd;\r
+       struct pollfd pollfd;\r
+       unsigned char buf[64];\r
+       int cnt = 0;\r
+       int modem_status;\r
+       int count = SC_CHECK_TIMEOUT;\r
+       int readok=0;\r
+       \r
+       fd = ::open(dev_name, O_RDWR);\r
+       \r
+       if(fd < 0){\r
+               eDebug("sci0 open error\n");\r
+               return NO_DEV_FOUND;\r
+       }\r
+       else\r
+               eDebug("sci0 is opened fd : %d\n", fd);\r
+\r
+\r
+       ::ioctl(fd, IOCTL_GET_IS_CARD_PRESENT, &modem_status);\r
+\r
+       if( modem_status )\r
+               eDebug("card is now inserted\n");\r
+       else\r
+       {\r
+               eDebug("card is NOT inserted\n");\r
+               ::close(fd);\r
+               return SC_NOT_INSERTED;\r
+       }\r
+\r
+       /* now smart card is inserted, let's do reset */\r
+\r
+       ::ioctl(fd, IOCTL_SET_RESET, &modem_status);\r
+\r
+       /* now we can get the ATR */\r
+\r
+       pollfd.fd = fd;\r
+       pollfd.events = POLLIN|POLLOUT|POLLERR|POLLPRI;\r
+\r
+\r
+       while(poll(&pollfd, 1, 1000)>=0 && count--){\r
+\r
+               eDebug("pollfd.revents : 0x%x\n", pollfd.revents);\r
+               if(pollfd.revents & POLLIN){\r
+                       eDebug(">>read \n");\r
+                       cnt = read(fd, buf, 64);\r
+                       eDebug("<<read cnt:%d\n", cnt);                 \r
+                       if(cnt) \r
+                       {\r
+                               if(buf[0]==0x3b||buf[0]==0x3f)\r
+                               {\r
+                                       eDebug("read -%d : 0x%x",cnt, buf[0]);\r
+                                       readok = 1;\r
+                               }\r
+                               break;\r
+                       }\r
+                       else\r
+                               eDebug("no data\n");\r
+               }\r
+       }\r
+\r
+       ::close(fd);\r
+       \r
+       if (readok == 0) return SC_NOT_VALID_ATR;\r
+       if(!count) return SC_READ_TIMEOUT;\r
+       return SC_SUCCESS;\r
+}\r
+\r
+int eSctest::check_smart_card(char *dev_name)\r
+{\r
+       int fd;\r
+       struct pollfd pollfd;\r
+       unsigned char buf[64];\r
+       int cnt = 0;\r
+       int modem_status;\r
+       int count = SC_CHECK_TIMEOUT;\r
+       int readok=0;\r
+       fd = ::open(dev_name, O_RDWR);\r
+       \r
+       if(fd < 0){\r
+               eDebug("sci0 open error");\r
+               return NO_DEV_FOUND;\r
+       }\r
+       else\r
+               eDebug("sci0 is opened fd : %d", fd);\r
+\r
+       ::tcflush(fd, TCIFLUSH);\r
+\r
+       ::ioctl(fd, TIOCMGET, &modem_status);\r
+\r
+       if( modem_status & TIOCM_CAR)\r
+               eDebug("card is now inserted");\r
+       else\r
+       {\r
+               eDebug("card is NOT inserted");\r
+               close(fd);\r
+               return SC_NOT_INSERTED;\r
+       }\r
+\r
+       /* now smart card is inserted, let's do reset */\r
+\r
+       modem_status |= TIOCM_RTS;\r
+       ::ioctl(fd, TIOCMSET, &modem_status);\r
+\r
+       modem_status &= ~TIOCM_RTS;\r
+       ::ioctl(fd, TIOCMSET, &modem_status);\r
+\r
+\r
+       /* now we can get the ATR */\r
+\r
+       pollfd.fd = fd;\r
+       pollfd.events = POLLIN|POLLOUT|POLLERR|POLLPRI;\r
+\r
+\r
+       while(poll(&pollfd, 1, 1000)>=0 && count--){\r
+\r
+               eDebug("pollfd.revents : 0x%x %d", pollfd.revents,count);\r
+               if(pollfd.revents & POLLIN){\r
+                       eDebug(">>read ");\r
+                       cnt = ::read(fd, buf, 64);\r
+                       eDebug("<<read cnt:%d", cnt);\r
+                       if(cnt) \r
+                       {\r
+                               int i;\r
+                               for( i = 0 ; i < cnt ; i ++)\r
+                               {\r
+                                       if(buf[i]!=0x0)\r
+                                               readok = 1;\r
+                                       eDebug("read : 0x%x", buf[i]);\r
+                               }\r
+                               break;\r
+                       }\r
+                       else\r
+                               eDebug("no data");\r
+               }\r
+       }\r
+       \r
+       ::close(fd);\r
+       eDebug("readok = %d",readok);\r
+       if (readok == 0) return SC_NOT_VALID_ATR;\r
+       if(count<=0 ) return SC_READ_TIMEOUT;\r
+       return SC_SUCCESS;\r
+}\r
+int eSctest::eject_smart_card(char *dev_name)\r
+{\r
+       int fd;\r
+       struct pollfd pollfd;\r
+       unsigned char buf[64];\r
+       int cnt = 0;\r
+       int modem_status;\r
+       int count = SC_CHECK_TIMEOUT;\r
+       \r
+       fd = ::open(dev_name, O_RDWR);\r
+       \r
+       if(fd < 0){\r
+               eDebug("sci0 open error");\r
+               return NO_DEV_FOUND;\r
+       }\r
+       else\r
+               eDebug("sci0 is opened fd : %d", fd);\r
+\r
+       ::tcflush(fd, TCIFLUSH);\r
+\r
+       ::ioctl(fd, TIOCMGET, &modem_status);\r
+\r
+       if( modem_status & TIOCM_CAR)\r
+               eDebug("card is now inserted");\r
+       else\r
+       {\r
+               eDebug("card is NOT inserted");\r
+               close(fd);\r
+               return SC_NOT_INSERTED;\r
+       }\r
+       /* now we can get the ATR */\r
+\r
+       pollfd.fd = fd;\r
+       pollfd.events = POLLIN|POLLOUT|POLLERR|POLLPRI;\r
+\r
+       /* let's wait until card is removed for count secs.*/\r
+       count = SC_REMOVE_TIMEOUT;      \r
+       do{\r
+               ::ioctl(fd, TIOCMGET, &modem_status);\r
+               eDebug("modem_status : 0x%x %d", modem_status,count);\r
+               sleep(1);       \r
+\r
+       }\r
+       while((modem_status&TIOCM_CAR) && count--);\r
+\r
+       if(count<=0 ) return SC_NOT_REMOVED;\r
+       \r
+       ::close(fd);            \r
+       return SC_SUCCESS;\r
+}\r
+\r
+\r
+int eSctest::VFD_Open()\r
+{\r
+       VFD_fd = open("/dev/dbox/lcd0", O_RDWR);\r
+       return VFD_fd;\r
+}\r
+\r
+int eSctest::turnon_VFD()\r
+{ \r
+       ioctl(VFD_fd, 0xa0a0a0a0, 0);\r
+}\r
+\r
+int eSctest::turnoff_VFD()\r
+{\r
+       ioctl(VFD_fd, 0x01010101, 0);   \r
+}\r
+\r
+void eSctest::VFD_Close()\r
+{\r
+       close(VFD_fd);\r
+}\r
+\r
+extern int frontend0_fd;\r
+extern int frontend1_fd;\r
+\r
+int eSctest::getFrontendstatus(int fe)\r
+{\r
+       fe_status_t status;\r
+\r
+       int m_fd;\r
+       int res;\r
+\r
+       if (fe == 0)\r
+               m_fd = frontend0_fd;\r
+       else if (fe==1)\r
+               m_fd = frontend1_fd;\r
+       else \r
+               return -1;\r
+\r
+       if (m_fd < 0)\r
+       {\r
+               eDebug("%d open error ",fe);\r
+               return -1;\r
+       }\r
+       else\r
+               eDebug("%d open ok!!!! ",m_fd);\r
+       \r
+       if ( ioctl(m_fd, FE_READ_STATUS, &status) < 0)\r
+               eDebug("%d read error ",fe);            \r
+\r
+       if (status&FE_HAS_LOCK)\r
+               return 1;\r
+       else\r
+               return 0;\r
+\r
+}\r
+\r
diff --git a/lib/driver/sc_test.h b/lib/driver/sc_test.h
new file mode 100755 (executable)
index 0000000..8529120
--- /dev/null
@@ -0,0 +1,139 @@
+#ifdef BUILD_VUPLUS /* ikseong  */
+#ifndef __sc_test_h
+#define __sc_test_h
+
+#include <lib/base/object.h>
+#include <lib/python/connections.h>
+
+class eSctest
+{
+       static eSctest *instance;
+protected:
+       int VFD_fd;
+       
+public:
+       eSctest();
+       ~eSctest();
+       int n_check_smart_card(char *dev_name);
+       int check_smart_card(char *dev_name);
+       int eject_smart_card(char *dev_name);
+       int VFD_Open();
+       void VFD_Close();
+       int turnon_VFD();
+       int turnoff_VFD();
+       int getFrontendstatus(int fe);
+       
+       static eSctest *getInstance() { return instance; }
+};
+
+#if !defined(_sci_global_h_)
+#define _sci_global_h_
+
+#define INT int
+#define UCHAR unsigned char
+#define ULONG unsigned long
+
+#define SCI_CLASS_A                 1   /* only 5V Vcc to Smart Card */
+#define SCI_CLASS_B                 2   /* only 3V Vcc to Smart Card */
+#define SCI_CLASS_AB                3   /* 5V or 3V Vcc to Smart Card */
+#define SCI_NUMBER_OF_CONTROLLERS   2   /* number of SCI controllers */
+
+#define SCI_BUFFER_SIZE             512
+
+#define SCI_CLOCK_STOP_DISABLED     0
+#define SCI_CLOCK_STOP_LOW          1
+#define SCI_CLOCK_STOP_HIGH         2
+
+#define SCI_MAX_ATR_SIZE            33
+
+#define SCI_MAX_F                   80000000
+#define SCI_MAX_ETU                 0xFFF
+#define SCI_MAX_WWT                 0xFFFFFFFF
+#define SCI_MAX_CWT                 0xFFFF
+#define SCI_MAX_BWT                 0xFFFFFFFF
+#define SCI_MAX_EGT                 0xFF
+
+#define SCI_MIN_F                   1000000
+#define SCI_MIN_ETU                 8
+#define SCI_MIN_WWT                 12
+#define SCI_MIN_CWT                 12
+#define SCI_MIN_BWT                 971
+#define SCI_MIN_EGT                 0
+
+#define SCI_SYNC                    0x00000001
+#define SCI_DATA_ANY                0x00000002
+
+/* Reserved for Future Use defined as 0 */
+#define RFU                         0
+
+/* error codes */
+typedef enum
+{
+    SCI_ERROR_OK = 0,
+    SCI_ERROR_DRIVER_NOT_INITIALIZED = -1691,
+    SCI_ERROR_FAIL,
+    SCI_ERROR_KERNEL_FAIL,
+    SCI_ERROR_NO_ATR,
+    SCI_ERROR_TS_CHARACTER_INVALID,
+    SCI_ERROR_LRC_FAIL,
+    SCI_ERROR_CRC_FAIL,
+    SCI_ERROR_LENGTH_FAIL,
+    SCI_ERROR_PARITY_FAIL,
+    SCI_ERROR_RX_OVERFLOW_FAIL,
+    SCI_ERROR_TX_OVERFLOW_FAIL,
+    SCI_ERROR_TX_UNDERRUN_FAIL,
+    SCI_ERROR_CARD_NOT_PRESENT,
+    SCI_ERROR_CARD_NOT_ACTIVATED,
+    SCI_ERROR_AWT_TIMEOUT,
+    SCI_ERROR_WWT_TIMEOUT,
+    SCI_ERROR_CWT_TIMEOUT,
+    SCI_ERROR_BWT_TIMEOUT,
+    SCI_ERROR_PARAMETER_OUT_OF_RANGE,
+    SCI_ERROR_TRANSACTION_ABORTED,
+    SCI_ERROR_CLOCK_STOP_DISABLED,
+    SCI_ERROR_TX_PENDING,
+    SCI_ERROR_ATR_PENDING
+}
+SCI_ERROR;
+
+/* SCI driver modes */
+typedef struct sci_modes
+{
+    INT emv2000;
+    INT dma;
+    INT man_act;
+    INT rw_mode;
+}
+SCI_MODES;
+
+/* SCI communication parameters */
+typedef struct sci_parameters
+{
+    UCHAR T;
+    ULONG FI;                          // Contains the clock rate conversion. This factor is used as an index into a table of maximum operating frequencies. When the smart card is reset, the smart card driver library uses this value to calculate a new clock frequency. 
+    ULONG ETU;                 //elementary time unit 
+    ULONG WWT;
+    ULONG CWT;
+    ULONG BWT;
+    ULONG EGT;                 //Extra Guard Time 
+    ULONG clock_stop_polarity;
+    UCHAR check;
+    UCHAR P;
+    UCHAR I;
+    UCHAR U;
+}
+SCI_PARAMETERS;
+
+/* SCI ATR status */
+typedef enum
+{
+    SCI_WITHOUT_ATR = 0,
+    SCI_ATR_READY
+}
+SCI_ATR_STATUS;
+
+#endif /* _sci_global_h_ */
+
+#endif
+#endif
+
index ef8dadc..88cd3ee 100644 (file)
@@ -601,7 +601,7 @@ RESULT eDVBVideo::connectEvent(const Slot1<void, struct iTSMPEGDecoder::videoEve
        return 0;
 }
 
-static int readMpegProc(char *str, int decoder)
+static int readMpegProc(const char *str, int decoder)
 {
        int val = -1;
        char tmp[64];
old mode 100644 (file)
new mode 100755 (executable)
index 40d4418..059d417
@@ -1177,8 +1177,22 @@ void eDVBChannel::frontendStateChanged(iDVBFrontend*fe)
                }
        } else if (state == iDVBFrontend::stateFailed)
        {
+#ifdef BUILD_VUPLUS /* ikseong  */
+               if (m_current_frontend_parameters)
+               {
+                       eDebug("OURSTATE: lost lock, trying to retune");
+                       ourstate = state_tuning;
+                       m_frontend->get().tune(*m_current_frontend_parameters);
+               } 
+               else
+               {
+                       eDebug("OURSTATE: failed");
+                       ourstate = state_failed;
+               }
+#else
                eDebug("OURSTATE: failed");
                ourstate = state_failed;
+#endif         
        } else
                eFatal("state unknown");
 
index bb6b94b..26b6767 100644 (file)
@@ -111,7 +111,7 @@ void TDT::ready(int error)
 
 int TDT::createTable(unsigned int nr, const __u8 *data, unsigned int max)
 {
-       if ( data && data[0] == 0x70 || data[0] == 0x73 )
+       if ( data && (data[0] == 0x70 || data[0] == 0x73 ))
        {
                int length = ((data[1] & 0x0F) << 8) | data[2];
                if ( length >= 5 )
old mode 100644 (file)
new mode 100755 (executable)
index abbb8d2..843a518
@@ -490,6 +490,11 @@ void eDVBFrontend::reopenFrontend()
        openFrontend();
 }
 
+#ifdef BUILD_VUPLUS /* ikseong */
+int frontend0_fd;
+int frontend1_fd;
+#endif
+
 int eDVBFrontend::openFrontend()
 {
        if (m_state != stateClosed)
@@ -514,6 +519,15 @@ int eDVBFrontend::openFrontend()
                                eWarning("failed! (%s) %m", m_filename);
                                return -1;
                        }
+#ifdef BUILD_VUPLUS /* ikseong */
+                       else
+                       {                               
+                               if (m_dvbid==0)
+                                       frontend0_fd = m_fd;
+                               else if (m_dvbid==1)
+                                       frontend1_fd = m_fd;
+                       }
+#endif
                }
        }
        else
@@ -739,6 +753,10 @@ void eDVBFrontend::timeout()
        m_tuning = 0;
        if (m_state == stateTuning)
        {
+#ifdef BUILD_VUPLUS /* ikseong  */
+               eDVBFrontend *sec_fe = this;
+               sec_fe->m_data[CSW] = sec_fe->m_data[UCSW] = sec_fe->m_data[TONEBURST] = -1; // reset diseqc
+#endif
                m_state = stateFailed;
                m_stateChanged(this);
        }
index 5e489eb..9450ecc 100644 (file)
@@ -32,7 +32,7 @@ extern void bcm_accel_blit(
                int dst_addr, int dst_width, int dst_height, int dst_stride,
                int src_x, int src_y, int width, int height,
                int dst_x, int dst_y, int dwidth, int dheight,
-               int pal_addr);
+               int pal_addr, int flags);
 extern void bcm_accel_fill(
                int dst_addr, int dst_width, int dst_height, int dst_stride,
                int x, int y, int width, int height,
@@ -122,7 +122,7 @@ int gAccel::blit(gSurface *dst, const gSurface *src, const eRect &p, const eRect
                        dst->data_phys, dst->x, dst->y, dst->stride, 
                        area.left(), area.top(), area.width(), area.height(),
                        p.x(), p.y(), p.width(), p.height(),
-                       pal_addr);
+                       pal_addr, flags);
                return 0;
        }
 #endif
index 3beb677..12b5f22 100644 (file)
@@ -64,7 +64,7 @@ void bcm_accel_blit(
                int dst_addr, int dst_width, int dst_height, int dst_stride,
                int src_x, int src_y, int width, int height,
                int dst_x, int dst_y, int dwidth, int dheight,
-               int pal_addr)
+               int pal_addr, int flags)
 {
        C(0x43); // reset source
        C(0x53); // reset dest
index 74cda40..a5db43a 100644 (file)
@@ -370,7 +370,7 @@ int eTextPara::appendGlyph(Font *current_font, FT_Face current_face, FT_UInt gly
        }
 
        pGlyph ng;
-       ng.bbox.setLeft( (flags&GS_ISFIRST|cursor.x()-1)+glyph->left );
+       ng.bbox.setLeft( ((flags&GS_ISFIRST)|(cursor.x()-1))+glyph->left );
        ng.bbox.setTop( cursor.y() - glyph->top );
        ng.bbox.setWidth( glyph->width );
        ng.bbox.setHeight( glyph->height );
old mode 100644 (file)
new mode 100755 (executable)
index a593cfa..096705e
@@ -36,7 +36,11 @@ void gLCDDC::exec(gOpcode *o)
        {
        case gOpcode::flush:
 //             if (update)
+#ifndef BUILD_VUPLUS /* ikseong  */
                        lcd->update();
+#else
+                       ;
+#endif
        default:
                gDC::exec(o);
                break;
old mode 100644 (file)
new mode 100755 (executable)
index a7dc22d..9f43e35
@@ -176,6 +176,9 @@ eDBoxLCD *eDBoxLCD::getInstance()
 
 void eDBoxLCD::update()
 {
+#ifdef BUILD_VUPLUS /* ikseong  */
+       return ;
+#endif
        if (lcdfd >= 0)
        {
                if (!is_oled || is_oled == 2)
old mode 100644 (file)
new mode 100755 (executable)
index 2658f9b..37d47f3
@@ -73,8 +73,8 @@ def InitAVSwitch():
        # when YUV is not enabled, don't let the user select it
        if config.av.yuvenabled.value:
                colorformat_choices["yuv"] = _("YPbPr")
-
-       config.av.colorformat = ConfigSelection(choices=colorformat_choices, default="rgb")
+#      ikseong
+       config.av.colorformat = ConfigSelection(choices=colorformat_choices, default="cvbs")
        config.av.aspectratio = ConfigSelection(choices={
                        "4_3_letterbox": _("4:3 Letterbox"),
                        "4_3_panscan": _("4:3 PanScan"), 
index fa3518c..e2fa12c 100644 (file)
@@ -71,7 +71,7 @@ class ServiceInfo(Converter, object):
                                while idx < n:
                                        i = audio.getTrackInfo(idx)
                                        description = i.getDescription();
-                                       if "AC3" in description or "DTS" in description:
+                                       if "AC3" in description or "DTS" in description or "Dolby Digital" in description:
                                                return True
                                        idx += 1
                        return False
index e8e612a..9f69d26 100755 (executable)
@@ -1,5 +1,7 @@
 from os import system, listdir, statvfs, popen, makedirs, stat, major, minor, path, access
-from Tools.Directories import SCOPE_HDD, resolveFilename
+#      ikseong
+from Tools.Directories import SCOPE_HDD, resolveFilename, fileExists
+
 from Tools.CList import CList
 from SystemInfo import SystemInfo
 import time
@@ -91,7 +93,13 @@ class Harddisk:
                return ret
 
        def diskSize(self):
-               line = readFile(self.sysfsPath('size'))
+               #       ikseong
+               try:
+                       line = readFile(self.sysfsPath('size'))
+               except:
+                       harddiskmanager.removeHotplugPartition(self.device)
+                       print "error remove",self.device
+                       return -1
                try:
                        cap = int(line)
                except:
@@ -105,14 +113,20 @@ class Harddisk:
                return "%d.%03d GB" % (cap/1000, cap%1000)
 
        def model(self):
-               if self.device[:2] == "hd":
-                       return readFile('/proc/ide/' + self.device + '/model')
-               elif self.device[:2] == "sd":
-                       vendor = readFile(self.sysfsPath('device/vendor'))
-                       model = readFile(self.sysfsPath('device/model'))
-                       return vendor + '(' + model + ')'
-               else:
-                       assert False, "no hdX or sdX"
+               #       ikseong
+               try:
+                       if self.device[:2] == "hd":
+                               return readFile('/proc/ide/' + self.device + '/model')
+                       elif self.device[:2] == "sd":
+                               vendor = readFile(self.sysfsPath('device/vendor'))
+                               model = readFile(self.sysfsPath('device/model'))
+                               return vendor + '(' + model + ')'
+                       else:
+                               assert False, "no hdX or sdX"
+               except:
+                       harddiskmanager.removeHotplugPartition(self.device)
+                       print "error remove",self.device
+                       return -1
 
        def free(self):
                try:
@@ -209,7 +223,12 @@ class Harddisk:
                return (res >> 8)
 
        def createMovieFolder(self):
+#      ikseong
                try:
+                       if not fileExists("/hdd", 0):
+                               print "not found /hdd"
+                               system("ln -s /media/hdd /hdd")
+#                              
                        makedirs(resolveFilename(SCOPE_HDD))
                except OSError:
                        return -1
@@ -318,6 +337,10 @@ class Harddisk:
                idle_time = t - self.last_access
 
                stats = self.readStats()
+               #       ikseong
+               if stats == -1:
+                       self.setIdleTime(0)
+                       return
                print "nr_read", stats[0], "nr_write", stats[1]
                l = sum(stats)
                print "sum", l, "prev_sum", self.last_stat
@@ -505,7 +528,8 @@ class HarddiskManager:
                                        self.addHotplugPartition(part)
 
        def getAutofsMountpoint(self, device):
-               return "/autofs/%s/" % (device)
+               return "/media/%s/" % (device)
+
 
        def addHotplugPartition(self, device, physdev = None):
                if not physdev:
@@ -554,6 +578,9 @@ class HarddiskManager:
        def HDDList(self):
                list = [ ]
                for hd in self.hdd:
+                       #       ikseong
+                       if hd.model() == -1:
+                               continue
                        hdd = hd.model() + " - " + hd.bus()
                        cap = hd.capacity()
                        if cap != "":
old mode 100644 (file)
new mode 100755 (executable)
index 39f54c0..68d5464
@@ -60,7 +60,9 @@ class TunerInfo(GUIComponent):
                        value = self.getValue(self.LOCK)
 
                if self.type == self.SNR_DB:
-                       if value != 0x12345678:
+#      ikseong         
+#                      if value != 0x12345678:
+                       if value is not None and value != 0x12345678:
                                self.setText("%3.02f dB" % (value / 100.0))
                        else:
                                self.setText("")
index ee18898..e926e3f 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_cutlisteditor.xml
 
old mode 100644 (file)
new mode 100755 (executable)
index 7f755db..097cdf3
@@ -30,7 +30,7 @@ class DVDProject:
                self.target = None
                self.settings = ConfigSubsection()
                self.settings.name = ConfigText(fixed_size = False, visible_width = 40)
-               self.settings.authormode = ConfigSelection(choices = [("menu_linked", _("Linked titles with a DVD menu")), ("just_linked", _("Direct playback of linked titles without menu")), ("menu_seperate", _("Seperate titles with a main menu")), ("data_ts", _("Dreambox format data DVD (HDTV compatible)"))])
+               self.settings.authormode = ConfigSelection(choices = [("menu_linked", _("Linked titles with a DVD menu")), ("just_linked", _("Direct playback of linked titles without menu")), ("menu_seperate", _("Seperate titles with a main menu")), ("data_ts", _("STB format data DVD (HDTV compatible)"))])
                self.settings.titlesetmode = ConfigSelection(choices = [("single", _("Simple titleset (compatibility for legacy players)")), ("multi", _("Complex (allows mixing audio tracks and aspects)"))], default="multi")
                self.settings.output = ConfigSelection(choices = [("iso", _("Create DVD-ISO")), ("dvd", _("Burn DVD"))])
                self.settings.isopath = ConfigText(fixed_size = False, visible_width = 40)
old mode 100644 (file)
new mode 100755 (executable)
index b64541b..345645d
@@ -891,7 +891,7 @@ class DVDJob(Job):
                                tool = "genisoimage"
                                isopathfile = getISOfilename(self.project.settings.isopath.getValue(), volName)
                                burnargs = [ "-o", isopathfile ]
-                       burnargs += [ "-dvd-video", "-publisher", "Dreambox", "-V", volName, self.workspace + "/dvd" ]
+                       burnargs += [ "-dvd-video", "-publisher", "STB", "-V", volName, self.workspace + "/dvd" ]
                        BurnTask(self, burnargs, tool)
                RemoveDVDFolder(self)
 
@@ -937,7 +937,7 @@ class DVDdataJob(Job):
                        burnargs += ["-iso-level", "4", "-allow-limited-size" ]
                elif self.project.settings.dataformat.getValue() == "udf":
                        burnargs += ["-udf", "-allow-limited-size" ]
-               burnargs += [ "-publisher", "Dreambox", "-V", volName, "-follow-links", self.workspace ]
+               burnargs += [ "-publisher", "STB", "-V", volName, "-follow-links", self.workspace ]
                BurnTask(self, burnargs, tool)
                RemoveDVDFolder(self)
 
@@ -958,6 +958,6 @@ class DVDisoJob(Job):
                        burnargs = [ "-Z", "/dev/" + harddiskmanager.getCD(), "-dvd-compat" ]
                        if getSize(imagepath)/(1024*1024) > self.project.MAX_SL:
                                burnargs += [ "-use-the-force-luke=4gms", "-speed=1", "-R" ]
-                       burnargs += [ "-dvd-video", "-publisher", "Dreambox", "-V", volName, imagepath ]
+                       burnargs += [ "-dvd-video", "-publisher", "STB", "-V", volName, imagepath ]
                tool = "growisofs"
                BurnTask(self, burnargs, tool)
index 2cbeb63..e2a8675 100755 (executable)
@@ -212,7 +212,7 @@ class TitleList(Screen, HelpableScreen):
                if source is None:
                        return None
                if not source.getPath().endswith(".ts"):
-                       self.session.open(MessageBox,text = _("You can only burn Dreambox recordings!"), type = MessageBox.TYPE_ERROR)
+                       self.session.open(MessageBox,text = _("You can only burn STB recordings!"), type = MessageBox.TYPE_ERROR)
                        return None
                t = self.project.addService(source)
                try:
@@ -350,7 +350,7 @@ class TitleList(Screen, HelpableScreen):
                t = self.current_edit_title
                t.titleEditDone(cutlist)
                if t.VideoType != 0:
-                       self.session.openWithCallback(self.DVDformatCB,MessageBox,text = _("The DVD standard doesn't support H.264 (HDTV) video streams. Do you want to create a Dreambox format data DVD (which will not play in stand-alone DVD players) instead?"), type = MessageBox.TYPE_YESNO)
+                       self.session.openWithCallback(self.DVDformatCB,MessageBox,text = _("The DVD standard doesn't support H.264 (HDTV) video streams. Do you want to create a STB format data DVD (which will not play in stand-alone DVD players) instead?"), type = MessageBox.TYPE_YESNO)
                else:
                        self.updateTitleList()
 
index 0b3be7d..1a823b7 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_dvdburn.xml
 
index 12d1371..aa22b99 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_dvdplayer.xml
 
index 1353f7d..f22d381 100755 (executable)
@@ -6,16 +6,16 @@
                     <author>Dream Multimedia</author>
                     <name>DVDPlayer</name>
                     <packagename>enigma2-plugin-extensions-dvdplayer</packagename>
-                    <shortdescription>DVDPlayer plays your DVDs on your Dreambox.</shortdescription>
-                    <description>DVDPlayer plays your DVDs on your Dreambox.\nWith the DVDPlayer you can play your DVDs on your Dreambox from a DVD or even from an iso file or video_ts folder on your harddisc or network.</description>
+                    <shortdescription>DVDPlayer plays your DVDs on your STB.</shortdescription>
+                    <description>DVDPlayer plays your DVDs on your STB.\nWith the DVDPlayer you can play your DVDs on your Dreambox from a DVD or even from an iso file or video_ts folder on your harddisc or network.</description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_dvdplayer.jpg" />
           </info>
           <info language="de">
                     <author>Dream Multimedia</author>
                     <name>DVDPlayer</name>
                     <packagename>enigma2-plugin-extensions-dvdplayer</packagename>
-                    <shortdescription>Spielen Sie Ihre DVDs mit dem DVDPlayer auf Ihrer Dreambox ab.</shortdescription>
-                    <description>Spielen Sie Ihre DVDs mit dem DVDPlayer auf Ihrer Dreambox ab.\nMit dem DVDPlayer können Sie Ihre DVDs auf Ihrer Dreambox abspielen. Dabei ist es egal ob Sie von DVD, iso-Datei oder sogar direkt von einer video_ts Ordnerstruktur von Ihrer Festplatte oder dem Netzwerk abspielen.
+                    <shortdescription>Spielen Sie Ihre DVDs mit dem DVDPlayer auf Ihrer STB ab.</shortdescription>
+                    <description>Spielen Sie Ihre DVDs mit dem DVDPlayer auf Ihrer STB ab.\nMit dem DVDPlayer können Sie Ihre DVDs auf Ihrer Dreambox abspielen. Dabei ist es egal ob Sie von DVD, iso-Datei oder sogar direkt von einer video_ts Ordnerstruktur von Ihrer Festplatte oder dem Netzwerk abspielen.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_dvdplayer.jpg" />
           </info>
index 5766ff3..a11d35d 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_graphmultiepg.xml
 
index 84e0167..e17f0bf 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_mediaplayer.xml
 
index e4bdba1..7363e5e 100755 (executable)
@@ -137,8 +137,9 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
 
                self.seek_target = None
 
-               from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
-               hotplugNotifier.append(self.hotplugCB)
+#      ikseong
+#              from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
+#              hotplugNotifier.append(self.hotplugCB)
 
                class MoviePlayerActionMap(NumberActionMap):
                        def __init__(self, player, contexts = [ ], actions = { }, prio=0):
@@ -168,8 +169,11 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                                "prevBouquet": (self.switchToPlayList, _("switch to playlist")),
                                "nextBouquet": (self.switchToFileList, _("switch to filelist")),
                                "delete": (self.deletePlaylistEntry, _("delete playlist entry")),
-                               "shift_stop": (self.clear_playlist, _("clear playlist")),
-                               "shift_record": (self.playlist.PlayListShuffle, _("shuffle playlist")),
+#ikseong                               
+#                              "shift_stop": (self.clear_playlist, _("clear playlist")),
+#                              "shift_record": (self.playlist.PlayListShuffle, _("shuffle playlist")),
+                               "shift_stop": self.clear_playlist,
+                               "shift_record": self.playlist.PlayListShuffle,
                                "subtitles": (self.subtitleSelection, _("Subtitle selection")),
                        }, -2)
 
@@ -248,8 +252,9 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                if config.mediaplayer.saveDirOnExit.getValue():
                        config.mediaplayer.defaultDir.setValue(self.filelist.getCurrentDirectory())
                        config.mediaplayer.defaultDir.save()
-               from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
-               hotplugNotifier.remove(self.hotplugCB)
+#      ikseong                 
+#      from Plugins.SystemPlugins.Hotplug.plugin import hotplugNotifier
+#      hotplugNotifier.remove(self.hotplugCB)
                del self["coverArt"].picload
                self.close()
 
@@ -277,13 +282,13 @@ class MediaPlayer(Screen, InfoBarBase, InfoBarSeek, InfoBarAudioSelection, InfoB
                currPlay = self.session.nav.getCurrentService()
                sTagAudioCodec = currPlay.info().getInfoString(iServiceInformation.sTagAudioCodec)
                print "[__evAudioDecodeError] audio-codec %s can't be decoded by hardware" % (sTagAudioCodec)
-               self.session.open(MessageBox, _("This Dreambox can't decode %s streams!") % sTagAudioCodec, type = MessageBox.TYPE_INFO,timeout = 20 )
+               self.session.open(MessageBox, _("This STB can't decode %s streams!") % sTagAudioCodec, type = MessageBox.TYPE_INFO,timeout = 20 )
 
        def __evVideoDecodeError(self):
                currPlay = self.session.nav.getCurrentService()
                sTagVideoCodec = currPlay.info().getInfoString(iServiceInformation.sTagVideoCodec)
                print "[__evVideoDecodeError] video-codec %s can't be decoded by hardware" % (sTagVideoCodec)
-               self.session.open(MessageBox, _("This Dreambox can't decode %s streams!") % sTagVideoCodec, type = MessageBox.TYPE_INFO,timeout = 20 )
+               self.session.open(MessageBox, _("This STB can't decode %s streams!") % sTagVideoCodec, type = MessageBox.TYPE_INFO,timeout = 20 )
 
        def __evPluginError(self):
                currPlay = self.session.nav.getCurrentService()
index d80b8c2..c4ab27d 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_mediascanner.xml
 
index 87b59f4..e501fb6 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_pictureplayer.xml
 
index 34ccbeb..67388bc 100755 (executable)
@@ -1,3 +1,3 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_socketmmi.xml
index ecdcac8..1ab8aee 100755 (executable)
@@ -1,3 +1,3 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_tuxboxplugins.xml
index 9abc598..1465b01 100755 (executable)
@@ -10,7 +10,7 @@
                     <packagename>enigma2-plugin-systemplugins-commoninterfaceassignment</packagename>
                     <shortdescription>Assigning providers/services/caids to a dedicated CI module</shortdescription>
                     <description>With the CommonInterfaceAssignment extension it is possible to use different CI modules
-                    in your Dreambox and assign to each of them dedicated providers/services or caids.\n
+                    in your STB and assign to each of them dedicated providers/services or caids.\n
                     So it is then possible to watch a scrambled service while recording another one.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_ciassignment.jpg" />
index 2c0edf5..53d39ed 100755 (executable)
@@ -57,6 +57,10 @@ class CIselectMainMenu(Screen):
                                        appname = _("Slot %d") %(slot+1) + " - " + _("init modules")
                                elif state == 2:
                                        appname = _("Slot %d") %(slot+1) + " - " + eDVBCI_UI.getInstance().getAppName(slot)
+                               #       ikseong                                 
+                               else :
+                                       appname = _("Slot %d") %(slot+1) + " - " + _("no module found")
+                               #
                                self.list.append( (appname, ConfigNothing(), 0, slot) )
                else:
                        self.list.append( (_("no CI slots found") , ConfigNothing(), 1, -1) )
index 2563981..f89ad02 100755 (executable)
@@ -175,7 +175,7 @@ class CrashlogAutoSubmitConfiguration(Screen, ConfigListScreen):
                        self.enableVKeyIcon()
                        self.showKeypad()
                elif current == self.AnonCrashlogEntry:
-                       self["status"].setText(_("Adds enigma2 settings and dreambox model informations like SN, rev... if enabled."))
+                       self["status"].setText(_("Adds enigma2 settings and STB model informations like SN, rev... if enabled."))
                        self.disableVKeyIcon()
                elif current == self.NetworkEntry:
                        self["status"].setText(_("Adds network configuration if enabled."))
@@ -332,15 +332,16 @@ def mxServerFound(mxServer,session):
                if crashlog.startswith("enigma2_crash_") and crashlog.endswith(".log"):
                        print "[CrashlogAutoSubmit] - found crashlog: ",os.path.basename(crashlog)
                        crashLogFilelist.append('/media/hdd/' + crashlog)
-
-       if len(crashLogFilelist):
-               if config.plugins.crashlogautosubmit.sendmail.value == "send":
-                       Notifications.AddNotificationWithCallback(handleAnswer, ChoiceBox, title=_("Crashlogs found!\nSend them to Dream Multimedia?"), list = list)
-               elif config.plugins.crashlogautosubmit.sendmail.value == "send_always":
-                       send_mail()
-       else:
-               print "[CrashlogAutoSubmit] - no crashlogs found."
-
+#      ikseong
+#      if len(crashLogFilelist):
+#              if config.plugins.crashlogautosubmit.sendmail.value == "send":
+#                      session.openWithCallback(handleAnswer, ChoiceBox, title=_("Crashlogs found!\nSend them to Dream Multimedia ?"), list = list)
+#              elif config.plugins.crashlogautosubmit.sendmail.value == "send_always":
+#                      send_mail()
+#      else:   
+#              print "[CrashlogAutoSubmit] - no crashlogs found."
+#
+       print "block to handle Crashlogs "
 
 def getMailExchange(host):
        print "[CrashlogAutoSubmit] - getMailExchange"
index 9b0a2ed..92a5473 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_diseqctester.xml
 
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am b/lib/python/Plugins/SystemPlugins/FactoryTest/Makefile.am
new file mode 100755 (executable)
index 0000000..508a02b
--- /dev/null
@@ -0,0 +1,6 @@
+installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/FactoryTest
+
+install_PYTHON =       \
+       __init__.py \
+       plugin.py \
+       testdb
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/__init__.py b/lib/python/Plugins/SystemPlugins/FactoryTest/__init__.py
new file mode 100755 (executable)
index 0000000..e69de29
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py b/lib/python/Plugins/SystemPlugins/FactoryTest/plugin.py
new file mode 100755 (executable)
index 0000000..57583c0
--- /dev/null
@@ -0,0 +1,1752 @@
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+from Plugins.Plugin import PluginDescriptor
+from Components.MenuList import MenuList
+from Tools.Directories import fileExists
+from Components.ServiceList import ServiceList
+from Components.ActionMap import ActionMap,NumberActionMap
+from Components.config import config
+from os import system,access,F_OK,R_OK,W_OK
+from Components.Label import Label
+from Components.AVSwitch import AVSwitch
+from time import sleep
+from Components.Console import Console
+from enigma import eTimer
+from Components.HTMLComponent import HTMLComponent
+from Components.GUIComponent import GUIComponent
+from enigma import eListboxPythonStringContent, eListbox, gFont, eServiceCenter, eDVBResourceManager
+from enigma import eServiceReference
+from enigma import eMemtest
+from enigma import eSctest
+from enigma import eDVBDB
+from Components.NimManager import nimmanager
+from enigma import eDVBCI_UI,eDVBCIInterfaces
+
+class TestResultList(HTMLComponent, GUIComponent):
+       def __init__(self, source):
+               GUIComponent.__init__(self)
+               self.l = eListboxPythonStringContent()
+               self.list = source
+               self.l.setList(self.list)
+
+       GUI_WIDGET = eListbox
+
+       def postWidgetCreate(self, instance):
+               self.instance.setSelectionEnable(0)
+               self.instance.setContent(self.l)
+
+       def updateList(self,list):
+               self.l.setList(list)
+
+class FactoryTest(Screen):
+       skin = """
+               <screen position="120,125" size="440,400" title="Test Menu" >
+                       <widget name="testlist" position="10,0" size="340,350" />
+                       <widget name="resultlist" position="370,0" size="60,350" />
+                       <widget name="testdate" position="20,350" size="150,25" font="Regular;22" />
+                       <widget name="testversion" position="20,375" size="150,25" font="Regular;22" />
+                       <widget name="mactext" position="180,350" size="230,25" font="Regular;22" />                    
+               </screen>"""
+       def __init__(self, session):
+
+               self["actions"] = NumberActionMap(["OkCancelActions","WizardActions","NumberActions","ColorActions",],
+               {
+                       "left": self.nothing,
+                       "right":self.nothing,
+                       "ok": self.TestAction,
+                       "testexit": self.keyCancel,
+                       "agingstart": self.Agingmode,
+                       "up": self.keyup,
+                       "down": self.keydown,
+                       "0": self.numberaction,
+                       "1": self.numberaction, 
+                       "2": self.numberaction,                 
+                       "3": self.numberaction,                 
+                       "4": self.numberaction,                 
+                       "5": self.numberaction,                 
+                       "6": self.numberaction,                 
+                       "7": self.numberaction,                 
+                       "8": self.numberaction,                 
+                       "9": self.numberaction,                 
+                       "red": self.shutdownaction,
+               }, -2)
+
+               Screen.__init__(self, session)
+               TESTPROGRAM_DATE = "2010-06-25"
+               TESTPROGRAM_VERSION = "Version 00.01"
+
+               self.model = 0
+               self.getModelInfo()
+               
+               self["testdate"]=Label((TESTPROGRAM_DATE))
+               self["testversion"]=Label(("Loading version..."))
+               self["mactext"]=Label(("Loading mac address..."))
+               nimConfig = nimmanager.getNimConfig(0)
+               nimConfig.configMode.slot_id=0
+               nimConfig.configMode.value= "simple"
+               nimConfig.diseqcMode.value="diseqc_a_b"
+               nimConfig.diseqcA.value="160"
+               nimConfig.diseqcB.value="100"
+               if self.model == 0:
+                       nimConfig = nimmanager.getNimConfig(1)
+                       nimConfig.configMode.slot_id=1          
+                       nimConfig.configMode.value= "simple"
+                       nimConfig.diseqcMode.value="diseqc_a_b"
+                       nimConfig.diseqcA.value="130"
+                       nimConfig.diseqcB.value="192"
+               nimmanager.sec.update()         
+               
+               system("cp /usr/lib/enigma2/python/Plugins/SystemPlugins/FactoryTest/testdb /etc/enigma2/lamedb")
+               db = eDVBDB.getInstance()
+               db.reloadServicelist()
+
+               tlist = []
+               if self.model == 0:
+                       self.satetestIndex=0
+                       tlist.append((" 0. Sata & extend hdd test",self.satetestIndex))
+                       self.usbtestIndex=1
+                       tlist.append((" 1. USB test",self.usbtestIndex))
+                       self.fronttestIndex=2
+                       tlist.append((" 2. Front test",self.fronttestIndex))
+                       self.smarttestIndex=3
+                       tlist.append((" 3. Smartcard test",self.smarttestIndex))
+                       self.tuner1_1testIndex=4
+                       tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
+                       self.tuner1_2testIndex=5
+                       tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex))
+                       self.tuner2_1testIndex=6
+                       tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex))
+                       self.tuner2_2testIndex=7
+                       tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex))
+                       self.scarttestIndex=8
+                       tlist.append((" 8. VCR Scart loop",self.scarttestIndex))
+                       self.rs232testIndex=9
+                       tlist.append((" 9. RS232 test",self.rs232testIndex))
+                       self.ethernettestIndex=10
+                       tlist.append(("10. Ethernet & mac test",self.ethernettestIndex))
+#              tlist.append(("11. DRAM test",11))
+#              tlist.append(("12. Flash test",12))
+#              tlist.append(("13. DRAM+Flash test",13))
+                       self.fdefaultIndex=11
+                       tlist.append(("11. Factory default",self.fdefaultIndex))
+                       self.shutdownIndex=12
+                       tlist.append(("12. Shutdown",self.shutdownIndex))
+               elif self.model == 1:
+#                      tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
+                       self.satetestIndex = -1
+                       self.scarttestIndex = -1
+
+
+
+                       self.usbtestIndex=0
+                       tlist.append((" 0. USB test",self.usbtestIndex))
+                       self.fronttestIndex=1
+                       tlist.append((" 1. Front test",self.fronttestIndex))
+                       self.smarttestIndex=2
+                       tlist.append((" 2. Smartcard test",self.smarttestIndex))
+                       self.tuner1_1testIndex=3
+                       tlist.append((" 3. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex))
+                       self.tuner1_2testIndex=4
+                       tlist.append((" 4. T1 V 22k o 16:9 RGB CAM",self.tuner1_2testIndex))
+                       self.tuner2_2testIndex=4
+#                      tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
+#                      tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
+#                      tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
+                       self.rs232testIndex=5
+                       tlist.append((" 5. RS232 test",self.rs232testIndex))
+                       self.ethernettestIndex=6
+                       tlist.append((" 6. Ethernet & mac test",self.ethernettestIndex))
+#              tlist.append(("11. DRAM test",11))
+#              tlist.append(("12. Flash test",12))
+#              tlist.append(("13. DRAM+Flash test",13))
+                       self.fdefaultIndex=7
+                       tlist.append((" 7. Factory default",self.fdefaultIndex))
+                       self.shutdownIndex=8
+                       tlist.append((" 8. Shutdown",self.shutdownIndex))
+               self.menulength= len(tlist)-1
+               self["testlist"] = MenuList(tlist)
+               self.rlist = []
+#              for x in range(15):
+#              for x in range(12):
+               for x in range(self.menulength):
+                       self.rlist.append((".."))
+               self["resultlist"] = TestResultList(self.rlist)
+               self.NetworkState = 0
+               self.first = 0
+
+               self.avswitch = AVSwitch()
+               self.memTest = eMemtest()
+               self.scTest= eSctest()
+               
+               self.feid=0
+               self.agingmode=0
+               self.testing = 0
+
+               self.servicelist = ServiceList()
+               self.oldref = session.nav.getCurrentlyPlayingServiceReference()
+               print "oldref",self.oldref
+               session.nav.stopService() # try to disable foreground service
+               
+               self.tunemsgtimer = eTimer()
+               self.tunemsgtimer.callback.append(self.tunemsg)
+
+               self.camstep = 1
+               self.camtimer = eTimer()
+               self.camtimer.callback.append(self.cam_state)
+               self.getmacaddr()
+               self.getversion()
+               
+               self.tunerlock = 0
+               self.tuningtimer = eTimer()
+               self.tuningtimer.callback.append(self.updateStatus)
+
+               self.satatry = 8
+               self.satatimer = eTimer()
+               self.satatimer.callback.append(self.sataCheck)
+
+       def getModelInfo(self):
+               info = open("/proc/stb/info/version").read()
+               print info,info[:2]
+               if info[:2] == "14":
+                       self.model = 1
+               elif info[:2] == "12":
+                       self.model= 0
+               
+
+       def nothing(self):
+               print "nothing"
+
+       def keyup(self):
+               if self.testing==1:
+                       return
+               if self["testlist"].getCurrent()[1]==0:
+                       self["testlist"].moveToIndex(self.menulength)
+               else:
+                       self["testlist"].up()
+
+
+       def keydown(self):
+               if self.testing==1:
+                       return
+               if self["testlist"].getCurrent()[1]==(self.menulength):
+                       self["testlist"].moveToIndex(0)
+               else:
+                       self["testlist"].down()
+
+       def numberaction(self, number):
+               if self.testing==1:
+                       return
+               index = int(number)
+               self["testlist"].moveToIndex(index)
+
+
+       def updateStatus(self):
+               index = self["testlist"].getCurrent()[1]
+               if index ==self.tuner1_1testIndex or index==self.tuner1_2testIndex:
+                       tunno = 1
+                       result = eSctest.getInstance().getFrontendstatus(0)
+               else:
+                       tunno = 2
+                       result = eSctest.getInstance().getFrontendstatus(1)
+
+               if self.agingmode == 1:
+                       tunno = 1
+                       result = eSctest.getInstance().getFrontendstatus(0)
+                       hv = "Ver"
+                       
+               if index == self.tuner1_2testIndex or index==self.tuner2_2testIndex:
+                       hv = "Ver"
+               else:
+                       hv = "Hor"
+                       
+               print "eSctest.getInstance().getFrontendstatus - %d"%result
+               if result == 0:
+                       self.tunerlock = 0
+                       self.tunemsgtimer.stop()
+                       self.session.nav.stopService()
+                       self.session.open( MessageBox, _("Tune%d %s Locking Fail..."%(tunno,hv)), MessageBox.TYPE_ERROR)        
+                       if self.agingmode==0:
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       self.agingmode = 0
+               else :
+                       self.tunerlock = 1
+                       if self.agingmode==1:
+                               self.session.openWithCallback(self.checkaging,AgingTest)                        
+
+       def getversion(self):
+               try:
+                       fd = open("/proc/stb/info/version","r")
+                       version = fd.read()
+                       self["testversion"].setText(("Version %s"%version))
+               except:
+                       self["testversion"].setText(("Version no load"))
+                       
+
+       def readmac(self, result, retval,extra_args=None):
+               (statecallback) = extra_args
+               if self.macConsole is not None:
+                       if retval == 0:
+                               self.macConsole = None
+                               content =result.splitlines()
+                                for x in content:
+                                        if x.startswith('0x00000010:'):
+                                                macline = x.split()
+                                if len(macline) < 10:
+                                        print 'mac dump read error'
+                                        retrun
+                               mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
+                               self["mactext"].setText(("MAC : "+mac))
+       
+       def getmacaddr(self):
+               try:
+                       cmd = "nanddump -b -o -l 64 -p /dev/mtd4"
+                       self.macConsole = Console()     
+                       self.macConsole.ePopen(cmd, self.readmac)       
+               except:
+                       return
+               
+       def TestAction(self):
+#
+#                      tlist.append((" 0. Sata & extend hdd test",self.satetestIndex=0))
+#                      tlist.append((" 1. USB test",self.usbtestIndex=1))
+#                      tlist.append((" 2. Front test",self.fronttestIndex=2))
+#                      tlist.append((" 3. Smartcard test",self.smarttestIndex=3))
+#                      tlist.append((" 4. T1 H 22K x 4:3 CVBS",self.tuner1_1testIndex=4))
+#                      tlist.append((" 5. T1 V 22k o 16:9 RGB",self.tuner1_2testIndex=5))
+#                      tlist.append((" 6. T2 H 22k x 4:3 YC",self.tuner2_1testIndex=6))
+#                      tlist.append((" 7. T2 V 22k o 16:9 CVBS CAM",self.tuner2_2testIndex=7))
+#                      tlist.append((" 8. VCR Scart loop",self.scarttestIndex=8))
+#                      tlist.append((" 9. RS232 test",self.rs232testIndex=9))
+#                      tlist.append(("10. Ethernet & mac test",self.ethernettestIndex=10))
+#              tlist.append(("11. DRAM test",11))
+#              tlist.append(("12. Flash test",12))
+#              tlist.append(("13. DRAM+Flash test",13))
+#                      tlist.append(("11. Factory default",self.fdefaultIndex=11))
+#                      tlist.append(("12. Shutdown",self.shutdownIndex=12))
+#
+               if self.testing==1:
+                       return
+               print "line - ",self["testlist"].getCurrent()[1]
+               index = self["testlist"].getCurrent()[1]
+               result = 0
+               if index==self.satetestIndex:
+                       self.Test0()
+               elif index==self.fronttestIndex:
+                       self.Test1()
+               elif index>=self.tuner1_1testIndex and index<=self.tuner2_2testIndex:
+                       self.TestTune(index)
+               elif index==self.scarttestIndex:
+                       self.Test6()
+               elif index==self.rs232testIndex:
+                       self.Test7()
+               elif index==self.usbtestIndex:
+                       self.Test8()
+               elif index==self.ethernettestIndex:
+                       self.Test9()
+               elif index == self.smarttestIndex:
+                       self.Test10()
+#              elif index == 11:
+#                      self.Test11()
+#              elif index ==12:
+#                      self.Test12()
+#              elif index==13:
+#                      self.Test13()
+               elif index==self.fdefaultIndex:
+                       self.Test14()
+#              elif index==self.shutdownIndex:
+#                      self.Test15()
+
+       def shutdownaction(self):
+               if self["testlist"].getCurrent()[1] == self.shutdownIndex:
+                       self.Test15()
+
+
+       def Test0(self):
+               self.satatry = 8
+               self.satatimer.start(100,True)
+
+       def sataCheck(self):
+#              print "try", self.satatry
+               if self.satatry == 0:
+                       displayerror = 1
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="try %d"%self.satatry
+                       self["resultlist"].updateList(self.rlist)
+                       self.satatry -= 1
+                       displayerror = 0
+               result = 0
+               checktab=0
+               try:
+                       mtab = open('/etc/mtab','r')
+                       while(1):
+                               disk = mtab.readline().split(' ')
+                               if len(disk) < 2:
+                                       break
+                               if disk[1].startswith('/media/hdd'):
+                                       checktab+=1
+                               elif disk[1].startswith('/media/sdb1'):
+                                       checktab+=10
+                               if checktab==11:
+                                       break
+               except:
+                       checktab = 0
+
+               if checktab==0:
+                       if displayerror==1:
+                               self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       else:
+                               self.satatimer.start(1100,True)
+                       return
+               elif checktab < 11:
+                       if displayerror==1:
+                               self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       else:
+                               self.satatimer.start(1100,True)
+                       return
+
+               try:
+                       if fileExists("/media/sdb1"):
+                               if access("/media/sdb1",F_OK|R_OK|W_OK):
+                                       dummy=open("/media/sdb1/dummy03","w")
+                                       dummy.write("complete")
+                                       dummy.close()
+                                       dummy=open("/media/sdb1/dummy03","r")
+                                       if dummy.readline()=="complete":
+                                               print "complete"
+                                       else:
+                                               result = 1
+                                       dummy.close()
+                                       system("rm /media/sdb1/dummy03")
+                               else:
+                                       result = 1
+                       else:
+                               result = 1
+               except:
+                       result = 1
+               try:
+                       if fileExists("/media/hdd"):
+                               if access("/media/hdd",F_OK|R_OK|W_OK):
+                                       dummy=open("/media/hdd/dummy03","w")
+                                       dummy.write("complete")
+                                       dummy.close()
+                                       dummy=open("/media/hdd/dummy03","r")
+                                       if dummy.readline()=="complete":
+                                               print "complete"
+                                       else:
+                                               result += 1
+                                       dummy.close()
+                                       system("rm /media/hdd/dummy03")
+                               else:
+                                       result = 1
+                       else:
+                               result += 1
+               except:
+                       result += 1
+                       
+               if result ==0:
+                       self.session.open( MessageBox, _("Sata & extend hdd test pass"), MessageBox.TYPE_INFO)
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               elif result == 1:
+                       if displayerror==1:
+                               self.session.open( MessageBox, _("one hdd test error"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       else:
+                               self.satatimer.start(1100,True)
+               else:
+                       if displayerror==1:
+                               self.session.open( MessageBox, _("Sata & extend hdd test error"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       else:
+                               self.satatimer.start(1100,True)
+
+       def Test1(self):
+               if self.model== 0:
+                       self.session.openWithCallback(self.displayresult ,FrontTest)
+               elif self.model == 1:
+                       self.session.openWithCallback(self.displayresult ,FrontTest_solo)               
+
+       def displayresult(self):
+               global fronttest
+               if fronttest == 1:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+
+       INTERNAL_PID_STATUS_NOOP = 0
+       INTERNAL_PID_STATUS_WAITING = 1
+       INTERNAL_PID_STATUS_SUCCESSFUL = 2
+       INTERNAL_PID_STATUS_FAILED = 3
+
+       def TestTune(self,index):       
+               if self.oldref is None:
+                       eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
+                       serviceHandler = eServiceCenter.getInstance()
+                       servicelist = serviceHandler.list(eref)
+                       if not servicelist is None:
+                               ref = servicelist.getNext()
+                       else:
+                               ref = self.getCurrentSelection()
+                               print "servicelist none"
+               else:
+                       ref = self.oldref
+               self.session.nav.stopService() # try to disable foreground service
+               if index==self.tuner1_1testIndex:
+                       ref.setData(0,1)
+                       ref.setData(1,0x6D3)
+                       ref.setData(2,0x3)
+                       ref.setData(3,0xA4)
+                       ref.setData(4,0xA00000)
+                       self.session.nav.playService(ref)
+                       self.avswitch.setColorFormat(0)
+                       self.avswitch.setAspectRatio(0)
+               elif index==self.tuner1_2testIndex:
+                       if self.model == 1:
+                               self.camstep = 1
+                               self.camtimer.start(100,True)
+                       ref.setData(0,0x19)
+                       ref.setData(1,0x1325)
+                       ref.setData(2,0x3ef)
+                       ref.setData(3,0x1)
+                       ref.setData(4,0x64af79)
+#              ref.setData(0,0x19)
+#              ref.setData(1,0x83)
+#              ref.setData(2,0x6)
+#              ref.setData(3,0x85)
+#              ref.setData(4,0x640000)
+                       self.session.nav.playService(ref)
+                       self.avswitch.setColorFormat(1)
+                       self.avswitch.setAspectRatio(6)                 
+               elif index==self.tuner2_1testIndex:
+#                      self.camstep = 1
+#                      self.camtimer.start(100,True)
+                       ref.setData(0,1)
+                       ref.setData(1,0x6D3)
+                       ref.setData(2,0x3)
+                       ref.setData(3,0xA4)
+                       ref.setData(4,0x820000)
+                       self.session.nav.playService(ref)
+                       self.avswitch.setColorFormat(2)                 
+                       self.avswitch.setAspectRatio(0)                 
+               elif index==self.tuner2_2testIndex:
+                       self.camstep = 1
+                       self.camtimer.start(100,True)
+#                      ref.setData(0,0x19)
+#                      ref.setData(1,0x83)
+#                      ref.setData(2,0x6)
+#                      ref.setData(3,0x85)
+#              ref.setData(4,0xC00000)
+#      ikseong - for 22000 tp ( /home/ikseong/share/lamedb_ORF)
+                       ref.setData(0,0x19)
+                       ref.setData(1,0x1325)
+                       ref.setData(2,0x3ef)
+                       ref.setData(3,0x1)
+                       ref.setData(4,0xC00000)
+                       self.session.nav.playService(ref)
+                       self.avswitch.setColorFormat(0)                 
+                       self.avswitch.setAspectRatio(6)
+               self.tuningtimer.start(2000,True)
+               self.tunemsgtimer.start(3000, True)
+
+       def cam_state(self):
+               if self.camstep == 1:
+                       slot = 0
+                       state = eDVBCI_UI.getInstance().getState(slot)
+                       print '-1-stat',state
+                       if state > 0:
+                               self.camstep=2
+                               self.camtimer.start(100,True)
+                       else:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("CAM1_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                               self.tunemsgtimer.stop()
+#                              self.rlist[index]="fail"
+#                              self["resultlist"].updateList(self.rlist)
+               elif self.camstep == 2:
+                       slot = 0
+                       appname = eDVBCI_UI.getInstance().getAppName(slot)
+                       print 'appname',appname
+                       if appname is None:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                               self.tunemsgtimer.stop()                                
+                       else:
+                               self.camstep=3
+                               self.camtimer.start(100,True)           
+               elif self.camstep==3:
+                       slot = 1
+                       state = eDVBCI_UI.getInstance().getState(slot)
+                       print '-2-stat',state
+                       if state > 0:
+                               self.camstep=4
+                               self.camtimer.start(100,True)
+                       else:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("CAM2_NOT_INSERTED\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                               self.tunemsgtimer.stop()                                
+#                              self.rlist[index]="fail"
+#                              self["resultlist"].updateList(self.rlist)
+               elif self.camstep == 4:
+                       slot = 1
+                       appname = eDVBCI_UI.getInstance().getAppName(slot)
+                       print 'appname',appname
+                       if appname is None:
+                               self.session.nav.stopService()
+                               self.session.open( MessageBox, _("NO_GET_APPNAME\nPress exit!"), MessageBox.TYPE_ERROR)
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                               self.tunemsgtimer.stop()                                
+                       else:
+                               self.setSource()
+                               self.camstep = 5
+#                              self.session.open( MessageBox, _("CAM OK!"), MessageBox.TYPE_INFO,2)
+
+#      ikseong - for 22000 tp
+       def setSource(self):
+               filename = ("/proc/stb/tsmux/ci0_input")
+               fd = open(filename,'w')
+               fd.write('B')
+#              fd.write('A')
+               fd.close()
+#              filename = ("/proc/stb/tsmux/ci1_input")
+#              fd = open(filename,'w')
+#              fd.write('CI0')
+#              fd.close()
+               fd=open("/proc/stb/tsmux/input1","w")
+#              fd=open("/proc/stb/tsmux/input0","w")
+               fd.write("CI0")
+               fd.close()
+               print "CI loop test!!!!!!!!!!!!!!"
+                       
+       def resetSource(self):
+               fd=open("/proc/stb/tsmux/input1","w")
+               fd.write("B")
+               fd.close()
+               print "CI loop test end!!!!!!!!!!!!!!"
+               
+       def tunemsg(self):
+               self.tuningtimer.stop()
+               self.session.openWithCallback(self.tuneback, MessageBox, _("%s ok?" %(self["testlist"].getCurrent()[0])), MessageBox.TYPE_YESNO)
+
+       def tuneback(self,yesno):
+               self.session.nav.stopService() # try to disable foreground service
+               if yesno:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                       if self.tunerlock == 0:
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       elif self["testlist"].getCurrent()[1] == 7 and self.camstep < 5:
+                               self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               if self["testlist"].getCurrent()[1] == 6:
+                       self.avswitch.setColorFormat(0)                 
+               self.resetSource()
+               self["resultlist"].updateList(self.rlist)
+                               
+       def Test6(self):
+               self.avswitch.setInput("SCART")
+               sleep(2)
+               self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_YESNO)
+
+       def check6(self,yesno):
+               if yesno:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               self.avswitch.setInput("ENCODER")
+
+       def check7(self):
+               global rstest
+               if rstest == 1:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+
+       def Test7(self):
+               self.session.openWithCallback(self.check7,RS232Test)
+
+       def Agingmode(self):
+               if self.testing==1:
+                       return
+               if self.oldref is None:
+                       eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
+                       serviceHandler = eServiceCenter.getInstance()
+                       servicelist = serviceHandler.list(eref)
+                       if not servicelist is None:
+                               ref = servicelist.getNext()
+                       else:
+                               ref = self.getCurrentSelection()
+                               print "servicelist none"
+               else:
+                       ref = self.oldref
+               self.session.nav.stopService() # try to disable foreground service
+               ref.setData(0,0x19)
+               ref.setData(1,0x1325)
+               ref.setData(2,0x3ef)
+               ref.setData(3,0x1)
+               ref.setData(4,0x64af79)
+#              ref.setData(0,1)
+#              ref.setData(1,0x6D3)
+#              ref.setData(2,0x3)
+#              ref.setData(3,0xA4)
+#              ref.setData(4,0xA00000)
+               self.session.nav.playService(ref)
+               self.avswitch.setColorFormat(0)
+               self.avswitch.setAspectRatio(0)
+               self.tuningtimer.start(2000,True)
+               self.agingmode = 1
+
+       def checkaging(self):
+               global Agingresult
+               if(Agingresult ==1):
+                       self["testlist"].moveToIndex(self.fdefaultIndex)
+                       self.Test14()
+                       self["testlist"].moveToIndex(self.shutdownIndex)
+               self.agingmode = 0
+#                      self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
+                       
+               
+
+       def Test8(self):
+               if self.model==0:                       
+                       try:
+                               result = 0
+                               mtab = open('/etc/mtab','r')
+                               while(1):
+                                       disk = mtab.readline().split(' ')
+                                       if len(disk) < 2:
+                                               break
+                                       if disk[1].startswith('/media/hdd'):
+                                               continue
+                                       elif disk[1].startswith('/media/sdb1'):
+                                               continue
+                                       elif disk[1].startswith('/media/sd'):
+                                               result=result +1
+
+                               if result < 0 :
+                                       result = 0
+                               if result == 3:
+                                       self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)                   
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(3-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       except:
+                               if result < 0 :
+                                       result = 0
+                               if result == 3:
+                                       self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)                   
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(3-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               elif self.model==1:
+                       try:
+                               result = 0
+                               mtab = open('/etc/mtab','r')
+                               while(1):
+                                       disk = mtab.readline().split(' ')
+                                       if len(disk) < 2:
+                                               break
+                                       if disk[1].startswith('/media/'):
+                                               result=result +1
+
+                               if result < 0 :
+                                       result = 0
+                               if result == 2:
+                                       self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)                   
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(2-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       except:
+                               if result < 0 :
+                                       result = 0
+                               if result == 2:
+                                       self.session.open( MessageBox, _("USB test pass %d devices\nPress OK!"%result), MessageBox.TYPE_INFO)                   
+                                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                               else:
+                                       self.session.open( MessageBox, _("USB test error : Success-%d"%result+" Fail-%d\nPress EXIT!"%(2-result)), MessageBox.TYPE_ERROR)
+                                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               
+
+       def pingtest(self):
+               self.testing = 1
+#              system("/etc/init.d/networking stop")
+               system("ifconfig eth0 192.168.0.10")
+#              system("/etc/init.d/networking start")
+               cmd1 = "ping -c 1 192.168.0.100"
+               self.PingConsole = Console()
+               self.PingConsole.ePopen(cmd1, self.checkNetworkStateFinished,self.NetworkStatedataAvail)
+               
+       def checkNetworkStateFinished(self, result, retval,extra_args):
+               (statecallback) = extra_args
+               if self.PingConsole is not None:
+                       if retval == 0:
+                               self.PingConsole = None
+                               content = result.splitlines()
+#                              print 'content',content
+                               x = content[4].split()
+#                              print 'x',x
+                               if x[0]==x[3]:
+                                       statecallback(1)
+                               else:
+                                       statecallback(0)                                        
+                       else:
+                               statecallback(0)
+
+
+       def NetworkStatedataAvail(self,data):
+               global ethtest
+               if data == 1:
+                       ethtest = 1
+                       print "success"
+#                      self.session.open( MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
+                       self.session.openWithCallback(self.openMacConfig ,MessageBox, _("Ping test pass"), MessageBox.TYPE_INFO,2)
+               
+               else:
+                       ethtest = 0
+                       print "fail"
+                       self.session.open( MessageBox, _("Ping test fail\nPress exit"), MessageBox.TYPE_ERROR)
+                       self.macresult()
+
+       def Test9(self):
+               self.pingtest()
+
+       def openMacConfig(self, ret=False):
+               self.session.openWithCallback(self.macresult ,MacConfig)        
+                       
+       def macresult(self):
+               global ethtest
+               if ethtest == 1:
+                       self.rlist[self.ethernettestIndex]="pass"               
+#                      self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self.ethernettestIndex]="fail"               
+#                      self.rlist[self["testlist"].getCurrent()[1]]="fail"
+               self.getmacaddr()
+               self.testing = 0                        
+       
+       def MemTest(self, which):
+               index = which
+               result = 0
+               if index==0:
+                       result = eMemtest.getInstance().dramtest()
+               elif index==1:
+                       result = eMemtest.getInstance().flashtest()
+                       result = 0      #       temp
+               else:
+                       result = eMemtest.getInstance().dramtest()
+                       result = eMemtest.getInstance().flashtest()
+                       result = 0      #       temp
+                       
+               index = index+10
+               
+               if result == 0:
+                       print index,self.rlist[index]
+                       self.rlist[index]="pass"
+               else:
+                       print index,self.rlist[index]
+                       self.rlist[index]="fail"
+               self["resultlist"].updateList(self.rlist)
+                       
+       def scciresult(self):
+               global smartcardtest
+               if smartcardtest == 1:
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+               else:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+
+       def Test10(self):
+               self.session.openWithCallback(self.scciresult ,SmartCardTest)   
+
+       def Test11(self):
+               self.MemTest(1)
+               
+       def Test12(self):
+               self.MemTest(2)
+
+       def Test13(self):
+               self.MemTest(3) 
+
+
+       def Test14(self):
+               try:
+                       system("rm -R /etc/enigma2")
+                       system("cp -R /usr/share/enigma2/defaults /etc/enigma2")
+                       self.rlist[self["testlist"].getCurrent()[1]]="pass"
+                       self["resultlist"].updateList(self.rlist)
+               except:
+                       self.rlist[self["testlist"].getCurrent()[1]]="fail"
+                       self["resultlist"].updateList(self.rlist)
+                       self.session.open( MessageBox, _("Factory reset fail"), MessageBox.TYPE_ERROR)
+
+       def Test15(self):
+               self.session.openWithCallback(self.shutdown ,MessageBox, _("Do you want to shut down?"), MessageBox.TYPE_YESNO)
+
+       def shutdown(self, yesno):
+               if yesno :
+                       from os import _exit
+                       system("/usr/bin/showiframe /boot/backdrop.mvi")
+                       _exit(1)
+               else:
+                       return
+               
+       def keyCancel(self):
+               if self.testing==1:
+                       return
+               print "exit"
+               self.close()
+
+ethtest = 0
+class MacConfig(Screen):
+       skin = """
+               <screen position="100,250" size="520,100" title="Mac Config" >
+                       <eLabel text="Mac Address " position="10,15" size="200,40" font="Regular;30" />         
+                       <widget name="text" position="230,15" size="230,40" font="Regular;30" />
+                       <widget name="text1" position="470,15" size="40,40" font="Regular;30" />                
+                       <eLabel text=" " position="5,55" zPosition="-1" size="510,5" backgroundColor="#02e1e8e6" />             
+                       <widget name="stattext" position="30,75" size="400,25" font="Regular;20" />
+               </screen>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
+               {
+                       "ok": self.keyOk,
+                       "left": self.keyleft,
+                       "right": self.keyright,
+                       "cancel": self.keyCancel,
+               }, -2)
+
+               Screen.__init__(self, session)
+       
+               self.result = 0
+               self.macfd = 0
+               self.macaddr = "000000000000"
+               self.NetworkState = 0
+               self["text"]=Label((self.macaddr))
+               self["text1"]= Label(("< >"))
+               self["stattext"]= Label((""))
+               self.displaymac()
+               self.loadmacaddr()
+               self.getmacaddr()
+               self.pingok=1
+               global ethtest
+               ethtest = 1
+
+       def loadmacaddr(self):
+               try:
+                       result = 0
+                       self.macfd = 0
+                       mtab = open('/etc/mtab','r')
+                       while(1):
+                               disk = mtab.readline().split(' ')
+                               if len(disk) < 2:
+                                       break
+                               if disk[1].startswith('/media/sd') or disk[1].startswith('/media/hdd'):
+                                       print 'try..',disk[1]
+                                       if  fileExists(disk[1]+"/macinfo.txt"):
+                                               self.macfd = open(disk[1]+"/macinfo.txt","r+")
+                                               break
+                       if self.macfd == 0:
+                               self["text"].setText(("cannot read usb!!"))
+                               self["text1"].setText((" "))
+                               self["stattext"].setText((" Press Exit Key."))
+                               self.NetworkState=0
+                               return
+                       
+                       macaddr=self.macfd.readline().split(":")
+                       self.macaddr=macaddr[1]+macaddr[2]+macaddr[3]+macaddr[4]+macaddr[5]+macaddr[6]
+                       self.displaymac()
+                       self.NetworkState = 1
+               except:
+                       self["text"].setText(("cannot read usb!!"))
+                       self["text1"].setText((" "))
+                       self["stattext"].setText((" Press Exit Key."))
+                       self.NetworkState=0
+#                      self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
+
+       def readmac(self, result, retval,extra_args=None):
+               (statecallback) = extra_args
+               if self.macConsole is not None:
+                       if retval == 0:
+                               self.macConsole = None
+                               content =result.splitlines()
+                                for x in content:
+                                        if x.startswith('0x00000010:'):
+                                                macline = x.split()
+                                if len(macline) < 10:
+                                        print 'mac dump read error'
+                                        retrun
+                               mac = macline[5]+":"+macline[6]+":"+macline[7]+":"+macline[8]+":"+macline[9]+":"+macline[10]
+                               self["stattext"].setText(("now : "+mac))
+       
+       def getmacaddr(self):
+               if self.NetworkState==0:
+                       return
+               try:
+                       cmd = "nanddump -b -o -l 64 -p /dev/mtd4"
+                       self.macConsole = Console()     
+                       self.macConsole.ePopen(cmd, self.readmac)       
+               except:
+                       return
+                       
+       def keyleft(self):
+               if self.NetworkState==0 or self.pingok<1:
+                       return
+               macaddress = long(self.macaddr,16)-1
+               if macaddress < 0 :
+                       macaddress = 0xffffffffffff
+               self.macaddr = "%012x"%macaddress
+               self.displaymac()
+
+       def keyright(self):
+               if self.NetworkState==0 or self.pingok<1:
+                       return
+               macaddress = long(self.macaddr,16)+1
+               if macaddress > 0xffffffffffff:
+                       macaddress = 0
+               self.macaddr = "%012x"%macaddress
+               self.displaymac()
+
+       def displaymac(self):
+               macaddr= self.macaddr
+               self["text"].setText(("%02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))))
+
+       def keyOk(self):
+               if self.NetworkState==0 or self.pingok<1:
+                       return
+               try:
+                       macaddr = self.macaddr
+#make_mac_sector 00-99-99-99-00-00 > /tmp/mac.sector
+#flash_eraseall /dev/mtd4
+#nandwrite /dev/mtd4 /tmp/mac.sector -p                        
+                       cmd = "make_mac_sector %02x-%02x-%02x-%02x-%02x-%02x > /tmp/mac.sector"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))
+                       system(cmd)
+                       system("flash_eraseall /dev/mtd4")
+                       system("nandwrite /dev/mtd4 /tmp/mac.sector -p")
+                       macaddress = long(macaddr,16)+1
+                       if macaddress > 0xffffffffffff:
+                               macaddress = 0
+                       macaddr = "%012x"%macaddress
+                       macwritetext = "MAC:%02x:%02x:%02x:%02x:%02x:%02x"%(int(macaddr[0:2],16),int(macaddr[2:4],16),int(macaddr[4:6],16),int(macaddr[6:8],16),int(macaddr[8:10],16),int(macaddr[10:12],16))
+                       self.macfd.seek(0)
+                       self.macfd.write(macwritetext)
+                        self.macfd.close()
+                        system("sync")
+                       self.macaddr = macaddr
+                       self.close()
+               except:
+                       self.session.open( MessageBox, _("Mac address fail"), MessageBox.TYPE_ERROR)
+                       global ethtest
+                       ethtest = 0
+                       self.close()            
+
+       def keyCancel(self):
+               if self.pingok == -1:
+                       return
+               if self.macfd != 0:
+                       self.macfd.close()
+               global ethtest
+               ethtest = 0
+               self.close()
+
+
+sccitest = 0
+
+class ScCiTest(Screen):
+       skin = """
+               <screen position="120,225" size="440,200" title="CI Smartcard Test" >
+                       <widget name="testlist" position="10,0" size="340,120" />
+                       <widget name="resultlist" position="370,0" size="60,120" />
+                       <eLabel text=" " position="5,125" zPosition="-1" size="430,5" backgroundColor="#02e1e8e6" />            
+                       <widget name="text" position="10,140" size="420,50" font="Regular;25" />
+               </screen>"""
+       step=1
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions","OkCancelActions"],
+               {
+                       "ok": self.keyOk,
+                       "up": self.up,
+                       "down":self.down,
+                       "cancel": self.keyCancel,
+               }, -2)
+
+               Screen.__init__(self, session)
+               tlist = []
+               tlist.append(("Smartcard 1 Test",0))
+               tlist.append(("Smartcard 2 Test",1))
+               tlist.append(("CI 1 Test",2))
+               tlist.append(("CI 2 Test",3))
+               self["testlist"] = MenuList(tlist)
+               self.rlist = []
+               for x in range(4):
+                       self.rlist.append((".."))
+               self["resultlist"] = TestResultList(self.rlist)
+               self.result = 0
+               self.removecard = eTimer()
+               self.removecard.callback.append(self.remove_card)
+               self["text"]=Label(("Press OK Key"))
+               self.camstate= eTimer()
+               self.camstate.callback.append(self.cam_state)
+               self.camtry = 5
+               self.camstep = 0
+
+       def keyCancel(self):
+               global sccitest
+               print "result ", self.result
+               if self.result==15:
+                       sccitest=1
+               self.resetSource()
+               self.close()
+
+       def up(self):
+               self["text"].setText(_("Press OK Key"))
+               self["testlist"].instance.moveSelection(self["testlist"].instance.moveUp)
+               
+       def down(self):
+               self["text"].setText(_("Press OK Key"))
+               self["testlist"].instance.moveSelection(self["testlist"].instance.moveDown)
+               
+       def keyOk(self):
+               print "line - ",self["testlist"].getCurrent()[1]
+               index = self["testlist"].getCurrent()[1]
+               result = 0
+               if index==0 or index==1:                
+                       self["text"].setText(_("Insert Card?"))
+                       self.ScTest(True)
+               elif index ==2 or index==3:
+                       self["text"].setText(_("Insert Cam"))
+                       self.CamTest()
+
+       def CamTest(self):
+               self.camtry = 10
+               self.camstep = 1
+               self.camstate.start(1000,True)          
+
+       def setSource(self, cislot):
+               filename = ("/proc/stb/tsmux/ci%d_input"%cislot)
+               fd = open(filename,'w')
+               fd.write('A')
+               fd.close()
+
+       def setInputSource(self, cislot):
+               fd=open("/proc/stb/tsmux/input0","w")
+               if cislot==0:
+                       fd.write("CI0")
+               else:
+                       fd.write("CI1")
+               fd.close()
+                       
+       def resetSource(self):
+               fd=open("/proc/stb/tsmux/input0","w")
+               fd.write("A")
+               fd.close()
+#              fd = open("/proc/stb/tsmux/ci0_input","w")
+#              fd.write("CI0")
+#              fd.close()
+#              fd = open("/proc/stb/tsmux/ci1_input","w")
+#              fd.write("CI1")
+#              fd.close()
+
+       def channelstart(self):
+               ref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
+               ref.setData(0,0x19)
+               ref.setData(1,0x83)
+               ref.setData(2,0x6)
+               ref.setData(3,0x85)
+               ref.setData(4,0x640000)
+               self.session.nav.playService(ref)
+
+       def channelstop(self):
+               self.session.nav.stopService() # try to disable foreground service              
+       
+       def cam_state(self):
+               index = self["testlist"].getCurrent()[1] 
+               if (index-2)==0:
+                       slot = 1
+               else:
+                       slot = 0
+               print 'cam_state', self.camstep,self.camtry
+               if self.camstep == 1:
+                       state = eDVBCI_UI.getInstance().getState(slot)
+                       print 'stat',state
+                       if state == 1:
+                               self.camstep=2
+                               self.camtry=10
+                               self["text"].setText(_("Getting Cam name...."))
+                               self.camstate.start(5000,True)
+                       else:
+                               self.camtry-=1
+                               if self.camtry>0:
+                                       self.camstate.start(1000,True)
+                               else:
+                                       self.session.open( MessageBox, _("NO_NOT_INSERTED"), MessageBox.TYPE_ERROR)
+                                       self.rlist[index]="fail"
+                                       self["resultlist"].updateList(self.rlist)
+
+               elif self.camstep == 2:
+                       appname = eDVBCI_UI.getInstance().getAppName(slot)
+                       print 'appname',appname
+                       if appname is None:
+                               self.camtry-=1
+                               if self.camtry>0:
+                                       self.camstate.start(1000,True)
+                               else:
+                                       self.session.open( MessageBox, _("NO_GET_APPNAME"), MessageBox.TYPE_ERROR)
+                                       self.rlist[index]="fail"
+                                       self["resultlist"].updateList(self.rlist)
+                       else:
+                               self["text"].setText(_("Get Cam name : %s"%appname+". \n Remove Cam!"))
+                               self.channelstart()
+                               self.setInputSource(slot)
+                               self.setSource(slot)
+                               self.camstep=3
+                               self.camtry=30
+                               self.camstate.start(1000,True)          
+               elif self.camstep==3:
+                       state = eDVBCI_UI.getInstance().getState(slot)
+                       print 'stat', state
+                       if state == 0:
+                               self.channelstop()
+                               self.result += (1<<index)
+                               print self.result
+                               self.rlist[index]="pass"
+                               self["text"].setText(_("Press OK Key"))
+                               self["resultlist"].updateList(self.rlist)                               
+                               if index==2:
+                                       self.down()
+                               elif index == 3:
+                                       self.keyCancel()
+                       else:
+                               self.camtry-=1
+                               if self.camtry>0:
+                                       self.camstate.start(1000,True)
+                               else:
+                                       self.channelstop()
+                                       self.session.open( MessageBox, _("NO_REMOVE_CAM"), MessageBox.TYPE_ERROR)
+                                       self.rlist[index]="fail"
+                                       self["resultlist"].updateList(self.rlist)
+
+       def check_smart_card(self,which):
+               index = which
+               result  = 0
+               if which==0:
+                       result = eSctest.getInstance().check_smart_card("/dev/sci0")
+               elif which ==1:
+                       result = eSctest.getInstance().check_smart_card("/dev/sci1")
+               else:
+                       result = -1
+
+               print result                    
+               
+               if result == 0:
+                       print 'pass'
+               else:
+                       if result ==-1:
+                               self.session.open( MessageBox, _("1:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
+                       elif result == -2:
+                               self.session.open( MessageBox, _("1:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
+                       elif result == -3:
+                               self.session.open( MessageBox, _("1:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
+                       elif result == -5:
+                               self.session.open( MessageBox, _("1:SC_READ_TIMEOUT"), MessageBox.TYPE_ERROR)
+                       self.rlist[which]="fail"
+                       self["resultlist"].updateList(self.rlist)
+               return result
+               
+       def remove_card(self):
+               index = self["testlist"].getCurrent()[1]
+               if index==0:
+                       result = eSctest.getInstance().eject_smart_card("/dev/sci0")    
+               elif index==1:
+                       result = eSctest.getInstance().eject_smart_card("/dev/sci1")    
+               print 'remove result' ,result
+               if result == 0:
+                       self.rlist[index]="pass"
+                       self.result += (1<<index)
+               else:
+                       if result ==-1:
+                               self.session.open( MessageBox, _("2:NO_DEV_FOUND"), MessageBox.TYPE_ERROR)
+                       elif result == -2:
+                               self.session.open( MessageBox, _("2:SC_NOT_INSERTED"), MessageBox.TYPE_ERROR)
+                       elif result == -3:
+                               self.session.open( MessageBox, _("2:SC_NOT_VALID_ATR"), MessageBox.TYPE_ERROR)
+                       elif result == -4:
+                               self.session.open( MessageBox, _("2:SC_NOT_REMOVED"), MessageBox.TYPE_ERROR)
+                       self.rlist[index]="fail"
+               self["resultlist"].updateList(self.rlist)
+               self["text"].setText(_("Press OK Key"))
+               self.down()
+               return result
+       
+
+       def ScTest(self, yesno):
+               if yesno==False:
+                       return
+               index = self["testlist"].getCurrent()[1]
+               result = self.check_smart_card(index)
+               if result==0:
+                       self.removecard.start(100,True)
+                       self["text"].setText(_("Read Ok. Remove Card!"))
+               else:
+                       return
+
+smartcardtest = 0
+
+class SmartCardTest(Screen):
+       skin = """
+               <screen position="300,240" size="160,120" title="SmartCard Test" >
+                       <widget name="text" position="10,10" size="140,100" font="Regular;22" />
+               </screen>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
+               {
+                       "cancel": self.keyCancel,
+                       "ok" : self.keyCancel
+               }, -2)
+
+               Screen.__init__(self, session)
+#              self["text"]=Label(("Press Key LEFT"))
+               self["text"]=Label(("Testing Smartcard 1..."))
+               self.step = 0
+               self.smartcardtimer = eTimer()
+               self.smartcardtimer.callback.append(self.check_smart_card)
+               self.smartcardtimer.start(100,True)
+               self.closetimer = eTimer()
+               self.closetimer.callback.append(self.close)
+               self.smartcard=0
+               global smartcardtest
+               smartcardtest = 0
+               self.Testmode = 0
+               self.model = 0
+               self.check_mode()
+
+       def check_mode(self):
+               try:
+                       fd = open("/proc/stb/info/version","r")
+                       version = fd.read()
+                       if int(version,16) <= 0x1200A3:
+                               self.Testmode = 0
+                       else:
+                               self.Testmode = 1
+                       if int(version,16) < 0x130000:
+                               self.model = 0
+                       elif int(version,16) > 0x140000:
+                               self.model = 1
+               except:
+                       self.Testmode = 0
+
+       def check_smart_card(self):
+               global smartcardtest
+               index = self.smartcard
+               result  = 0
+               if index==0:
+                       if self.Testmode==0:
+                               result = eSctest.getInstance().check_smart_card("/dev/sci0")
+                       else:
+                               result = eSctest.getInstance().n_check_smart_card("/dev/sci0")                  
+               elif index ==1:
+                       if self.Testmode==0:
+                               result = eSctest.getInstance().check_smart_card("/dev/sci1")
+                       else:
+                               result = eSctest.getInstance().n_check_smart_card("/dev/sci1")                  
+               else:
+                       result = -1
+
+               print result                    
+               
+               if result == 0:
+                       print 'pass'
+                       if(index== 0 and self.model== 0):
+                               self.smartcard = 1
+                               self["text"].setText(_("Testing Smartcard 2..."))
+                               self.smartcardtimer.start(100,True)
+                               return
+                       elif (index==1 or self.model==1):
+                               smartcardtest = 1
+#                              self.session.open( MessageBox, _("Smart Card OK!!"), MessageBox.TYPE_INFO,2)
+                               self.step = 1
+                               self["text"].setText(_("Smart Card OK!!"))
+                               self.closetimer.start(2000,True)
+                               self.smartcardtimer.stop()
+#                      self.session.openWithCallback(self.check6, MessageBox, _("Scart loop ok?"), MessageBox.TYPE_INFO)
+               else:
+#                      if result ==-1:
+#                              self.session.open( MessageBox, _("%d:NO_DEV_FOUND"%(index+1)), MessageBox.TYPE_ERROR)
+#                      elif result == -2:
+#                              self.session.open( MessageBox, _("%d:SC_NOT_INSERTED"%(index+1)), MessageBox.TYPE_ERROR)
+#                      elif result == -3:
+#                              self.session.open( MessageBox, _("%d:SC_NOT_VALID_ATR"%(index+1)), MessageBox.TYPE_ERROR)
+#                      elif result == -5:
+#                              self.session.open( MessageBox, _("%d:SC_READ_TIMEOUT"%(index+1)), MessageBox.TYPE_ERROR)
+                       if(index==0):
+                               self["text"].setText(_("Smart Card 1 Error!\nerrorcode=%d"%result))
+                       elif (index==1):
+                               self["text"].setText(_("Smart Card 2 Error!\nerrorcode=%d"%result))
+                       self.closetimer.start(2000,True)
+                       self.smartcardtimer.stop()
+
+                               
+       def keyCancel(self):
+               self.close()
+
+       
+
+fronttest = 0
+
+class FrontTest(Screen):
+       skin = """
+               <screen position="260,240" size="200,180" title="Front Test" >
+                       <widget name="text" position="10,10" size="180,160" font="Regular;22" />
+               </screen>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
+               {
+                       "ok": self.keyOk,
+                       "up":self.keyUp,
+                       "down":self.keyDown,                    
+                       "cancel": self.keyCancel,
+               }, -2)
+
+               Screen.__init__(self, session)
+               self["text"]=Label(("Wheel LEFT"))
+               self.step = 1
+               
+               self.fronttimer= eTimer()
+               self.fronttimer.callback.append(self.FrontAnimate)
+               self.frontturnonoff = 0
+               eSctest.getInstance().VFD_Open()
+               self.keytimeout = eTimer()
+               self.keytimeout.callback.append(self.KeyTimeOut)
+               self.keytimeout.start(5000,True)
+
+       def KeyTimeOut(self):
+               if self.step == 1:
+                       self["text"].setText(("Wheel LEFT ERROR"))
+               elif self.step ==2 :
+                       self["text"].setText(("Wheel RIGHT ERROR"))
+               elif self.step == 3:
+                       self["text"].setText(("Wheel BUTTON ERROR"))
+               self.step = 0
+#              self.keyCancel()
+                               
+       def keyCancel(self):
+               global fronttest
+               self.fronttimer.stop()
+               eSctest.getInstance().VFD_Close()
+               if self.step==4:
+                       fronttest = 1
+               else:
+                       fronttest = 0
+               self.close()
+
+       def keyDown(self):
+               if self.step==2:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 3
+                       self["text"].setText(_("Press Front Wheel"))
+
+       def keyUp(self):
+               if self.step==1:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step=2
+                       self["text"].setText(_("Wheel RIGHT"))
+#              else:
+#                      print ""
+
+       def keyOk(self):
+               if self.step == 3:
+                       self.keytimeout.stop()
+                       self.step =4
+                       self.fronttimer.start(1000,True)
+                       self["text"].setText(("Front Test OK!\nPress Exit Key"))
+#              elif self.step==4:
+#                      global fronttest
+#                      self.fronttimer.stop()
+#                      eSctest.getInstance().VFD_Close()
+#                      fronttest = 1
+#                      self.close()
+
+       def FrontAnimate(self):
+               if (self.frontturnonoff==0):
+                       eSctest.getInstance().turnon_VFD()
+                       self.frontturnonoff = 1
+               else:
+                       self.frontturnonoff = 0
+                       eSctest.getInstance().turnoff_VFD()
+               self.fronttimer.start(1000,True)
+               
+
+class FrontTest_solo(Screen):
+       skin = """
+               <screen position="260,240" size="200,180" title="Front Test" >
+                       <widget name="text" position="10,10" size="180,160" font="Regular;22" />
+               </screen>"""
+
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions","GlobalActions"],
+               {
+                       "ok": self.keyOk,
+                       "cancel": self.keyCancel,
+                       "left": self.keyleft,
+                       "right": self.keyright,
+                       "power_down": self.keypower,
+                       "volumeUp": self.keyvolup,
+                       "volumeDown": self.keyvoldown,
+               }, -2)
+
+               Screen.__init__(self, session)
+               self["text"]=Label(("Press Front STANDBY"))
+               self.step = 1
+               
+               self.fronttimer= eTimer()
+               self.fronttimer.callback.append(self.FrontAnimate)
+               self.frontturnonoff = 0
+               eSctest.getInstance().VFD_Open()
+               self.keytimeout = eTimer()
+               self.keytimeout.callback.append(self.KeyTimeOut)
+               self.keytimeout.start(5000,True)
+
+       def KeyTimeOut(self):
+               if self.step == 1:
+                       self["text"].setText(("Front STANDBY ERROR\nPress exit!"))
+               elif self.step == 2 :
+                       self["text"].setText(("Front CH - ERROR\nPress exit!"))
+               elif self.step == 3:
+                       self["text"].setText(("Front CH + ERROR\nPress exit!"))
+               elif self.step == 4 :
+                       self["text"].setText(("Front VOL - ERROR\nPress exit!"))
+               elif self.step == 5:
+                       self["text"].setText(("Front VOL + ERROR\nPress exit!"))
+                       
+               self.step = 0
+#              self.keyCancel()
+
+       def keypower(self):
+               if self.step== 1:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 2
+                       self["text"].setText(_("Press Front CH -"))
+                       
+       def keyright(self):
+               if self.step== 3:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 4
+                       self["text"].setText(_("Press Front VOL -"))
+                       
+       def keyleft(self):
+               if self.step== 2:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 3
+                       self["text"].setText(_("Press Front CH +"))
+
+       def keyvolup(self):
+               if self.step== 5:
+                       self.keytimeout.stop()
+                       self.step = 6
+                       self.fronttimer.start(1000,True)
+                       self["text"].setText(_("Front LED OK?\n\nyes-ok\nno-exit"))                     
+#                      self["text"].setText(("Front Test OK!\nPress Exit Key"))
+               
+       def keyvoldown(self):
+               if self.step== 4:
+                       self.keytimeout.stop()
+                       self.keytimeout.start(5000,True)
+                       self.step = 5
+                       self["text"].setText(_("Press Front VOL +"))
+
+       def checkled(self, yesno):
+               if yesno :
+                       self.step=6
+               else:
+                       self.step=0
+               self.keyCancel()
+                       
+       def keyCancel(self):
+               global fronttest
+               self.fronttimer.stop()
+               eSctest.getInstance().VFD_Close()
+               fronttest = 0
+               self.close()
+
+       def keyOk(self):
+               global fronttest
+               self.fronttimer.stop()
+               eSctest.getInstance().VFD_Close()
+               if self.step == 6:
+                       fronttest = 1
+               self.close()
+
+       def FrontAnimate(self):
+               if (self.frontturnonoff==0):
+                       eSctest.getInstance().turnon_VFD()
+                       self.frontturnonoff = 1
+               else:
+                       self.frontturnonoff = 0
+                       eSctest.getInstance().turnoff_VFD()
+               self.fronttimer.start(1000,True)
+
+
+       
+
+rstest = 0
+
+import select
+
+class RS232Test(Screen):
+       skin = """
+               <screen position="300,240" size="160,100" title="RS232 Test" >
+                       <widget name="text" position="10,10" size="140,80" font="Regular;22" />
+               </screen>"""
+       step=1
+       def __init__(self, session):
+               self["actions"] = ActionMap(["DirectionActions", "OkCancelActions"],
+               {
+                       "cancel": self.keyCancel,
+               }, -2)
+
+               Screen.__init__(self, session)
+               self["text"]=Label(("Press \"Enter\" Key"))
+               self.timer = eTimer()
+               self.timer.callback.append(self.checkrs232)
+               self.timer.start(100, True)
+
+       def checkrs232(self):
+               global rstest
+               try:
+                       rs=open('/dev/ttyS0','r')
+                       rd = [rs]
+                       r,w,e = select.select(rd, [], [], 10)
+                       if r:
+                               input = rs.read(1)
+                               if input == "\n":
+#                              if input == "m":
+                                       rstest = 1
+                               else:
+                                       rstest = 0 
+                       else:
+                               rstest = 0
+               except:
+                       print 'error'
+                       rstest = 0
+               self.close()
+
+       def keyCancel(self):
+               self.close()
+
+Agingresult = 0
+
+class AgingTest(Screen):
+       skin = """
+               <screen position="200,240" size="250,100" title="Aging Test" >
+                       <widget name="text1" position="10,10" size="230,40" font="Regular;22" />
+                       <widget name="text2" position="10,50" size="230,40" font="Regular;22" />
+               </screen>"""
+       step=1
+       def __init__(self, session):
+               self["actions"] = ActionMap(["WizardActions","GlobalActions"],
+               {
+                       "agingend": self.keyEnd,
+                       "agingfinish": self.keyFinish,
+                       "volumeUp": self.nothing,
+                       "volumeDown": self.nothing,
+                       "volumeMute": self.nothing,             
+               }, -2)
+
+               Screen.__init__(self, session)
+               self["text1"]=Label(("Exit - Press Pause Key"))
+               self["text2"]=Label(("Reset - Press Stop Key"))
+#              self.servicelist = ServiceList()
+#              self.oldref = session.nav.getCurrentlyPlayingServiceReference()
+#              print "oldref",self.oldref
+#              session.nav.stopService() # try to disable foreground service
+#              self.chstart()
+               self.tunerlock = 0
+               self.tuningtimer = eTimer()
+               self.tuningtimer.callback.append(self.updateStatus)
+#              self.tuningtimer.start(2000,True)
+
+
+       def updateStatus(self):
+               result = eSctest.getInstance().getFrontendstatus(0)             
+               hv = "Ver"
+                       
+               print "eSctest.getInstance().getFrontendstatus - %d"%result
+               if result == 0:
+                       self.tunerlock = 0
+                       self.session.nav.stopService()
+                       self.session.open( MessageBox, _("Tune 1 Ver Locking Fail..."), MessageBox.TYPE_ERROR)  
+               elif result==1 :
+                       self.tunerlock = 1
+               else:
+                       self.tunerlock = 0
+                       self.session.nav.stopService()
+                       self.session.open( MessageBox, _("Tune 1 Ver Error %d..."%result), MessageBox.TYPE_ERROR)       
+
+
+       def nothing(self):
+               print "nothing"
+
+       def chstart(self):
+               if self.oldref is None:
+                       eref = eServiceReference("1:0:19:1324:3EF:1:C00000:0:0:0")
+                       serviceHandler = eServiceCenter.getInstance()
+                       servicelist = serviceHandler.list(eref)
+                       if not servicelist is None:
+                               ref = servicelist.getNext()
+                       else:
+                               ref = self.getCurrentSelection()
+                               print "servicelist none"
+               else:
+                       ref = self.oldref
+               self.session.nav.stopService() # try to disable foreground service
+               ref.setData(0,0x19)
+               ref.setData(1,0x83)
+               ref.setData(2,0x6)
+               ref.setData(3,0x85)
+               ref.setData(4,0x640000)
+               self.session.nav.playService(ref)
+
+       def keyEnd(self):
+               global Agingresult
+               Agingresult = 0
+               self.session.nav.stopService() # try to disable foreground service
+               self.close()
+
+       def keyFinish(self):
+               global Agingresult
+               Agingresult = 1
+               self.session.nav.stopService() # try to disable foreground service
+               self.close()
+               
+session = None
+
+       
+def cleanup():
+       global Session
+       Session = None
+       global Servicelist
+       Servicelist = None
+
+def main(session, servicelist, **kwargs):
+       global Session
+       Session = session
+       global Servicelist
+       Servicelist = servicelist
+       bouquets = Servicelist.getBouquetList()
+       global bouquetSel
+       bouquetSel = Session.openWithCallback(cleanup, FactoryTest)
+
+#def Plugins(**kwargs):
+#      return PluginDescriptor(name=_("Factory Test"), description="Test App for Factory", where = PluginDescriptor.WHERE_EXTENSIONSMENU, fnc=main)
diff --git a/lib/python/Plugins/SystemPlugins/FactoryTest/testdb b/lib/python/Plugins/SystemPlugins/FactoryTest/testdb
new file mode 100755 (executable)
index 0000000..6829883
--- /dev/null
@@ -0,0 +1,30 @@
+eDVB services /4/
+transponders
+0064af79:03ef:0001
+       s 12153000:22000000:1:2:100:2:0:1:2:0:2
+/
+00820000:0003:00a4
+       s 10900000:26850000:0:0:130:2:0
+/
+00a00000:0003:00a4
+       s 10900000:26850000:0:0:160:2:0
+/
+00c00000:03ef:0001
+       s 12153000:22000000:1:2:192:2:0:1:2:0:2
+/
+end
+services
+06d3:00820000:0003:00a4:1:0
+747 Channel [V] China
+p:STAR,c:000203,c:01028c,c:031ffe,f:40
+06d3:00a00000:0003:00a4:1:0
+747 Channel [V] China
+p:STAR,c:000203,c:01028c,c:031ffe,f:40
+1325:00c00000:03ef:0001:25:0
+ASTRA HD
+p:BetaDigital,f:40
+1325:0064af79:03ef:0001:25:0
+ASTRA HD
+p:BetaDigital,f:40
+end
+Have a lot of bugs!
diff --git a/lib/python/Plugins/SystemPlugins/Fancontrol/Makefile.am b/lib/python/Plugins/SystemPlugins/Fancontrol/Makefile.am
new file mode 100644 (file)
index 0000000..dfa6e80
--- /dev/null
@@ -0,0 +1,7 @@
+installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/Fancontrol
+
+SUBDIRS = meta
+
+install_PYTHON =       \
+       __init__.py \
+       plugin.py 
diff --git a/lib/python/Plugins/SystemPlugins/Fancontrol/__init__.py b/lib/python/Plugins/SystemPlugins/Fancontrol/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/lib/python/Plugins/SystemPlugins/Fancontrol/meta/Makefile.am b/lib/python/Plugins/SystemPlugins/Fancontrol/meta/Makefile.am
new file mode 100644 (file)
index 0000000..df0956d
--- /dev/null
@@ -0,0 +1,3 @@
+installdir = $(datadir)/meta
+
+dist_install_DATA = plugin_fancontrol.xml
diff --git a/lib/python/Plugins/SystemPlugins/Fancontrol/meta/plugin_fancontrol.xml b/lib/python/Plugins/SystemPlugins/Fancontrol/meta/plugin_fancontrol.xml
new file mode 100644 (file)
index 0000000..b766e34
--- /dev/null
@@ -0,0 +1,17 @@
+<default>
+         <prerequisites>
+                    <tag type="System" />
+         </prerequisites>
+          <info language="en">
+                    <author>ikseong</author>
+                    <name>Fancontrol</name>
+                    <packagename>enigma2-plugin-systemplugins-fancontrol</packagename>
+                    <shortdescription>Fan Control setting in standbymode.</shortdescription>
+                    <description>The Fan control turn on, turn off, modify fan action time on standbymode.
+                    </description>
+          </info>
+         <files type="package"> <!-- without version, without .ipk -->
+               <file type="package" name="enigma2-plugin-systemplugins-fancontrol" />
+       </files>
+
+</default>
diff --git a/lib/python/Plugins/SystemPlugins/Fancontrol/plugin.py b/lib/python/Plugins/SystemPlugins/Fancontrol/plugin.py
new file mode 100644 (file)
index 0000000..97a61ee
--- /dev/null
@@ -0,0 +1,172 @@
+from Screens.Screen import Screen
+from Screens.MessageBox import MessageBox
+from Plugins.Plugin import PluginDescriptor
+from Components.ActionMap import ActionMap,NumberActionMap
+from Components.config import config
+from Components.config import config, getConfigListEntry, ConfigInteger, ConfigSubsection, ConfigSelection
+from Components.ConfigList import ConfigListScreen
+from Components.ActionMap import ActionMap
+from Components.Sources.StaticText import StaticText
+
+
+config.plugins.fancontrols = ConfigSubsection()
+config.plugins.fancontrols.standbymode = ConfigSelection(default = "off", choices = [
+       ("off", _("off")), ("on", _("on"))])
+config.plugins.fancontrols.usetimer = ConfigSelection(default = "off", choices = [
+       ("off", _("no")), ("on", _("yes"))])
+config.plugins.fancontrols.fanontime = ConfigInteger(default = 5, limits = (1, 100))
+config.plugins.fancontrols.fanofftime = ConfigInteger(default = 60, limits = (1, 100))
+
+class FancontrolConfiguration(Screen, ConfigListScreen):
+       skin = """
+               <screen name="FancontrolConfiguration" position="center,center" size="560,300" title="Standbymode Fancontrol settings" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" foregroundColor="#ececec" backgroundColor="#1f771f" transparent="1" />
+                       <widget name="config" zPosition="2" position="5,50" size="550,200" scrollbarMode="showOnDemand" transparent="1" />
+               </screen>"""
+       def __init__(self, session):
+               Screen.__init__(self, session)
+               self.session = session
+               self.standbyEntry = None
+               self.usetimerEntry = None
+               self.fanontimeEntry = None
+               self.fanofftimeEntry = None
+
+               self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ],
+               {
+                       "ok": self.keySave,
+                       "cancel": self.keyCancel,
+                       "red": self.keyCancel,
+                       "green": self.keySave,
+               }, -2)
+
+               self.list = []
+               ConfigListScreen.__init__(self, self.list,session = self.session)
+#              self.getFaninfo()
+               self.createSetup()
+
+               self["key_red"] = StaticText(_("Close"))
+               self["key_green"] = StaticText(_("Save"))
+
+       def keyLeft(self):
+               ConfigListScreen.keyLeft(self)
+               self.newConfig()
+
+       def keyRight(self):
+               ConfigListScreen.keyRight(self)
+               self.newConfig()
+
+       def getFaninfo(self):
+               try:
+                       value=int(open('/proc/stb/system/standby_fan_off','r').read())
+                       if value is 0:
+                               config.plugins.fancontrols.standbymode.value="on"
+                       else:
+                               config.plugins.fancontrols.standbymode.value="off"
+                       value=int(open('/proc/stb/system/use_fan_timer','r').read())
+                       if value is 0:
+                               config.plugins.fancontrols.usetimer.value = "off"
+                       else:
+                               config.plugins.fancontrols.usetimer.value = "on"
+                       time=int(open('/proc/stb/system/fan_on_time','r').read())
+                       if time > 0 and time < 101:
+                               config.plugins.fancontrols.fanontime.value = time
+                       else:
+                               config.plugins.fancontrols.fanontime.value = 1
+                       time=int(open('/proc/stb/system/fan_off_time','r').read())
+                       if time > 0 and time < 101:
+                               config.plugins.fancontrols.fanofftime.value = time
+                       else:
+                               config.plugins.fancontrols.fanofftime.value = 1
+               except:
+                       print 'Error read proc of fan'
+       
+
+       def createSetup(self):
+               self.list = []
+               self.standbyEntry = getConfigListEntry(_("Fan basic action"), config.plugins.fancontrols.standbymode)
+               self.usetimerEntry = getConfigListEntry(_("Use Fan timer"), config.plugins.fancontrols.usetimer)
+               self.fanontimeEntry = getConfigListEntry(_("Fan on duration time"), config.plugins.fancontrols.fanontime)
+               self.fanofftimeEntry = getConfigListEntry(_("Fan off duration time"), config.plugins.fancontrols.fanofftime)
+
+               self.list.append( self.standbyEntry )
+               if config.plugins.fancontrols.standbymode.value is "off":
+                       self.list.append( self.usetimerEntry )
+                       if config.plugins.fancontrols.usetimer.value is not "off":
+                               self.list.append( self.fanontimeEntry )
+                               self.list.append( self.fanofftimeEntry )
+               
+               self["config"].list = self.list
+               self["config"].l.setList(self.list)
+               if not self.selectionChanged in self["config"].onSelectionChanged:
+                       self["config"].onSelectionChanged.append(self.selectionChanged)
+
+       def newConfig(self):
+               if self["config"].getCurrent() == self.usetimerEntry or self["config"].getCurrent() == self.standbyEntry:
+                       self.createSetup()
+
+       def selectionChanged(self):
+               current = self["config"].getCurrent()
+               print current
+
+       def cancelConfirm(self, result):
+               if not result:
+                       return
+               for x in self["config"].list:
+                       x[1].cancel()
+               self.close()
+
+                       
+       def keyCancel(self):
+               print "cancel"
+               if self["config"].isChanged():
+                       self.session.openWithCallback(self.cancelConfirm, MessageBox, _("Really close without saving settings?"))
+               else:
+                       self.close()
+
+       def keySave(self):
+               ConfigListScreen.keySave(self)
+               try:
+                       if config.plugins.fancontrols.standbymode.value is "on":
+                               open('/proc/stb/system/standby_fan_off','w').write('0')
+                       else:
+                               open('/proc/stb/system/standby_fan_off','w').write('1')
+                               if config.plugins.fancontrols.usetimer.value is "off":
+                                       open('/proc/stb/system/use_fan_timer','w').write('0')
+                               else:
+                                       open('/proc/stb/system/use_fan_timer','w').write('1')
+                                       open('/proc/stb/system/fan_on_time','w').write('%s'%config.plugins.fancontrols.fanontime.value)
+                                       open('/proc/stb/system/fan_off_time','w').write('%s'%config.plugins.fancontrols.fanofftime.value)
+               except:
+                       print 'Error write proc of fan'
+               
+       
+def openconfig(session, **kwargs):
+       session.open(FancontrolConfiguration)
+
+def selSetup(menuid, **kwargs):
+       if menuid != "system":
+               return [ ]
+
+       return [(_("Fan Control"), openconfig, "fancontrol_config", 70)]
+
+def setfancontrol(reason, **kwargs):
+       try:
+               if config.plugins.fancontrols.standbymode.value is "on":
+                       open('/proc/stb/system/standby_fan_off','w').write('0')
+               else:
+                       open('/proc/stb/system/standby_fan_off','w').write('1')
+                       if config.plugins.fancontrols.usetimer.value is "off":
+                               open('/proc/stb/system/use_fan_timer','w').write('0')
+                       else:
+                               open('/proc/stb/system/use_fan_timer','w').write('1')
+                               open('/proc/stb/system/fan_on_time','w').write('%s'%config.plugins.fancontrols.fanontime.value)
+                               open('/proc/stb/system/fan_off_time','w').write('%s'%config.plugins.fancontrols.fanofftime.value)
+       except:
+               print 'Error to set fan control'
+
+def Plugins(**kwargs):
+       return [PluginDescriptor(name = "Fancontrols", description = "check Fan Control settings", where = PluginDescriptor.WHERE_AUTOSTART, fnc = setfancontrol),
+       PluginDescriptor(name=_("Fan control"), description="Fan Control", where = PluginDescriptor.WHERE_MENU, fnc=selSetup)]
index a757b53..cf5608b 100755 (executable)
@@ -1,3 +1,3 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_hotplug.xml
index 9cc538f..db75abe 100755 (executable)
@@ -4,7 +4,7 @@ SUBDIRS = SoftwareManager FrontprocessorUpgrade PositionerSetup Satfinder \
        SkinSelector SatelliteEquipmentControl Videomode VideoTune Hotplug \
        DefaultServicesScanner NFIFlash DiseqcTester CommonInterfaceAssignment \
        CrashlogAutoSubmit CleanupWizard VideoEnhancement WirelessLan NetworkWizard \
-       TempFanControl
+       TempFanControl FactoryTest Fancontrol
 
 install_PYTHON =       \
        __init__.py
old mode 100644 (file)
new mode 100755 (executable)
index 6463f17..acf9251
@@ -274,7 +274,7 @@ class NFIDownload(Screen):
 
        def feed_failed(self, failure_instance):
                print "[feed_failed] " + str(failure_instance)
-               self["infolabel"].text = _("Could not connect to Dreambox .NFI Image Feed Server:") + "\n" + failure_instance.getErrorMessage() + "\n\n" + _("Please check your network settings!")
+               self["infolabel"].text = _("Could not connect to STB .NFI Image Feed Server:") + "\n" + failure_instance.getErrorMessage() + "\n\n" + _("Please check your network settings!")
                self.downloading(False)
 
        def feed_finished(self, feedhtml):
@@ -486,7 +486,7 @@ class NFIDownload(Screen):
 
        def dmesg_cleared(self, answer):
                self.container.appClosed.remove(self.dmesg_cleared)
-               self.msgbox = self.session.open(MessageBox, _("Please disconnect all USB devices from your Dreambox and (re-)attach the target USB stick (minimum size is 64 MB) now!"), MessageBox.TYPE_INFO)
+               self.msgbox = self.session.open(MessageBox, _("Please disconnect all USB devices from your STB and (re-)attach the target USB stick (minimum size is 64 MB) now!"), MessageBox.TYPE_INFO)
                hotplugNotifier.append(self.hotplugCB)
 
        def hotplugCB(self, dev, action):
@@ -650,7 +650,7 @@ class NFIDownload(Screen):
                                wizardfd.write("image: "+self["feedlist"].getNFIname()+'\n')
                                wizardfd.write("configuration: "+self.backup_file+'\n')
                                wizardfd.close()
-               self.session.open(MessageBox, _("To update your Dreambox firmware, please follow these steps:\n1) Turn off your box with the rear power switch and plug in the bootable USB stick.\n2) Turn mains back on and hold the DOWN button on the front panel pressed for 10 seconds.\n3) Wait for bootup and follow instructions of the wizard."), type = MessageBox.TYPE_INFO)
+               self.session.open(MessageBox, _("To update your STB firmware, please follow these steps:\n1) Turn off your box with the rear power switch and plug in the bootable USB stick.\n2) Turn mains back on and hold the DOWN button on the front panel pressed for 10 seconds.\n3) Wait for bootup and follow instructions of the wizard."), type = MessageBox.TYPE_INFO)
 
        def closeCB(self):
                try:
index 0633e7c..598c071 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_nfiflash.xml
 
index c81f4ca..e0451dd 100755 (executable)
@@ -8,9 +8,9 @@
                     <author>Dream Multimedia</author>
                     <name>NFIFlash</name>
                     <packagename>enigma2-plugin-systemplugins-nfiflash</packagename>
-                    <shortdescription>Restore your Dreambox with a USB stick.</shortdescription>
-                    <description>With the NFIFlash extension it is possible to prepare a USB stick with an Dreambox image.\n
-                    It is then possible to flash your Dreambox with the image on that stick.
+                    <shortdescription>Restore your STB with a USB stick.</shortdescription>
+                    <description>With the NFIFlash extension it is possible to prepare a USB stick with an STB image.\n
+                    It is then possible to flash your STB with the image on that stick.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_nfiflash_en.jpg" />
           </info>
@@ -18,9 +18,9 @@
                     <author>Dream Multimedia</author>
                     <name>NFIFlash</name>
                     <packagename>enigma2-plugin-systemplugins-nfiflash</packagename>
-                    <shortdescription>Wiederherstellen Ihrer Dreambox mittels USB-Stick.</shortdescription>
-                    <description>Mit der NFIFlash Erweiterung können Sie ein Dreambox Image auf einen USB-Stick laden.\
-                    Mit diesem USB-Stick ist es dann möglich Ihre Dreambox zu flashen.
+                    <shortdescription>Wiederherstellen Ihrer STB mittels USB-Stick.</shortdescription>
+                    <description>Mit der NFIFlash Erweiterung können Sie ein STB Image auf einen USB-Stick laden.\
+                    Mit diesem USB-Stick ist es dann möglich Ihre STB zu flashen.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_nfiflash_de.jpg" />
           </info>
old mode 100644 (file)
new mode 100755 (executable)
index c721638..b0c52c8
@@ -34,7 +34,7 @@ class Upgrade(Screen):
                
        def go(self):
                if self.update:
-                       self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!"))            
+                       self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your STB?\nAfter pressing OK, please wait!"))         
                else:
                        self.close()
        
@@ -133,7 +133,7 @@ class Ipkg(Screen):
                
        def go(self):
                if self.update:
-                       self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your Dreambox?\nAfter pressing OK, please wait!"))            
+                       self.session.openWithCallback(self.doUpdate, MessageBox, _("Do you want to update your STB?\nAfter pressing OK, please wait!"))         
                else:
                        self.close()
        
index ba035e8..23499a4 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_satfinder.xml
 
index d29fb00..992f4b0 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_skinselector.xml
 
index 717f732..4bab901 100755 (executable)
@@ -9,7 +9,7 @@
                     <packagename>enigma2-plugin-systemplugins-skinselector</packagename>
                     <shortdescription>SkinSelector shows a menu with selectable skins.</shortdescription>
                     <description>The SkinSelector shows a menu with selectable skins.\n
-                    It's now easy to change the look and feel of your Dreambox.
+                    It's now easy to change the look and feel of your STB.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_skinselector_en.jpg" />
           </info>
@@ -19,7 +19,7 @@
                     <packagename>enigma2-plugin-systemplugins-skinselector</packagename>
                     <shortdescription>Der SkinSelector zeigt Ihnen ein Menu mit auswählbaren Skins.</shortdescription>
                     <description>Die SkinSelector Erweiterung zeigt Ihnen ein Menu mit auswählbaren Skins.\n
-                    Sie können nun einfach das Aussehen der grafischen Oberfläche Ihrer Dreambox verändern.
+                    Sie können nun einfach das Aussehen der grafischen Oberfläche Ihrer STB verändern.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_skinselector_de.jpg" />
           </info>
index a29a5e9..b6e9a32 100755 (executable)
@@ -100,7 +100,7 @@ class SoftwareTools(DreamInfoHandler):
 
        def getUpdates(self, callback = None):
                if SoftwareTools.lastDownloadDate is None:
-                       if  self.hardware_info.device_name != "dm7025":
+                       if  self.hardware_info.device_name != "dm8000":
                                rootkey = ['\x9f', '|', '\xe4', 'G', '\xc9', '\xb4', '\xf4', '#', '&', '\xce', '\xb3', '\xfe', '\xda', '\xc9', 'U', '`', '\xd8', '\x8c', 's', 'o', '\x90', '\x9b', '\\', 'b', '\xc0', '\x89', '\xd1', '\x8c', '\x9e', 'J', 'T', '\xc5', 'X', '\xa1', '\xb8', '\x13', '5', 'E', '\x02', '\xc9', '\xb2', '\xe6', 't', '\x89', '\xde', '\xcd', '\x9d', '\x11', '\xdd', '\xc7', '\xf4', '\xe4', '\xe4', '\xbc', '\xdb', '\x9c', '\xea', '}', '\xad', '\xda', 't', 'r', '\x9b', '\xdc', '\xbc', '\x18', '3', '\xe7', '\xaf', '|', '\xae', '\x0c', '\xe3', '\xb5', '\x84', '\x8d', '\r', '\x8d', '\x9d', '2', '\xd0', '\xce', '\xd5', 'q', '\t', '\x84', 'c', '\xa8', ')', '\x99', '\xdc', '<', '"', 'x', '\xe8', '\x87', '\x8f', '\x02', ';', 'S', 'm', '\xd5', '\xf0', '\xa3', '_', '\xb7', 'T', '\t', '\xde', '\xa7', '\xf1', '\xc9', '\xae', '\x8a', '\xd7', '\xd2', '\xcf', '\xb2', '.', '\x13', '\xfb', '\xac', 'j', '\xdf', '\xb1', '\x1d', ':', '?']
                                etpm = eTPM()
                                l2cert = etpm.getCert(eTPM.TPMD_DT_LEVEL2_CERT)
@@ -121,7 +121,7 @@ class SoftwareTools(DreamInfoHandler):
                                        return
                                val = etpm.challenge(rnd)
                                result = decrypt_block(val, l3key)
-                       if self.hardware_info.device_name == "dm7025" or result[80:88] == rnd:
+                       if self.hardware_info.device_name == "dm8000" or result[80:88] == rnd:
                                if SoftwareTools.NetworkConnectionAvailable == True:
                                        SoftwareTools.lastDownloadDate = time()
                                        if SoftwareTools.list_updating is False and callback is None:
@@ -339,4 +339,4 @@ class SoftwareTools(DreamInfoHandler):
                                return False
                return True
 
-iSoftwareTools = SoftwareTools()
\ No newline at end of file
+iSoftwareTools = SoftwareTools()
index 34302ec..6d0e20e 100755 (executable)
@@ -8,7 +8,7 @@ self.condition = (self.backuppath is not None and config.misc.firstrun.value)
                <text value="Do you want to restore your settings?" />
                <list>
                        <listentry caption="Yes, restore the settings now" step="restore" />
-                       <listentry caption="No, just start my dreambox" step="end" />
+                       <listentry caption="No, just start my STB" step="end" />
                </list>
                <code>
 self.clearSelectedKeys()
@@ -17,7 +17,7 @@ self.selectKey("OK")
        </step>
 
        <step id="welcome">
-               <text value="Welcome to the Image upgrade wizard. The wizard will assist you in upgrading the firmware of your Dreambox by providing a backup facility for your current settings and a short explanation of how to upgrade your firmware." />
+               <text value="Welcome to the Image upgrade wizard. The wizard will assist you in upgrading the firmware of your STB by providing a backup facility for your current settings and a short explanation of how to upgrade your firmware." />
                <list>
                        <listentry caption="OK, guide me through the upgrade process" step="backupquestion" />
                        <listentry caption="Exit the wizard" step="end" />
@@ -78,7 +78,7 @@ self.condition = (self.backuppath is False)
        </step>
 
        <step id="upgrade">
-               <text value="You need a PC connected to your dreambox. If you need further instructions, please visit the website http://www.dm7025.de.\nYour dreambox will now be halted. After you have performed the update instructions from the website, your new firmware will ask you to restore your settings." />
+               <text value="You need a PC connected to your STB. If you need further instructions, please visit the website http://www.dm7025.de.\nYour STB will now be halted. After you have performed the update instructions from the website, your new firmware will ask you to restore your settings." />
                <list>
                        <listentry caption="Yes, perform a shutdown now." step="shutdown" />
                        <listentry caption="No, do nothing." step="end" />
@@ -90,7 +90,7 @@ self.condition = (self.backuppath is False)
 from enigma import quitMainloop
 quitMainloop(1)
                </code>
-               <text value="Your dreambox is shutting down. Please stand by..." />
+               <text value="Your STB is shutting down. Please stand by..." />
        </step>
 
        <step id="end" laststep="true">
index cd425c3..ee291d8 100755 (executable)
@@ -7,8 +7,8 @@
                     <author>Dream Multimedia</author>
                     <name>SoftwareManager</name>
                     <packagename>enigma2-plugin-systemplugins-softwaremanager</packagename>
-                    <shortdescription>SoftwareManager manages your Dreambox software.</shortdescription>
-                    <description>The SoftwareManager manages your Dreambox software.\n
+                    <shortdescription>SoftwareManager manages your STB software.</shortdescription>
+                    <description>The SoftwareManager manages your STB software.\n
                     It's easy to update your receiver's software, install or remove extensions or even backup and restore your system settings.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_softwaremanager_en.jpg" />
@@ -17,9 +17,9 @@
                     <author>Dream Multimedia</author>
                     <name>SoftwareManager</name>
                     <packagename>enigma2-plugin-systemplugins-softwaremanager</packagename>
-                    <shortdescription>Der SoftwareManager verwaltet Ihre Dreambox Software.</shortdescription>
-                    <description>Der SoftwareManager verwaltet Ihre Dreambox Software.\n
-                    Sie können nun einfach Ihre Dreambox-Software aktualisieren, neue Erweiterungen installieren oder entfernen,
+                    <shortdescription>Der SoftwareManager verwaltet Ihre STB Software.</shortdescription>
+                    <description>Der SoftwareManager verwaltet Ihre STB Software.\n
+                    Sie können nun einfach Ihre STB-Software aktualisieren, neue Erweiterungen installieren oder entfernen,
                     oder ihre Einstellungen sichern und wiederherstellen.
                     </description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_softwaremanager_de.jpg" />
index 9983767..9c3b35c 100755 (executable)
@@ -125,11 +125,11 @@ class UpdatePluginMenu(Screen):
                self.backupdirs = ' '.join( config.plugins.configurationbackup.backupdirs.value )
                if self.menu == 0:
                        print "building menu entries"
-                       self.list.append(("install-extensions", _("Manage extensions"), _("\nManage extensions or plugins for your Dreambox" ) + self.oktext, None))
-                       self.list.append(("software-update", _("Software update"), _("\nOnline update of your Dreambox software." ) + self.oktext, None))
-                       self.list.append(("software-restore", _("Software restore"), _("\nRestore your Dreambox with a new firmware." ) + self.oktext, None))
-                       self.list.append(("system-backup", _("Backup system settings"), _("\nBackup your Dreambox settings." ) + self.oktext + "\n\n" + self.infotext, None))
-                       self.list.append(("system-restore",_("Restore system settings"), _("\nRestore your Dreambox settings." ) + self.oktext, None))
+                       self.list.append(("install-extensions", _("Manage extensions"), _("\nManage extensions or plugins for your STB" ) + self.oktext, None))
+                       self.list.append(("software-update", _("Software update"), _("\nOnline update of your STB software." ) + self.oktext, None))
+                       self.list.append(("software-restore", _("Software restore"), _("\nRestore your STB with a new firmware." ) + self.oktext, None))
+                       self.list.append(("system-backup", _("Backup system settings"), _("\nBackup your STB settings." ) + self.oktext + "\n\n" + self.infotext, None))
+                       self.list.append(("system-restore",_("Restore system settings"), _("\nRestore your STB settings." ) + self.oktext, None))
                        self.list.append(("ipkg-install", _("Install local extension"),  _("\nScan for local extensions and install them." ) + self.oktext, None))
                        for p in plugins.getPlugins(PluginDescriptor.WHERE_SOFTWAREMANAGER):
                                if p.__call__.has_key("SoftwareSupported"):
@@ -230,7 +230,7 @@ class UpdatePluginMenu(Screen):
                        currentEntry = current[0]
                        if self.menu == 0:
                                if (currentEntry == "software-update"):
-                                       self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your Dreambox?")+"\n"+_("\nAfter pressing OK, please wait!"))
+                                       self.session.openWithCallback(self.runUpgrade, MessageBox, _("Do you want to update your STB?")+"\n"+_("\nAfter pressing OK, please wait!"))
                                elif (currentEntry == "software-restore"):
                                        self.session.open(ImageWizard)
                                elif (currentEntry == "install-extensions"):
@@ -894,7 +894,7 @@ class PluginManager(Screen, DreamInfoHandler):
                        self.close()
 
        def runExecuteFinished(self):
-               self.session.openWithCallback(self.ExecuteReboot, MessageBox, _("Install or remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
+               self.session.openWithCallback(self.ExecuteReboot, MessageBox, _("Install or remove finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
 
        def ExecuteReboot(self, result):
                if result is None:
@@ -979,7 +979,7 @@ class PluginManagerInfo(Screen):
                                elif cmd == 2:
                                        info = args['package']
                                else:
-                                       info = _("Dreambox software because updates are available.")
+                                       info = _("STB software because updates are available.")
 
                                self.list.append(self.buildEntryComponent(action,info))
                        self['list'].setList(self.list)
@@ -1260,7 +1260,7 @@ class PluginDetails(Screen, DreamInfoHandler):
                        self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList = self.cmdList)
 
        def runUpgradeFinished(self):
-               self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Installation finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
+               self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Installation finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
 
        def UpgradeReboot(self, result):
                if result is None:
@@ -1275,7 +1275,7 @@ class PluginDetails(Screen, DreamInfoHandler):
                        self.session.openWithCallback(self.runRemoveFinished, Ipkg, cmdList = self.cmdList)
 
        def runRemoveFinished(self):
-               self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
+               self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
 
        def RemoveReboot(self, result):
                if result is None:
@@ -1311,7 +1311,7 @@ class UpdatePlugin(Screen):
                self["slider"] = self.slider
                self.activityslider = Slider(0, 100)
                self["activityslider"] = self.activityslider
-               self.status = StaticText(_("Upgrading Dreambox... Please wait"))
+               self.status = StaticText(_("Upgrading STB... Please wait"))
                self["status"] = self.status
                self.package = StaticText()
                self["package"] = self.package
@@ -1398,11 +1398,11 @@ class UpdatePlugin(Screen):
                        else:
                                self.activityTimer.stop()
                                self.activityslider.setValue(0)
-                               error = _("your dreambox might be unusable now. Please consult the manual for further assistance before rebooting your dreambox.")
+                               error = _("your STB might be unusable now. Please consult the manual for further assistance before rebooting your STB.")
                                if self.packages == 0:
                                        error = _("No packages were upgraded yet. So you can check your network and try again.")
                                if self.updating:
-                                       error = _("Your dreambox isn't connected to the internet properly. Please check it and try again.")
+                                       error = _("Your STB isn't connected to the internet properly. Please check it and try again.")
                                self.status.setText(_("Error") +  " - " + error)
                #print event, "-", param
                pass
@@ -1413,7 +1413,7 @@ class UpdatePlugin(Screen):
        def exit(self):
                if not self.ipkg.isRunning():
                        if self.packages != 0 and self.error == 0:
-                               self.session.openWithCallback(self.exitAnswer, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"))
+                               self.session.openWithCallback(self.exitAnswer, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your STB?"))
                        else:
                                self.close()
 
@@ -1767,7 +1767,7 @@ class PacketManager(Screen, NumericalTextInput):
                        self.session.openWithCallback(self.runRemoveFinished, Ipkg, cmdList = self.cmdList)
 
        def runRemoveFinished(self):
-               self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
+               self.session.openWithCallback(self.RemoveReboot, MessageBox, _("Remove finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
 
        def RemoveReboot(self, result):
                if result is None:
@@ -1789,7 +1789,7 @@ class PacketManager(Screen, NumericalTextInput):
                        self.session.openWithCallback(self.runUpgradeFinished, Ipkg, cmdList = self.cmdList)
 
        def runUpgradeFinished(self):
-               self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your Dreambox?"), MessageBox.TYPE_YESNO)
+               self.session.openWithCallback(self.UpgradeReboot, MessageBox, _("Upgrade finished.") +" "+_("Do you want to reboot your STB?"), MessageBox.TYPE_YESNO)
                
        def UpgradeReboot(self, result):
                if result is None:
index 208c7e0..0157bf7 100755 (executable)
@@ -18,8 +18,8 @@
                     <author>Dream Multimedia</author>
                     <name>Erweiterte A/V Einstellungen</name>
                     <packagename>enigma2-plugin-systemplugins-videoenhancement</packagename>
-                    <shortdescription>Erweiterte A/V Einstellungen für Ihre Dreambox.</shortdescription>
-                    <description>Erweiterte A/V Einstellungen für Ihre Dreambox.</description>
+                    <shortdescription>Erweiterte A/V Einstellungen für Ihre STB.</shortdescription>
+                    <description>Erweiterte A/V Einstellungen für Ihre STB.</description>
                     <screenshot src="http://www.dreamboxupdate.com/preview/plugin_videoenhancement_de.jpg" />
           </info>
 
index d0368ed..a864905 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_videotune.xml
 
index ef47443..ddcc18c 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_videomode.xml
 
index 39c1131..085f2e6 100755 (executable)
@@ -95,11 +95,11 @@ class VideoSetup(Screen, ConfigListScreen):
                                        self.list.append(getConfigListEntry(_("Auto scart switching"), config.av.vcrswitch))
 
                if level >= 1:
-                       self.list.append(getConfigListEntry(_("AC3 default"), config.av.defaultac3))
+                       self.list.append(getConfigListEntry(_("Dolby Digital default"), config.av.defaultac3))
                        if SystemInfo["CanDownmixAC3"]:
-                               self.list.append(getConfigListEntry(_("AC3 downmix"), config.av.downmix_ac3))
+                               self.list.append(getConfigListEntry(_("Dolby Digital downmix"), config.av.downmix_ac3))
                        self.list.extend((
-                               getConfigListEntry(_("General AC3 Delay"), config.av.generalAC3delay),
+                               getConfigListEntry(_("General Dolby Digital Delay"), config.av.generalAC3delay),
                                getConfigListEntry(_("General PCM Delay"), config.av.generalPCMdelay)
                        ))
 
index 6bc4aab..692d91a 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_wirelesslan.xml
 
index a0bfcab..e7adf24 100644 (file)
@@ -72,7 +72,7 @@ class AudioSelection(Screen, ConfigListScreen):
                        if SystemInfo["CanDownmixAC3"]:
                                self.settings.downmix = ConfigOnOff(default=config.av.downmix_ac3.value)
                                self.settings.downmix.addNotifier(self.changeAC3Downmix, initial_call = False)
-                               conflist.append(getConfigListEntry(_("AC3 downmix"), self.settings.downmix))
+                               conflist.append(getConfigListEntry(_("Dolby Digital downmix"), self.settings.downmix))
                                self["key_red"].setBoolean(True)
 
                        if n > 0:
old mode 100644 (file)
new mode 100755 (executable)
index 0895c9c..7ddbcbf
@@ -1446,6 +1446,10 @@ class ChannelSelectionRadio(ChannelSelectionBase, ChannelSelectionEdit, ChannelS
                #set previous tv service
                self.close(None)
 
+       #       ikseong - for add bouquet
+       def cancel(self):
+               self.closeRadio()
+               
        def __evServiceStart(self):
                service = self.session.nav.getCurrentService()
                if service:
old mode 100644 (file)
new mode 100755 (executable)
index 73b07ac..a2742ab
@@ -37,7 +37,7 @@ class DefaultWizard(WizardLanguage, DreamInfoHandler):
        def statusCallback(self, status, progress):
                print "statusCallback:", status, progress
                if status == DreamInfoHandler.STATUS_DONE:
-                       self["text"].setText(_("The installation of the default settings is finished. You can now continue configuring your Dreambox by pressing the OK button on the remote control."))
+                       self["text"].setText(_("The installation of the default settings is finished. You can now continue configuring your STB by pressing the OK button on the remote control."))
                        self.markDone()
                        self.disableKeys = False
 
@@ -103,12 +103,12 @@ def filescan(**kwargs):
                                        ScanPath(path = "dmpkg", with_subdirs = True), 
                                        ScanPath(path = "", with_subdirs = False), 
                                ], 
-                       name = "Dream-Package", 
+                       name = "STB-Package", 
                        description = _("Install settings, skins, software..."), 
                        openfnc = filescan_open, )
 
 print "add dreampackage scanner plugin"
-plugins.addPlugin(PluginDescriptor(name="Dream-Package", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan, internal = True))
+plugins.addPlugin(PluginDescriptor(name="STB-Package", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan, internal = True))
 print "added"
 
 wizardManager.registerWizard(DefaultWizard, config.misc.defaultchosen.value, priority = 6)
old mode 100644 (file)
new mode 100755 (executable)
index 5b06124..3481177
@@ -45,6 +45,8 @@ class InfoBar(InfoBarBase, InfoBarShowHide,
                                "showMovies": (self.showMovies, _("Play recorded movies...")),
                                "showRadio": (self.showRadio, _("Show the radio player...")),
                                "showTv": (self.showTv, _("Show the tv player...")),
+                               #       ikseong action for subtitle hotkey
+                               "showSubtitle":(self.showSubtitle, _("Show the Subtitle...")),
                        }, prio=2)
                
                self.allowPiP = True
@@ -123,6 +125,11 @@ class InfoBar(InfoBarBase, InfoBarShowHide,
                if service is not None:
                        self.session.open(MoviePlayer, service)
 
+       #       ikseong action for subtitle hotkey
+       def showSubtitle(self):
+               from Screens.Subtitles import Subtitles
+               self.session.open(Subtitles)
+
 class MoviePlayer(InfoBarBase, InfoBarShowHide, \
                InfoBarMenu, \
                InfoBarSeek, InfoBarShowMovies, InfoBarAudioSelection, HelpableScreen, InfoBarNotifications,
@@ -138,6 +145,8 @@ class MoviePlayer(InfoBarBase, InfoBarShowHide, \
                
                self["actions"] = HelpableActionMap(self, "MoviePlayerActions",
                        {
+                               #       ikseong action for subtitle hotkey
+                               "showSubtitle":(self.showSubtitle, _("Show the Subtitle...")),
                                "leavePlayer": (self.leavePlayer, _("leave movie player..."))
                        })
                
@@ -241,3 +250,8 @@ class MoviePlayer(InfoBarBase, InfoBarShowHide, \
                        self.returning = False
                elif self.returning:
                        self.close()
+                       
+       #       ikseong action for subtitle hotkey
+       def showSubtitle(self):
+               from Screens.Subtitles import Subtitles
+               self.session.open(Subtitles)
old mode 100644 (file)
new mode 100755 (executable)
index 6fa8911..6619bbc
@@ -1636,6 +1636,11 @@ class InfoBarInstantRecord:
                dir = preferredInstantRecordPath()
                if not dir or not fileExists(dir, 'w'):
                        dir = defaultMoviePath()
+#      ikseong
+               if not fileExists("/hdd", 0):
+                       print "not found /hdd"
+                       system("ln -s /media/hdd /hdd")
+#
                try:
                        stat = os_stat(dir)
                except:
index fce10ac..c85bf42 100755 (executable)
@@ -1,6 +1,7 @@
 from Screen import Screen
 
-from Components.ActionMap import ActionMap
+#      ikseong
+from Components.ActionMap import ActionMap,NumberActionMap
 from Components.Language import language
 from Components.config import config
 from Components.Sources.List import List
@@ -23,6 +24,8 @@ def LanguageEntryComponent(file, name, index):
                png = LoadPixmap(resolveFilename(SCOPE_CURRENT_SKIN, "countries/missing.png"))
        res = (index, name, png)
        return res
+#      ikseong
+from Plugins.SystemPlugins.FactoryTest.plugin import FactoryTest
 
 class LanguageSelection(Screen):
        def __init__(self, session):
@@ -36,12 +39,32 @@ class LanguageSelection(Screen):
 
                self.updateList()
                self.onLayoutFinish.append(self.selectActiveLanguage)
-
-               self["actions"] = ActionMap(["OkCancelActions"], 
+#      ikseong
+               self["actions"] = NumberActionMap(["OkCancelActions","NumberActions"], 
                {
                        "ok": self.save,
                        "cancel": self.cancel,
+                       "1": self.keyNumberGlobal,
+                       "2": self.keyNumberGlobal,
+                       "3": self.keyNumberGlobal,
+                       "4": self.keyNumberGlobal,
+                       "5": self.keyNumberGlobal,
+                       "6": self.keyNumberGlobal,
+                       "7": self.keyNumberGlobal,
+                       "8": self.keyNumberGlobal,
+                       "9": self.keyNumberGlobal,
+                       "0": self.keyNumberGlobal,
                }, -1)
+               self.testkey=0
+               
+#      ikseong
+       def keyNumberGlobal(self, number):
+               self.testkey = self.testkey * 10 + number
+               if self.testkey > 10000:
+                       self.testkey = self.testkey%10000
+               if self.testkey == 4599:
+                       self.session.open(FactoryTest)
+               print "testkey", self.testkey
 
        def selectActiveLanguage(self):
                activeLanguage = language.getActiveLanguage()
index 5cec512..2b0d85c 100755 (executable)
@@ -7,7 +7,7 @@ install_PYTHON = \
        Satconfig.py ScanSetup.py NetworkSetup.py Ci.py TimerEntry.py Volume.py \
        EpgSelection.py EventView.py Mute.py Standby.py ServiceInfo.py \
        InfoBarGenerics.py HelpMenu.py Wizard.py __init__.py \
-       Dish.py LanguageSelection.py StartWizard.py PiPSetup.py \
+       Dish.py LanguageSelection.py StartWizard.py PiPSetup.py Subtitles.py \
        TutorialWizard.py PluginBrowser.py MinuteInput.py Scart.py PVRState.py \
        Console.py InputBox.py ChoiceBox.py SimpleSummary.py \
        TimerSelection.py PictureInPicture.py TimeDateInput.py \
index de2fa99..908a615 100755 (executable)
@@ -702,7 +702,7 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
                self["statuspic"].hide()
                
                self.oktext = _("Press OK on your remote control to continue.")
-               self.reboottext = _("Your Dreambox will restart after pressing OK on your remote control.")
+               self.reboottext = _("Your STB will restart after pressing OK on your remote control.")
                self.errortext = _("No working wireless network interface found.\n Please verify that you have attached a compatible WLAN device or enable your local network interface.")      
                
                self["WizardActions"] = HelpableActionMap(self, "WizardActions",
@@ -843,11 +843,11 @@ class AdapterSetupConfiguration(Screen, HelpableScreen):
 
        def loadDescription(self):
                if self["menulist"].getCurrent()[1] == 'edit':
-                       self["description"].setText(_("Edit the network configuration of your Dreambox.\n" ) + self.oktext )
+                       self["description"].setText(_("Edit the network configuration of your STB.\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'test':
-                       self["description"].setText(_("Test the network configuration of your Dreambox.\n" ) + self.oktext )
+                       self["description"].setText(_("Test the network configuration of your STB.\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'dns':
-                       self["description"].setText(_("Edit the Nameserver configuration of your Dreambox.\n" ) + self.oktext )
+                       self["description"].setText(_("Edit the Nameserver configuration of your STB.\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'scanwlan':
                        self["description"].setText(_("Scan your network for wireless access points and connect to them using your selected wireless device.\n" ) + self.oktext )
                if self["menulist"].getCurrent()[1] == 'wlanstatus':
index 69bf80f..49df843 100755 (executable)
@@ -220,8 +220,8 @@ class PluginDownloadBrowser(Screen):
                        self.remainingdata = ""
 
                for x in lines:
-                       plugin = x.split(" - ", 2)
-                       if len(plugin) == 3:
+                       plugin = x.split(" - ")
+                       if len(plugin) >= 2:
                                if self.run == 1 and self.type == self.DOWNLOAD:
                                        if plugin[0] not in self.installedplugins:
                                                self.installedplugins.append(plugin[0])
@@ -239,6 +239,13 @@ class PluginDownloadBrowser(Screen):
                
                self.plugins = {}
                for x in self.pluginlist:
+                       if len(x) < 4:
+                               split = x[0].split('-',3)
+                               if not self.plugins.has_key(split[2]):
+                                       self.plugins[split[2]] = []
+                               self.plugins[split[2]].append((PluginDescriptor(name = x[2], description = " ", icon = verticallineIcon), split[3]))
+                               continue
+
                        split = x[3].split('-', 1)
                        if len(split) < 2:
                                continue
@@ -256,4 +263,4 @@ class PluginDownloadBrowser(Screen):
                self.list = list
                self["list"].l.setList(list)
 
-language.addCallback(languageChanged)
\ No newline at end of file
+language.addCallback(languageChanged)
index df427f9..6be08d4 100644 (file)
@@ -66,4 +66,4 @@ class ServiceScan(Screen):
 
        def createSummary(self):
                print "ServiceScanCreateSummary"
-               return ServiceScanSummary
\ No newline at end of file
+               return ServiceScanSummary
old mode 100644 (file)
new mode 100755 (executable)
index e5e7af4..e5c9260
@@ -40,7 +40,7 @@ class SleepTimerEdit(Screen):
                self.status = True
                self.updateColors()
                
-               self["pretext"] = Label(_("Shutdown Dreambox after"))
+               self["pretext"] = Label(_("Shutdown STB after"))
                self["aftertext"] = Label(_("minutes"))
                
                self["actions"] = NumberActionMap(["SleepTimerEditorActions", "TextEntryActions", "KeyboardInputActions"], 
@@ -99,18 +99,29 @@ class SleepTimerEdit(Screen):
 
        def select(self):
                if self.status:
-                       time = int(self["input"].getText())
-                       config.SleepTimer.defaulttime.setValue(time)
-                       config.SleepTimer.defaulttime.save()
-                       config.SleepTimer.action.save()
-                       self.session.nav.SleepTimer.setSleepTime(time)
-                       self.session.openWithCallback(self.close, MessageBox, _("The sleep timer has been activated."), MessageBox.TYPE_INFO)
+#      ikseong
+                       if self["input"].getText()=='':
+                               self.session.nav.SleepTimer.clear()
+                               self.session.openWithCallback(self.close, MessageBox, _("The sleep timer is invalid."), MessageBox.TYPE_INFO)
+                       else:                           
+                               time = int(self["input"].getText())
+                               config.SleepTimer.defaulttime.setValue(time)
+                               config.SleepTimer.defaulttime.save()
+                               config.SleepTimer.action.save()
+                               self.session.nav.SleepTimer.setSleepTime(time)
+                               self.session.openWithCallback(self.close, MessageBox, _("The sleep timer has been activated."), MessageBox.TYPE_INFO)
                else:
                        self.session.nav.SleepTimer.clear()
                        self.session.openWithCallback(self.close, MessageBox, _("The sleep timer has been disabled."), MessageBox.TYPE_INFO)
 
        def keyNumberGlobal(self, number):
-               self["input"].number(number)
+#      ikseong
+               if self["input"].getText() == '' :
+                       inputtime=0
+               else:
+                       inputtime= int(self["input"].getText())*10 +number
+               if inputtime < 10000 :
+                       self["input"].number(number)
 
        def selectLeft(self):
                self["input"].left()
diff --git a/lib/python/Screens/Subtitles.py b/lib/python/Screens/Subtitles.py
new file mode 100755 (executable)
index 0000000..8cabac4
--- /dev/null
@@ -0,0 +1,112 @@
+from Screen import Screen
+from Components.ServiceEventTracker import ServiceEventTracker
+from Components.ActionMap import ActionMap
+from Components.ConfigList import ConfigListScreen
+from Components.config import config, getConfigListEntry, ConfigNothing
+from enigma import iPlayableService
+
+from Tools.ISO639 import LanguageCodes
+
+#      ikseong for subtitle hotkey
+from Screens.InfoBar import InfoBar
+
+class Subtitles(Screen, ConfigListScreen):
+       def __init__(self, session, infobar=None):
+               Screen.__init__(self, session)
+        
+               self["actions"] = ActionMap(["SetupActions"],
+               {
+                       "ok": self.ok,
+                       "cancel": self.cancel,
+               }, -2)
+
+               self.list = []
+               ConfigListScreen.__init__(self, self.list)
+#      ikseong for subtitle hotkey
+               if self.session.infobar is None:        
+                       if InfoBar.instance:
+                               self.infobar = InfoBar.instance
+               else:
+                       self.infobar = self.session.infobar
+#
+               self.fillList()
+
+               self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+                       {
+                               iPlayableService.evUpdatedInfo: self.__updatedInfo
+                       })
+               self.cached_subtitle_checked = False
+               self.__selected_subtitle = None
+
+       def fillList(self):
+               list = self.list
+               del list[:]
+               print "self.list", list
+               if self.subtitlesEnabled():
+                       list.append(getConfigListEntry(_("Disable Subtitles"), ConfigNothing(), None))
+                       sel = self.infobar.selected_subtitle
+               else:
+                       sel = None
+               for x in self.getSubtitleList():
+                       if sel and sel[:4] == x[:4]: #ignore Language code in compare
+                               text = _("Running")
+                       else:
+                               text = _("Enable")
+                       if x[0] == 0:
+                               if LanguageCodes.has_key(x[4]):
+                                       list.append(getConfigListEntry(text+" DVB "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                               else:
+                                       list.append(getConfigListEntry(text+" DVB "+x[4], ConfigNothing(), x))
+                       elif x[0] == 1:
+                               if x[4] == 'und': #undefined
+                                       list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2]), ConfigNothing(), x))
+                               else:
+                                       if LanguageCodes.has_key(x[4]):
+                                               list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                       else:
+                                               list.append(getConfigListEntry(text+" TTX "+_("Page")+" %x%02x"%(x[3],x[2])+" "+x[4], ConfigNothing(), x))
+                       elif x[0] == 2:
+                               types = (" UTF-8 text "," SSA / AAS "," .SRT file ")
+                               if x[4] == 'und': #undefined
+                                       list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d" % x[1], ConfigNothing(), x))
+                               else:
+                                       if LanguageCodes.has_key(x[4]):
+                                               list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles") + ' ' + LanguageCodes[x[4]][0], ConfigNothing(), x))
+                                       else:
+                                               list.append(getConfigListEntry(text+types[x[2]]+_("Subtitles")+" %d " % x[1] +x[4], ConfigNothing(), x))
+#              return _("Disable subtitles")
+               self["config"].list = list
+               self["config"].l.setList(list)
+
+       def __updatedInfo(self):
+               self.fillList()
+
+       def getSubtitleList(self):
+               s = self.infobar and self.infobar.getCurrentServiceSubtitle()
+               l = s and s.getSubtitleList() or [ ]
+               return l
+
+       def subtitlesEnabled(self):
+               return self.infobar.subtitles_enabled
+
+       def enableSubtitle(self, subtitles):