Fix frontpanel support for DM8000,
authorFelix Domke <tmbinc@elitedvb.net>
Sun, 24 May 2009 23:37:44 +0000 (01:37 +0200)
committerFelix Domke <tmbinc@elitedvb.net>
Sun, 24 May 2009 23:37:44 +0000 (01:37 +0200)
modified behaviour on hardware with single frontpanel led (disabled in standby)

lib/python/Components/Renderer/FrontpanelLed.py
lib/python/Components/SystemInfo.py
lib/python/Screens/SessionGlobals.py

index 3021a85..f896ecd 100644 (file)
@@ -22,7 +22,8 @@ class FrontpanelLed(Element):
                        pass
                if self.which == 0:
                        try:
-                               open("/proc/stb/fp/led_pattern", "w").write("%08x" % pattern_4bit)
+                               open("/proc/stb/fp/led_set_pattern", "w").write("%08x" % pattern_4bit)
+                               open("/proc/stb/fp/led_set_speed", "w").write("%d" % speed)
                        except IOError:
                                pass
                        try:
index d074c41..d2b405a 100644 (file)
@@ -1,10 +1,10 @@
 from enigma import eDVBResourceManager
+from Tools.Directories import fileExists
 
 SystemInfo = { }
 
 #FIXMEE...
 def getNumVideoDecoders():
-       from Tools.Directories import fileExists
        idx = 0
        while fileExists("/dev/dvb/adapter0/video%d"%(idx), 'f'):
                idx += 1
@@ -12,3 +12,18 @@ def getNumVideoDecoders():
 
 SystemInfo["NumVideoDecoders"] = getNumVideoDecoders()
 SystemInfo["CanMeasureFrontendInputPower"] = eDVBResourceManager.getInstance().canMeasureFrontendInputPower()
+
+
+def countFrontpanelLEDs():
+       leds = 0
+       if fileExists("/proc/stb/fp/led_set_pattern"):
+               leds += 1
+
+       while fileExists("/proc/stb/fp/led%d_pattern" % leds):
+               leds += 1
+
+       return leds
+
+SystemInfo["NumFrontpanelLEDs"] = countFrontpanelLEDs()
+SystemInfo["FrontpanelDisplay"] = fileExists("/dev/dbox/oled0") or fileExists("/dev/dbox/lcd0")
+SystemInfo["FrontpanelDisplayGrayscale"] = fileExists("/dev/dbox/oled0")
index f2d5615..18d71d3 100644 (file)
@@ -22,6 +22,9 @@ class SessionGlobals(Screen):
                self["TunerInfo"] = TunerInfo()
                self["RecordState"] = RecordState(session)
                self["Standby"] = Boolean(fixed = False)
+               
+               from Components.SystemInfo import SystemInfo
+               
                combine = Combine(func = lambda s: {(False, False): 0, (False, True): 1, (True, False): 2, (True, True): 3}[(s[0].boolean, s[1].boolean)])
                combine.connect(self["Standby"])
                combine.connect(self["RecordState"])
@@ -33,9 +36,14 @@ class SessionGlobals(Screen):
                #    false      true      on   off    off
                #    true       true     blnk  off    blnk
                
-               PATTERN_ON     = (20, 0xffffffff, 0)
-               PATTERN_OFF    = (20, 0, 0xffffffff)
+               PATTERN_ON     = (20, 0xffffffff, 0xffffffff)
+               PATTERN_OFF    = (20, 0, 0)
                PATTERN_BLINK  = (20, 0x55555555, 0x84fc8c04)
 
-               FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_ON, PATTERN_BLINK]).connect(combine)
-               FrontpanelLed(which = 1, boolean = False, patterns = [PATTERN_ON, PATTERN_ON, PATTERN_OFF, PATTERN_OFF]).connect(combine)
+               nr_leds = SystemInfo.get("NumFrontpanelLEDs", 0)
+
+               if nr_leds == 1:
+                       FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_OFF, PATTERN_BLINK]).connect(combine)
+               elif nr_leds == 2:
+                       FrontpanelLed(which = 0, boolean = False, patterns = [PATTERN_OFF, PATTERN_BLINK, PATTERN_ON, PATTERN_BLINK]).connect(combine)
+                       FrontpanelLed(which = 1, boolean = False, patterns = [PATTERN_ON, PATTERN_ON, PATTERN_OFF, PATTERN_OFF]).connect(combine)