Merge branch 'master' of code.vuplus.com:/opt/repository/openvuplus
authorhschang <chang@dev3>
Fri, 31 May 2013 08:19:09 +0000 (10:19 +0200)
committerhschang <chang@dev3>
Fri, 31 May 2013 08:19:09 +0000 (10:19 +0200)
meta-openvuplus/recipes-vuplus/duo2lcd4linux/duo2lcd4linux_0.1.bb
meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/LCD4linux.tar.gz
meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/duo2lcd4linux.patch
meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/wetter.tar.gz [new file with mode: 0644]
meta-openvuplus/recipes-vuplus/duo2lcd4linux/lcd4linuxsupport/plugin.py [new file with mode: 0644]
meta-openvuplus/recipes-vuplus/duo2lcd4linux/lcd4linuxsupport_0.1.bb [new file with mode: 0644]
meta-openvuplus/recipes-vuplus/lcd4linux/files/lcd4linux.init [new file with mode: 0644]
meta-openvuplus/recipes-vuplus/lcd4linux/lcd4linux_0.11.0-SVN.bb [new file with mode: 0644]
meta-openvuplus/recipes-vuplus/png-util/files/png_util.cpp
meta-openvuplus/recipes-vuplus/png-util/png-util_1.0.bb
meta-openvuplus/recipes-vuplus/tasks/task-vuplus-enigma2.inc

index a448849..378e730 100644 (file)
@@ -4,25 +4,26 @@ LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=80
 
 SRC_URI = " \
         file://LCD4linux.tar.gz \
+        file://wetter.tar.gz \
        file://duo2lcd4linux.patch;patch=1;pnum=1 \
 "
 
-RDEPENDS = "python-codecs python-datetime python-textutils python-imaging python-pyusb png-util"
+RDEPENDS = "enigma2 python-codecs python-datetime python-imaging python-textutils python-shell python-ctypes python-pyusb lcd4linux"
 
 S = "${WORKDIR}/LCD4linux"
 
-PR = "r3"
+PR = "r4"
 
 PLUGINPATH = "/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux"
 
 do_install() {
         install -d  ${D}${PLUGINPATH}
-        install -m 0755 ${S}/*.py ${D}${PLUGINPATH}
-        install -m 0755 ${S}/*.png ${D}${PLUGINPATH}
+        install -m 0600 ${S}/*.* ${D}${PLUGINPATH}
+        install -m 0600 ${S}/refreshrate ${D}${PLUGINPATH}
         install -d  ${D}${PLUGINPATH}/locale/de/LC_MESSAGES
-        install -m 0644 ${S}/locale/de/LC_MESSAGES/LCD4linux.mo ${D}${PLUGINPATH}/locale/de/LC_MESSAGES
+        install -m 0600 ${S}/locale/de/LC_MESSAGES/* ${D}${PLUGINPATH}/locale/de/LC_MESSAGES
         install -d  ${D}${PLUGINPATH}/wetter
-        install -m 0755 ${S}/wetter/*.gif ${D}${PLUGINPATH}/wetter
+        install -m 0600 ${S}/wetter/* ${D}${PLUGINPATH}/wetter
 }
 
 FILES_${PN} = "${PLUGINPATH}"
index 8a0dd9d..9e4025b 100644 (file)
Binary files a/meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/LCD4linux.tar.gz and b/meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/LCD4linux.tar.gz differ
index 5d4d6bd..56bb91a 100644 (file)
@@ -1,20 +1,21 @@
 diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
---- LCD4linux_ori/plugin.py    2012-08-29 17:06:28.000000000 +0900
-+++ LCD4linux/plugin.py        2013-05-10 14:31:45.000000000 +0900
-@@ -49,6 +49,12 @@
- from urllib import urlencode
+--- LCD4linux_ori/plugin.py    2013-05-24 12:11:59.390217149 +0200
++++ LCD4linux/plugin.py        2013-05-31 07:22:41.221330788 +0200
+@@ -46,9 +46,12 @@
+ from twisted.web.client import getPage
+ from xml.dom.minidom import parse, parseString
+-from urllib import urlencode
++from urllib import urlencode, quote
  import xml.etree.cElementTree
  
-+from threading import Thread
 +from fcntl import ioctl
-+import socket
-+from pngutil import png_util
-+pngutil = png_util.PNGUtil()
++from socket import create_connection as socket_create_connection
 +
  # globals
  DPFrefreshrate="/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux/refreshrate"
  WetterPath = "/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux/wetter/"
-@@ -80,6 +86,7 @@
+@@ -80,6 +83,7 @@
  BilderIndexStandby = 0
  BilderTime = 0
  ThreadRunning = 0
@@ -22,35 +23,12 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
  LastDemon = ""
  DemonPID = ["","","",""]
  SamsungDevice = None
-@@ -104,7 +111,7 @@
- ScreenSelect = [("0", _("off")), ("1", _("Screen 1")), ("2", _("Screen 2")), ("3", _("Screen 3")), ("12", _("Screen 1+2")), ("13", _("Screen 1+3")), ("23", _("Screen 2+3")), ("123", _("Screen 1+2+3")), ("4", _("Screen 4")), ("14", _("Screen 1+4")), ("24", _("Screen 2+4")), ("34", _("Screen 3+4")), ("124", _("Screen 1+2+4")), ("134", _("Screen 1+3+4")), ("234", _("Screen 2+3+4")), ("1234", _("Screen 1+2+3+4"))]
- TimeSelect = [("1", _("5s")), ("2", _("10s")), ("3", _("15s")), ("4", _("20s")), ("6", _("30s")), ("12", _("1min")), ("24", _("2min"), ("60", _("5min")))]
- LCDSelect = [("1", _("LCD 1")), ("2", _("LCD 2")), ("12", _("LCD 1+2"))]
--LCDType = [("11", _("Pearl 320x240")), ("12", _("Pearl 240x320")), ("23", _("Samsung SPF-75H 800x480")), ("24", _("Samsung SPF-87H 800x480")), ("25", _("Samsung SPF-87Hold 800x480")), ("26", _("Samsung SPF-83H 800x600")), ("27", _("Samsung SPF-107H 1024x600"))]
-+LCDType = [("10", _("Vu LCD 400x240"))]
- config.plugins.LCD4linux = ConfigSubsection()
- config.plugins.LCD4linux.Enable = ConfigYesNo(default = False)
-@@ -116,13 +123,13 @@
- config.plugins.LCD4linux.ScreenTime3 = ConfigSelection(choices = TimeSelect, default="1")
- config.plugins.LCD4linux.ScreenTime4 = ConfigSelection(choices = TimeSelect, default="1")
- config.plugins.LCD4linux.BilderTime = ConfigSelection(choices =  [("0", _("off"))] + TimeSelect, default="0")
--config.plugins.LCD4linux.Helligkeit = ConfigSlider(default = 5,  limits = (0, 7))
-+config.plugins.LCD4linux.Helligkeit = ConfigSlider(default = 4,  limits = (0, 25))
- config.plugins.LCD4linux.LCDoff = ConfigClock(default = ((5 * 60 + 0) * 60) )
- config.plugins.LCD4linux.LCDon = ConfigClock(default = ((5 * 60 + 0) * 60) )
- config.plugins.LCD4linux.Refresh = ConfigSlider(default = 3,  limits = (1, 15))
- config.plugins.LCD4linux.Delay = ConfigSlider(default = 200,  increment = 50, limits = (50, 2000))
- config.plugins.LCD4linux.WetterCity = ConfigText(default="Berlin", fixed_size=False)
--config.plugins.LCD4linux.LCDType1 = ConfigSelection(choices = LCDType, default="11")
-+config.plugins.LCD4linux.LCDType1 = ConfigSelection(choices = LCDType, default="10")
- config.plugins.LCD4linux.LCDType2 = ConfigSelection(choices = [("00", _("off"))] + LCDType, default="00")
- config.plugins.LCD4linux.LCDRotate1 = ConfigSelection(choices = [("0", _("0")), ("90", _("90")), ("180", _("180"))], default="0")
- config.plugins.LCD4linux.LCDRotate2 = ConfigSelection(choices = [("0", _("0")), ("90", _("90")), ("180", _("180"))], default="0")
-@@ -206,15 +213,6 @@
+@@ -204,17 +208,16 @@
+ config.plugins.LCD4linux.TimerColor = ConfigSelection(choices = Farbe, default="white")
+ config.plugins.LCD4linux.Wetter = ConfigSelection(choices = ScreenSelect, default="0")
  config.plugins.LCD4linux.WetterLCD = ConfigSelection(choices = LCDSelect, default="1")
- config.plugins.LCD4linux.WetterPos = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
- config.plugins.LCD4linux.WetterType = ConfigSelection(choices = [("1", _("4 Days small")), ("2", _("4 Days big")), ("3", _("Current big")), ("4", _("Current full"))], default="1")
+-config.plugins.LCD4linux.WetterPos = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
+-config.plugins.LCD4linux.WetterType = ConfigSelection(choices = [("1", _("4 Days small")), ("2", _("4 Days big")), ("3", _("Current big")), ("4", _("Current full"))], default="1")
 -config.plugins.LCD4linux.OSCAM = ConfigSelection(choices = ScreenSelect, default="0")
 -config.plugins.LCD4linux.OSCAMLCD = ConfigSelection(choices = LCDSelect, default="1")
 -config.plugins.LCD4linux.OSCAMFile = ConfigText(default="/tmp/.oscam/oscam.lcd", fixed_size=False)
@@ -60,24 +38,26 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
 -config.plugins.LCD4linux.OSCAMSplit = ConfigYesNo(default = False)
 -config.plugins.LCD4linux.OSCAMColor = ConfigSelection(choices = Farbe, default="white")
 -config.plugins.LCD4linux.OSCAMBackColor = ConfigSelection(choices = [("0", _("off"))] + Farbe, default="black")
++config.plugins.LCD4linux.WetterPosX = ConfigSlider(default = 0,  increment = 2, limits = (0, 600))
++config.plugins.LCD4linux.WetterPosY = ConfigSlider(default = 0,  increment = 2, limits = (0, 600))
++config.plugins.LCD4linux.WetterType = ConfigSelection(choices = [("1", _("2 Days")), ("2", _("4 Days")), ("3", _("4 Days big")), ("4", _("4 Days only")), ("5", _("2 Days vertical"))], default="1")
++config.plugins.LCD4linux.WetterColor = ConfigSelection(choices = Farbe, default="white")
++config.plugins.LCD4linux.WetterColorLow = ConfigSelection(choices = Farbe, default="aquamarine")
++config.plugins.LCD4linux.WetterColorHigh = ConfigSelection(choices = Farbe, default="violet")
++config.plugins.LCD4linux.WetterColorLine = ConfigSelection(choices = Farbe, default="white")
++config.plugins.LCD4linux.WetterColorDay = ConfigSelection(choices = Farbe, default="white")
++config.plugins.LCD4linux.WetterColorCity = ConfigSelection(choices = Farbe, default="white")
++config.plugins.LCD4linux.WetterColorSky = ConfigSelection(choices = Farbe, default="silver")
  config.plugins.LCD4linux.WetterCity = ConfigText(default="Berlin", fixed_size=False)
  config.plugins.LCD4linux.Text = ConfigSelection(choices = ScreenSelect, default="0")
  config.plugins.LCD4linux.TextLCD = ConfigSelection(choices = LCDSelect, default="1")
-@@ -278,9 +276,9 @@
- config.plugins.LCD4linux.MPClockAlign = ConfigSelection(choices = [("0", _("left")), ("1", _("center")), ("2", _("right"))], default="1")
- config.plugins.LCD4linux.MPClockSplit = ConfigYesNo(default = False)
- config.plugins.LCD4linux.MPClockColor = ConfigSelection(choices = Farbe, default="white")
--config.plugins.LCD4linux.Standby = ConfigSelection(choices = [("0", _("off")), ("1", _("on"))], default="1")
-+config.plugins.LCD4linux.Standby = ConfigSelection(choices = [("0", _("off")), ("1", _("on"))], default="0")
- config.plugins.LCD4linux.StandbyScreenMax = ConfigSelection(choices = [("1", _("Screen 1")), ("2", _("Screen 1-2")), ("3", _("Screen 1-3"))], default="1")
--config.plugins.LCD4linux.StandbyHelligkeit = ConfigSlider(default = 1,  limits = (0, 7))
-+config.plugins.LCD4linux.StandbyHelligkeit = ConfigSlider(default = 3,  limits = (0, 25))
- config.plugins.LCD4linux.StandbyLCDoff = ConfigClock(default = ((5 * 60 + 0) * 60) )
- config.plugins.LCD4linux.StandbyLCDon = ConfigClock(default = ((5 * 60 + 0) * 60) )
- config.plugins.LCD4linux.StandbyClock = ConfigSelection(choices = ScreenSelect, default="1")
-@@ -300,14 +298,6 @@
+@@ -298,16 +301,9 @@
+ config.plugins.LCD4linux.StandbyTimerColor = ConfigSelection(choices = Farbe, default="white")
+ config.plugins.LCD4linux.StandbyWetter = ConfigSelection(choices = ScreenSelect, default="0")
  config.plugins.LCD4linux.StandbyWetterLCD = ConfigSelection(choices = LCDSelect, default="1")
- config.plugins.LCD4linux.StandbyWetterPos = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
+-config.plugins.LCD4linux.StandbyWetterPos = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
++config.plugins.LCD4linux.StandbyWetterPosX = ConfigSlider(default = 0,  increment = 2, limits = (0, 600))
++config.plugins.LCD4linux.StandbyWetterPosY = ConfigSlider(default = 50,  increment = 2, limits = (0, 600))
  config.plugins.LCD4linux.StandbyWetterType = ConfigSelection(choices = [("1", _("4 Days small")), ("2", _("4 Days big")), ("3", _("Current big")), ("4", _("Current full"))], default="1")
 -config.plugins.LCD4linux.StandbyOSCAM = ConfigSelection(choices = ScreenSelect, default="0")
 -config.plugins.LCD4linux.StandbyOSCAMLCD = ConfigSelection(choices = LCDSelect, default="1")
@@ -90,25 +70,13 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
  config.plugins.LCD4linux.StandbyText = ConfigSelection(choices = ScreenSelect, default="0")
  config.plugins.LCD4linux.StandbyTextLCD = ConfigSelection(choices = LCDSelect, default="1")
  config.plugins.LCD4linux.StandbyTextFile = ConfigText(default="/tmp/lcd4linux.txt", fixed_size=False)
-@@ -421,9 +411,12 @@
-               return ""
- def writeHelligkeit(hell):
--      f = open(PICbright, "w")
--      f.write(str(hell) + "\r\n")
--      f.close()
-+      hell = int(hell) * 10
-+      if hell >= 250:
-+              hell = 255
-+      led_fd = open("/dev/lcd2",'w')
-+      ioctl(led_fd, 0x10, hell)
-+      led_fd.close()
-       
- def getBilder():
-       global Bilder
-@@ -754,16 +747,6 @@
+@@ -752,18 +748,16 @@
+                       self.list2.append(getConfigListEntry(_("Weather"), config.plugins.LCD4linux.Wetter))
+                       if config.plugins.LCD4linux.Wetter.value != "0":
                                self.list2.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.WetterLCD))
-                               self.list2.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.WetterPos))
+-                              self.list2.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.WetterPos))
++                              self.list2.append(getConfigListEntry(_("- Position X"), config.plugins.LCD4linux.WetterPosX))
++                              self.list2.append(getConfigListEntry(_("- Position Y"), config.plugins.LCD4linux.WetterPosY))
                                self.list2.append(getConfigListEntry(_("- Weather Type"), config.plugins.LCD4linux.WetterType))
 -                      self.list2.append(getConfigListEntry(_("Show oscam.lcd"), config.plugins.LCD4linux.OSCAM))
 -                      if config.plugins.LCD4linux.OSCAM.value != "0":
@@ -120,12 +88,23 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
 -                              self.list2.append(getConfigListEntry(_("- Split Screen"), config.plugins.LCD4linux.OSCAMSplit))
 -                              self.list2.append(getConfigListEntry(_("- Color"), config.plugins.LCD4linux.OSCAMColor))
 -                              self.list2.append(getConfigListEntry(_("- Background Color"), config.plugins.LCD4linux.OSCAMBackColor))
++                              self.list2.append(getConfigListEntry(_("- Color"), config.plugins.LCD4linux.WetterColor))
++                              self.list2.append(getConfigListEntry(_("- Color Low"), config.plugins.LCD4linux.WetterColorLow))
++                              self.list2.append(getConfigListEntry(_("- Color High"), config.plugins.LCD4linux.WetterColorHigh))
++                              self.list2.append(getConfigListEntry(_("- Color Line"), config.plugins.LCD4linux.WetterColorLine))
++                              self.list2.append(getConfigListEntry(_("- Color Day"), config.plugins.LCD4linux.WetterColorDay))
++                              self.list2.append(getConfigListEntry(_("- Color City"), config.plugins.LCD4linux.WetterColorCity))
++                              self.list2.append(getConfigListEntry(_("- Color Sky"), config.plugins.LCD4linux.WetterColorSky))
                        self.list2.append(getConfigListEntry(_("Show Textfile") , config.plugins.LCD4linux.Text))
                        if config.plugins.LCD4linux.Text.value != "0":
                                self.list2.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.TextLCD))
-@@ -870,15 +853,6 @@
+@@ -868,17 +862,9 @@
+                       self.list4.append(getConfigListEntry(_("Standby - Weather"), config.plugins.LCD4linux.StandbyWetter))
+                       if config.plugins.LCD4linux.StandbyWetter.value != "0":
                                self.list4.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.StandbyWetterLCD))
-                               self.list4.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.StandbyWetterPos))
+-                              self.list4.append(getConfigListEntry(_("- Position"), config.plugins.LCD4linux.StandbyWetterPos))
++                              self.list4.append(getConfigListEntry(_("- Position X"), config.plugins.LCD4linux.StandbyWetterPosX))
++                              self.list4.append(getConfigListEntry(_("- Position Y"), config.plugins.LCD4linux.StandbyWetterPosY))
                                self.list4.append(getConfigListEntry(_("- Weather Type"), config.plugins.LCD4linux.StandbyWetterType))
 -                      self.list4.append(getConfigListEntry(_("Standby - Show oscam.lcd"), config.plugins.LCD4linux.StandbyOSCAM))
 -                      if config.plugins.LCD4linux.StandbyOSCAM.value != "0":
@@ -139,43 +118,29 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
                        self.list4.append(getConfigListEntry(_("Standby - Show Textfile"), config.plugins.LCD4linux.StandbyText))
                        if config.plugins.LCD4linux.StandbyText.value != "0":
                                self.list4.append(getConfigListEntry(_("- which LCD"), config.plugins.LCD4linux.StandbyTextLCD))
-@@ -1014,23 +988,24 @@
-               return str(self["config"].getCurrent()[1].getText())
-       def LCDrestart(self):
--              global SamsungDevice
--              global SamsungDevice2
--              DemonRestart()
--              SamsungDevice = None
--              SamsungDevice2 = None
--              getSamsungDevice()
-+              pass
-+#             global SamsungDevice
-+#             global SamsungDevice2
-+#             DemonRestart()
-+#             SamsungDevice = None
-+#             SamsungDevice2 = None
-+#             getSamsungDevice()
-       def save(self):
-               global ConfigMode
-               global ConfigStandby
-               global isMediaPlayer
-               getBilder()
--              if config.plugins.LCD4linux.Refresh.isChanged():
--                      f = open(DPFrefreshrate, "w")
--                      f.write(str(config.plugins.LCD4linux.Refresh.value * 1000) + "\r\n")
--                      f.close()
--                      self.LCDrestart()
-+#             if config.plugins.LCD4linux.Refresh.isChanged():
-+#                     f = open(DPFrefreshrate, "w")
-+#                     f.write(str(config.plugins.LCD4linux.Refresh.value * 1000) + "\r\n")
-+#                     f.close()
-+#                     self.LCDrestart()
-               self["config"].setList(self.list1)
-               for x in self["config"].list:
-@@ -1101,6 +1076,7 @@
+@@ -998,11 +984,18 @@
+                       self.SavePicon = config.plugins.LCD4linux.PiconType.value
+                       self.SaveAspectRatio = config.plugins.LCD4linux.PiconAspectRatio.value
+                       os.system("rm -f %s" % config.plugins.LCD4linux.PiconCache.value + "*.png")
+-              if self.SaveWetter != config.plugins.LCD4linux.WetterCity.value or self.SaveWetterType != config.plugins.LCD4linux.WetterType.value or self.SaveStandbyWetterType != config.plugins.LCD4linux.StandbyWetterType.value:
++#             if self.SaveWetter != config.plugins.LCD4linux.WetterCity.value or self.SaveWetterType != config.plugins.LCD4linux.WetterType.value or self.SaveStandbyWetterType != config.plugins.LCD4linux.StandbyWetterType.value:
++#                     self.SaveWetter = config.plugins.LCD4linux.WetterCity.value
++#                     self.SaveWetterType = config.plugins.LCD4linux.WetterType.value
++#                     self.SaveStandbyWetterType = config.plugins.LCD4linux.StandbyWetterType.value
++#                     wwwWetter = ""
++              if self.SaveWetter != config.plugins.LCD4linux.WetterCity.value:
+                       self.SaveWetter = config.plugins.LCD4linux.WetterCity.value
+-                      self.SaveWetterType = config.plugins.LCD4linux.WetterType.value
+-                      self.SaveStandbyWetterType = config.plugins.LCD4linux.StandbyWetterType.value
+                       wwwWetter = ""
++
++              elif config.plugins.LCD4linux.WetterColor.isChanged() or config.plugins.LCD4linux.WetterColorLow.isChanged() or config.plugins.LCD4linux.WetterColorHigh.isChanged() or config.plugins.LCD4linux.WetterColorLine.isChanged() or config.plugins.LCD4linux.WetterColorDay.isChanged() or config.plugins.LCD4linux.WetterColorCity.isChanged() or config.plugins.LCD4linux.WetterColorSky.isChanged():
++                      if os.path.isfile(PICwetter):
++                              os.system("rm -f %s" % PICwetter)
+               if self.SaveScreenActive != config.plugins.LCD4linux.ScreenActive.value:
+                       self.SaveScreenActive = config.plugins.LCD4linux.ScreenActive.value
+                       ScreenActive = self.SaveScreenActive
+@@ -1101,6 +1094,7 @@
                self.KeyTime = 0
                self.StandbyChanged = False
                self.DataMinute = ""
@@ -183,44 +148,7 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
                self.ref = ""
  
                self.StatusTimer = eTimer()
-@@ -1131,16 +1107,17 @@
-               self.timerlist = ""
-               self.pluginlist = ""
-+              self.pngutilconnect = pngutil.connect()
-+
- #####         self.onShow.append(self.ServiceChange)
- #             config.misc.standbyCounter.addNotifier(self.restartTimer(self), initial_call = False)
-               getBilder()
-               self.StatusTimer.startLongTimer(5)
--              self.Demon()
--              self.SamsungStart()
-+#             self.Demon()
-+#             self.SamsungStart()
-               
-       def updateStatus(self):
-               print "[LCD4linux] update"
--
- #             global DataMinute
- #             global ScreenActive
-               global BilderTime
-@@ -1200,20 +1177,25 @@
- #             print BilderTime, OSDon,self.StandbyChanged,Standby.inStandby
-               if strftime("%M")!=self.DataMinute or BilderTime == 1 or self.StandbyChanged != Standby.inStandby or ConfigMode or (ScreenActive != SaveScreenActive) or isVideoPlaying > 2 or OSDon == 3:
-                       print "[LCD4linux] Data-Build"
--                      if config.plugins.LCD4linux.LCDType1.value[0] == "1" or config.plugins.LCD4linux.LCDType2.value[0] == "1":
--                              if strftime("%M")!=self.DataMinute:
--                                      if DemonCheck():
--                                              self.Demon()
--                                      if SamsungCheck():
--                                              self.SamsungStart()
-+#                     if config.plugins.LCD4linux.LCDType1.value[0] == "1" or config.plugins.LCD4linux.LCDType2.value[0] == "1":
-+#                             if strftime("%M")!=self.DataMinute:
-+#                                     if DemonCheck():
-+#                                             self.Demon()
-+#                                     if SamsungCheck():
-+#                                             self.SamsungStart()
-                       self.DataMinute = strftime("%M")
+@@ -1210,10 +1204,15 @@
                        self.StandbyChanged = Standby.inStandby 
                        self.restartTimer()
                        if config.plugins.LCD4linux.StandbyWetter.value != "0" or config.plugins.LCD4linux.Wetter.value != "0":
@@ -228,24 +156,24 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
 -                                      self.downloadWetter()
 +                              if strftime("%M") != self.WetterCheckMin:
 +                                      self.WetterCheckMin = strftime("%M")
-+                                      if strftime("%M") == "15" or strftime("%M") == "45" or wwwWetter.find("forecast_information") < 1:
++                                      if strftime("%M") == "15" or strftime("%M") == "45" or wwwWetter.find("forecast") < 1:
 +                                              self.downloadWetter()
                if ConfigMode == True:
 -                      self.StatusTimer.startLongTimer(2)
 +                      if config.plugins.LCD4linux.Bild.value.find(ScreenActive) >= 0:
 +                              self.StatusTimer.startLongTimer(5)
 +                      else:
-+                              self.StatusTimer.startLongTimer(2)
++                              self.StatusTimer.startLongTimer(3)
                else:
                        self.StatusTimer.startLongTimer(5)
  
-@@ -1377,15 +1359,43 @@
+@@ -1377,23 +1376,68 @@
                                        ScreenActive = "1"
                ScreenTime += 1
  
 +      def cannotConnect(self, port = 80, url = "74.125.71.94", timeout = 5):
 +              try:
-+                      sock = socket.create_connection((url, port), timeout)
++                      sock = socket_create_connection((url, port), timeout)
 +#                     print "Can be connected to [%s:%d]."%(url,port)
 +              except Exception, ErrMsg:
 +                      print "Can't be connected to [%s:%d]. (%s)"%(url, port, ErrMsg)
@@ -263,28 +191,42 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
 +                      print "[LCD4linux] downloadWetter already running"
 +                      return
 +              WetterThreadRunning += 1
++              from threading import Thread
 +              t = Thread(target=self.downloadWetterThread)
 +              t.start()
 +
 +      def downloadWetterThread(self):
-+              if self.cannotConnect(80, "74.125.71.94", 1): # www.google.de
++              wetter = 0
++#             if self.cannotConnect(80, "173.194.72.94", 1): # www.google.de
++              if self.cannotConnect(80, "173.194.72.99", 1): # www.google.com
 +                      self.downloadWetterThreadEnd()
 +                      return
                print "[LCD4linux] Wetterdownloadstart"
-               self.feedurl = "http://www.google.com/ig/api?weather=%s&oe=utf-8&hl=%s" % (config.plugins.LCD4linux.WetterCity.value,language.getLanguage()[:2])
- #             self.feedurl = "http://www.google.com/ig/api?weather=%s&oe=utf-8&hl=%s" % (config.plugins.LCD4linux.WetterCity.value,"de")
+-              self.feedurl = "http://www.google.com/ig/api?weather=%s&oe=utf-8&hl=%s" % (config.plugins.LCD4linux.WetterCity.value,language.getLanguage()[:2])
+-#             self.feedurl = "http://www.google.com/ig/api?weather=%s&oe=utf-8&hl=%s" % (config.plugins.LCD4linux.WetterCity.value,"de")
++              wetterCity = config.plugins.LCD4linux.WetterCity.value
++              lang = language.getLanguage().replace("_","-")
++              if lang in ["no-NO","ca-AD","sr-YU","en-EN"]:
++                      lang = "en-us"
++              if wetterCity.startswith("wc:"):
++                      self.feedurl = "http://weather.service.msn.com/data.aspx?src=vista&weadegreetype=C&culture=%s&wealocations=%s" %(lang,wetterCity)
++              else:
++                      self.feedurl = "http://weather.service.msn.com/data.aspx?src=vista&weadegreetype=C&culture=%s&weasearchstr=%s" %(lang,quote(wetterCity))
                getPage(self.feedurl).addCallback(self.downloadListCallback).addErrback(self.downloadListError)
 +              self.downloadWetterThreadEnd()
  
        def downloadListError(self, error=""):
-               print str(error)
+-              print str(error)
++              print "download wetter error : ", str(error)
  #             self.session.open(MessageBox, "Error downloading Feed:\n%s" % str(error), type=MessageBox.TYPE_ERROR)
 +              self.downloadWetterThreadEnd()
  
        def downloadListCallback(self, page=""):
                global wwwWetter
-@@ -1394,6 +1404,13 @@
+               wwwWetter = page
+               wwwWetter = wwwWetter.replace('\xc2\x86', '').replace('\xc2\x87', '').replace('\n','').decode("utf-8", "ignore").encode("utf-8") or ""
                wwwWetter=codecs.decode(wwwWetter, 'UTF-8')
++#             print wwwWetter
                if os.path.isfile(PICwetter):
                        os.system("rm -f %s" % PICwetter)
 +#             print " >> downloadListCallback updated.."
@@ -297,28 +239,281 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
  
  def LCD4linuxPICThread(self,session):
        global ThreadRunning
-@@ -1465,7 +1482,9 @@
-       return event_begin, event_end, duration, event_name
+@@ -1530,116 +1574,174 @@
+       global BilderTime
+       global OSDon
  
- def getResolution(t):
--      if t[1] == "1":
-+      if t[1] == "0":
-+              MAX_W,MAX_H = 400,240
-+      elif t[1] == "1":
-               MAX_W,MAX_H = 320,240
-       elif t[1] == "2":
-               MAX_W,MAX_H = 240,320
-@@ -1533,6 +1552,9 @@
- # Google Wetter
-       def putWetter(ConfigPos, ConfigType, draw, im):
+-# Google Wetter
+-      def putWetter(ConfigPos, ConfigType, draw, im):
++# MSN Wetter
++      def putWetter((ConfigPosX, ConfigPosY, ConfigType, ConfigColor, 
++              ConfigColorLow, ConfigColorHigh, ConfigColorLine, ConfigColorDay, ConfigColorCity, ConfigColorSky), draw, im):
++              global wwwWetter
                global WetterType
 +              global WetterThreadRunning
 +              if WetterThreadRunning:
++                      print " Download Wetter thread is running"
 +                      return
                if os.path.isfile(PICwetter) and ConfigType == WetterType:
                        pil_image = Image.open(PICwetter)
-                       im.paste(pil_image,(0,ConfigPos))
-@@ -1977,51 +1999,6 @@
+-                      im.paste(pil_image,(0,ConfigPos))
++                      im.paste(pil_image,(ConfigPosX,ConfigPosY))
+               else:
+                       WetterType=ConfigType
+-                      POSX, POSY = 1,0
+-                      MAX_W,MAX_H = 320,80
+-                      Wmulti = 1.4 if ConfigType != "1" else 1
+-                      if ConfigType == "2":
+-                              MAX_H = 220
+-                              POSX = 10
++                      POSX, POSY = 5,5
++                      if ConfigType == "1":
++                              MAX_W,MAX_H = 260,110
++                      elif ConfigType == "2":
++                              MAX_W,MAX_H = 400,110
+                       elif ConfigType == "3":
+-                              MAX_H = 90
+-                              POSY = POSY-(20*Wmulti)+1
+-                      elif ConfigType == "4":
+-                              Wmulti = 3.5
+-                              MAX_H = 220
+-                              POSY = POSY-(20*Wmulti)+1
++                              MAX_W,MAX_H = 400,240
++                      elif ConfigType == "4" or ConfigType == "5":
++                              MAX_W,MAX_H = 180,240
+                       imW = Image.new('RGB', (MAX_W, MAX_H), (0, 0, 0, 0))
+                       drawW = ImageDraw.Draw(imW)
+                       dom = parseString(wwwWetter)
+-                      for node in dom.getElementsByTagName('forecast_information'):
+-                              for unitsystem in node.getElementsByTagName('unit_system'):
+-                                      UnitSystem = unitsystem.getAttribute('data')
+-                      if ConfigType != "3" and ConfigType != "4":
+-                              font = ImageFont.truetype(FONT,20*Wmulti, encoding='unic')
+-                              Day="?"
+-                              High="?"
+-                              Low="?"
+-                              Icon=""
+-                              for node in dom.getElementsByTagName('forecast_conditions'):
+-                                      for day_of_week in node.getElementsByTagName('day_of_week'):
+-                                              Day = day_of_week.getAttribute('data')
+-                                      for high in node.getElementsByTagName('high'):
+-                                              High = high.getAttribute('data')
+-                                              if UnitSystem == "US":
+-                                                      High = str(int((int(High)-32)*5/9))
+-                                      for low in node.getElementsByTagName('low'):
+-                                              Low = low.getAttribute('data')
+-                                              if UnitSystem == "US":
+-                                                      Low = str(int((int(Low)-32)*5/9))
+-                                      for icon in node.getElementsByTagName('icon'):
+-                                              Icon = os.path.basename(icon.getAttribute('data'))
+-#                                     print "WetterData", Day, Low, High, Icon
+-                                      if os.path.isfile(WetterPath + Icon) and Icon.find("gif") > 1:
+-                                              pil_image = Image.open(WetterPath + Icon)
+-                                              if Wmulti != 1:
+-                                                      pil_image = pil_image.resize((int(40*Wmulti), int(40*Wmulti)), Image.ANTIALIAS) #BILINEAR)
+-#                                             x,y=pil_image.size
+-                                              imW.paste(pil_image,(POSX,POSY+(20*Wmulti)))
+-                                      w,h = drawW.textsize(Day, font=font)
+-                                      drawW.text((POSX, POSY), Day, font=font)
+-                                      drawW.text((POSX, POSY+(60*Wmulti)), Low, font=font, fill="aquamarine")
+-                                      drawW.text((POSX+(25*Wmulti), POSY+(60*Wmulti)), High, font=font, fill="violet")
+-                              
+-                                      POSX += (54*Wmulti)
+-                              if Wmulti != 1:
+-                                      POSX = 10
+-                                      POSY += 90
+-                              
+-                      Hum = "?"
+-                      Wind = "?"
+-                      Temp_c = "?"
+-                      Icon=""
+-                      for node in dom.getElementsByTagName('current_conditions'):
+-                              for temp_c in node.getElementsByTagName('temp_c'):
+-                                      Temp_c = temp_c.getAttribute('data') + "\xc2\xb0C"
+-                              for hum in node.getElementsByTagName('humidity'):
+-                                      Hum1 = hum.getAttribute('data').replace("\xc2\xa0","").replace(" ","")
+-                                      Hum1 = Hum1.split(":")
+-                                      if len(Hum1) == 2:      
+-                                              Hum = Hum1[len(Hum1)-1].lstrip()
+-                              for wind in node.getElementsByTagName('wind_condition'):
+-                                      Wind = wind.getAttribute('data')
+-                                      Wind = Wind.split(":")
+-                                      if len(Wind) == 2:
+-                                              Wind = Wind[len(Wind)-1].lstrip()
+-                              for icon in node.getElementsByTagName('icon'):
+-                                      Icon = os.path.basename(icon.getAttribute('data'))
+-#                             print "Temp, Hum", Temp_c, Hum, Wind, Icon
+-                              if os.path.isfile(WetterPath + Icon) and Icon.find("gif") > 1:
+-                                      pil_image = Image.open(WetterPath + Icon)
+-                                      if Wmulti != 1:
+-                                              pil_image = pil_image.resize((int(40*Wmulti), int(40*Wmulti)), Image.ANTIALIAS) #BILINEAR)
+-#                                     x,y=pil_image.size
+-                                      if ConfigType == "4":
+-                                              POSX = 10
+-                                      imW.paste(pil_image,(POSX,POSY+(20*Wmulti)))
+-                              if ConfigType == "4":
+-                                      font = ImageFont.truetype(FONT,(10*Wmulti), encoding='unic')
+-                              else:
+-                                      font = ImageFont.truetype(FONT,(15*Wmulti), encoding='unic')
+-                              minus5 = 0 if Wmulti != 1 else 5
+-                              drawW.text((POSX-minus5, POSY+(64*Wmulti)), Wind, font=font, fill="silver")
+-                              if ConfigType == "4":
+-                                      font = ImageFont.truetype(FONT,(20*Wmulti), encoding='unic')
+-                              else:
+-                                      font = ImageFont.truetype(FONT,(25*Wmulti), encoding='unic')
+-                              drawW.text((POSX+(45*Wmulti), POSY+(16*Wmulti)), Temp_c, font=font, fill="violet")
+-                              if len(Hum)>3:
+-                                      if ConfigType == "4":
+-                                              font = ImageFont.truetype(FONT,(16*Wmulti), encoding='unic')
++                      weather = dom.getElementsByTagName("weather")
++                      if len(weather) == 0:
++                              print "get weather failed"
++                              return
++                      else:
++                              weather = weather[0]
++
++                      def getFont(size):
++                              return ImageFont.truetype(FONT, size, encoding='unic')
++
++                      if ConfigType in ("1","2","3","4","5"):
++# forecast 4 days
++                              if ConfigType in ("1","2"):
++                                      Day="?"; High="?"; Low="?"; Icon=""
++                                      font = getFont(20)
++                                      drawW.line((POSX, POSY, POSX, MAX_H), fill=ConfigColorLine)
++                                      forecast_num = 0
++                                      for node in weather.getElementsByTagName('forecast'):
++                                              forecast_num += 1
++                                              if ConfigType == "1" and forecast_num > 2:
++                                                      break
++                                              elif ConfigType == "2" and forecast_num > 4:
++                                                      break
++                                              Day = node.getAttribute('shortday')
++                                              High = node.getAttribute('high')
++                                              Low = node.getAttribute('low')
++                                              Icon = node.getAttribute('skycodeday')
++                                              Skytextday = node.getAttribute('skytextday')
++                                              Precip = node.getAttribute('precip')
++                                              iconpath = WetterPath + Icon+'.png'
++                                              if os.path.isfile(iconpath):
++                                                      pil_image = Image.open(iconpath)
++                                                      imW.paste(pil_image,(POSX+5,POSY+25), pil_image)
++                                              drawW.text((POSX+13, POSY), Day, font=font, fill=ConfigColorDay)
++                                              drawW.text((POSX+10, POSY+71), Low, font=font, fill=ConfigColorLow)
++                                              drawW.text((POSX+37, POSY+71), High, font=font, fill=ConfigColorHigh)
++                                              drawW.line((POSX+65, POSY, POSX+65, MAX_H), fill=ConfigColorLine)
++                                              POSX += 65
++                              elif ConfigType in ("3", "4", "5"):
++                                      Day="?"; High="?"; Low="?"; Icon=""
++                                      if ConfigType == "5":
++                                              POSX, POSY = 5,120
++#                                     if ConfigType in ("3"):
++#                                             drawW.line((0, 0, MAX_W/2, 0), fill=ConfigColorLine)
++#                                     elif ConfigType in ("4"):
++#                                             drawW.line((0, 0, MAX_W, 0), fill=ConfigColorLine)
++                                      if ConfigType in ("5"):
++                                              drawW.line((0, POSY, MAX_W, POSY), fill=ConfigColorLine)
++                                      forecast_num = 0
++                                      for node in weather.getElementsByTagName('forecast'):
++                                              forecast_num += 1
++                                              if ConfigType in ("3", "4") and forecast_num > 4:
++                                                      break
++                                              elif ConfigType == "5" and forecast_num > 2:
++                                                      break
++                                              Day = node.getAttribute('day')
++                                              Low = node.getAttribute('low') + "\xc2\xb0"
++                                              High = node.getAttribute('high') + "\xc2\xb0"
++                                              Icon = node.getAttribute('skycodeday')
++                                              Skytextday = node.getAttribute('skytextday')
++                                              Precip = node.getAttribute('precip')
++                                              iconpath = WetterPath + Icon+'.png'
++                                              if os.path.isfile(iconpath):
++                                                      pil_image = Image.open(iconpath)
++#                                                     icon_w, icon_h = 55,45
++                                                      icon_w, icon_h = int(55*1.2), int(45*1.2)
++                                                      pil_image = pil_image.resize( (icon_w, icon_h), Image.ANTIALIAS) #BILINEAR)
++                                                      imW.paste(pil_image,(POSX, POSY), pil_image)
++                                              font = getFont(15)
++                                              drawW.text((POSX+icon_w-20, POSY-2), Precip, font=font, fill="cyan")
++                                              drawW.text((POSX+icon_w+5, POSY+5), Day, font=font, fill=ConfigColorDay)
++                                              drawW.text((POSX+icon_w+5, POSY+20), Low, font=font, fill=ConfigColorLow)
++                                              drawW.text((POSX+icon_w+30, POSY+20), High, font=font, fill=ConfigColorHigh)
++                                              drawW.text((POSX+icon_w+5, POSY+35), Skytextday, font=font, fill=ConfigColorSky)
++                                              if ConfigType == "3":
++                                                      drawW.line((POSX, POSY+55, MAX_W/2, POSY+55), fill=ConfigColorLine)
++                                              else:
++                                                      drawW.line((POSX, POSY+55, MAX_W, POSY+55), fill=ConfigColorLine)
++                                              POSY += 60
++
++# current info
++                              if ConfigType in ("1","2","5"):
++                                      if ConfigType == "5":
++                                              POSX, POSY = 15,15
++                                      Hum = "?"; Wind = "?"; Temp = "?"; Icon=""
++                                      current = weather.getElementsByTagName('current')
++                                      if len(current) == 0:
++                                              print "get current failed"
++                                      else:
++                                              current = current[0]
++                                              ObservationPoint = current.getAttribute('observationpoint')
++                                              ObservationTime = current.getAttribute('observationtime')
++                                              Temp = current.getAttribute('temperature') + "\xc2\xb0"
++                                              Hum = current.getAttribute('humidity') + "%"
++                                              Wind = current.getAttribute('winddisplay')
++                                              Icon = current.getAttribute("skycode")
++                                              iconpath = WetterPath + Icon+'.png'
++                                              if os.path.isfile(iconpath):
++                                                      pil_image = Image.open(iconpath)
++                                                      pil_image = pil_image.resize((int(55*1.4), int(45*1.4)), Image.ANTIALIAS) #BILINEAR)
++                                                      imW.paste(pil_image,(POSX+5, POSY+5+10), pil_image)
++                                                      drawW.text((POSX+5, POSY), ObservationPoint+' '+ObservationTime, font=getFont(12), fill=ConfigColorCity)
++                                                      drawW.text((POSX+15+62, POSY+5+15), Temp, font=getFont(25), fill=ConfigColorHigh)
++                                                      drawW.text((POSX+15+62, POSY+5+40), Hum, font=getFont(22), fill=ConfigColorLow)
++                                                      drawW.text((POSX+5, POSY+80), Wind, font=getFont(15), fill=ConfigColorSky)
++
++                              elif ConfigType in ("3"):
++                                      POSX, POSY = 200,5
++                                      drawW.line((POSX, POSY, POSX, MAX_H), fill=ConfigColorLine)
++                                      Hum = "?"; Wind = "?"; Temp = "?"; Icon=""
++                                      current = weather.getElementsByTagName('current')
++                                      if len(current) == 0:
++                                              print "get current failed"
++                                              return
+                                       else:
+-                                              font = ImageFont.truetype(FONT,(22*Wmulti), encoding='unic')
+-                              drawW.text((POSX+(45*Wmulti), POSY+(37*Wmulti)), Hum, font=font, fill="silver")
++                                              current = current[0]
++                                      ObservationPoint = current.getAttribute('observationpoint')
++                                      ObservationTime = current.getAttribute('observationtime')
++                                      Temp = 'Temp. : '+ current.getAttribute('temperature') + "\xc2\xb0"
++                                      Hum = 'Hum : '+ current.getAttribute('humidity') + "%"
++                                      Wind = 'Wind : '+ current.getAttribute('winddisplay')
++                                      Icon = current.getAttribute("skycode")
++                                      Skytext = 'Cond : ' + current.getAttribute('skytext')
++                                      Feelslike = 'Feel : '+ current.getAttribute('feelslike')
++                                      Date = 'Date : ' + current.getAttribute('date')
++                                      iconpath = WetterPath + Icon+'.png'
++                                      icon_w, icon_h = int(55*2.8), int(45*2.8)
++                                      if os.path.isfile(iconpath):
++                                              pil_image = Image.open(iconpath)
++                                              pil_image = pil_image.resize( (icon_w, icon_h), Image.ANTIALIAS) #BILINEAR
++                                              imW.paste(pil_image,(POSX+5, POSY+5), pil_image)
++                                      font = getFont(15)
++                                      drawW.text((POSX+20, POSY+3+icon_h), Temp, font=font, fill=ConfigColorHigh)
++                                      drawW.text((POSX+20+80, POSY+3+icon_h), Hum, font=font, fill=ConfigColorLow)
++                                      drawW.text((POSX+20, POSY+3+icon_h+20), Skytext, font=font, fill=ConfigColorSky)
++                                      drawW.text((POSX+20, POSY+3+icon_h+40), Wind, font=font, fill=ConfigColorLow)
++                                      drawW.text((POSX+20, POSY+3+icon_h+60), Date, font=font, fill=ConfigColorCity)
++                                      font = ImageFont.truetype(FONT,15, encoding='unic')
++                                      drawW.text((POSX+20, MAX_H-25), ObservationPoint+' '+ObservationTime, font=font, fill=ConfigColorCity)
++# save Image
+                       imW.save(PICwetter)
+-                      im.paste(imW,(0,ConfigPos))
++                      im.paste(imW,(ConfigPosX,ConfigPosY))
+               return
+ # Text File
+@@ -1977,51 +2079,6 @@
                lx = getSplit(ConfigSplit,ConfigAlign,MAX_W,w)
                draw.text((lx, ConfigPos), i, font=font, fill=ConfigColor)
  
@@ -370,7 +565,36 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
  # show Title
        def putTitle(ConfigPos, ConfigSize, ConfigLines, ConfigColor, ConfigAlign, ConfigSplit, draw, im):
                MAX_W,MAX_H = im.size
-@@ -2157,12 +2134,6 @@
+@@ -2110,13 +2167,23 @@
+                               if isOffTime(config.plugins.LCD4linux.StandbyLCDoff.value,config.plugins.LCD4linux.StandbyLCDon.value):
+                                       writeHelligkeit(0)
+                                       print "[LCD4linux] LCD off"
+-# Google Wetter
+-                      if config.plugins.LCD4linux.StandbyWetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast_information") > 1:
++# MSN Wetter
++                      if config.plugins.LCD4linux.StandbyWetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast") > 1:
++                              params = (
++                                      config.plugins.LCD4linux.StandbyWetterPosX.value,
++                                      config.plugins.LCD4linux.StandbyWetterPosY.value,
++                                      config.plugins.LCD4linux.StandbyWetterType.value,
++                                      config.plugins.LCD4linux.WetterColor.value,
++                                      config.plugins.LCD4linux.WetterColorLow.value,
++                                      config.plugins.LCD4linux.WetterColorHigh.value,
++                                      config.plugins.LCD4linux.WetterColorLine.value,
++                                      config.plugins.LCD4linux.WetterColorDay.value,
++                                      config.plugins.LCD4linux.WetterColorCity.value,
++                                      config.plugins.LCD4linux.WetterColorSky.value)
+                               if config.plugins.LCD4linux.StandbyWetterLCD.value.find("1") >= 0:
+-                                      putWetter(config.plugins.LCD4linux.StandbyWetterPos.value,config.plugins.LCD4linux.StandbyWetterType.value,draw,im)
++                                      putWetter(params, draw, im)
+                               if config.plugins.LCD4linux.StandbyWetterLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
+-                                      putWetter(config.plugins.LCD4linux.StandbyWetterPos.value,config.plugins.LCD4linux.StandbyWetterType.value,draw2,im2)
+-
++                                      putWetter(params, draw2, im2)
+ # get clock
+                       if config.plugins.LCD4linux.StandbyClock.value.find(ScreenActive) >= 0:
+                               if config.plugins.LCD4linux.StandbyClockLCD.value.find("1") >= 0:
+@@ -2157,12 +2224,6 @@
                                        putBild(config.plugins.LCD4linux.StandbyBildPos.value, config.plugins.LCD4linux.StandbyBildSize.value, config.plugins.LCD4linux.StandbyBildAlign.value, ShowPicture, im)
                                if config.plugins.LCD4linux.StandbyBildLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
                                        putBild(config.plugins.LCD4linux.StandbyBildPos.value, config.plugins.LCD4linux.StandbyBildSize.value, config.plugins.LCD4linux.StandbyBildAlign.value, ShowPicture, im2)
@@ -383,7 +607,52 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
  # show Textfile
                        if config.plugins.LCD4linux.StandbyText.value.find(ScreenActive) >= 0:
                                if config.plugins.LCD4linux.StandbyTextLCD.value.find("1") >= 0:
-@@ -2324,12 +2295,6 @@
+@@ -2240,12 +2301,23 @@
+                               putPicon(config.plugins.LCD4linux.PiconSize.value, config.plugins.LCD4linux.PiconType.value, config.plugins.LCD4linux.PiconAlign.value, config.plugins.LCD4linux.PiconTextSize.value, draw, im)
+                       if config.plugins.LCD4linux.PiconLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
+                               putPicon(config.plugins.LCD4linux.PiconSize.value, config.plugins.LCD4linux.PiconType.value, config.plugins.LCD4linux.PiconAlign.value, config.plugins.LCD4linux.PiconTextSize.value, draw2, im2)
+-# Google Wetter
+-              if config.plugins.LCD4linux.Wetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast_information") > 1:
++# MSN Wetter
++              if config.plugins.LCD4linux.Wetter.value.find(ScreenActive) >= 0 and wwwWetter.find("forecast") > 1:
++                      params = (
++                              config.plugins.LCD4linux.WetterPosX.value,
++                              config.plugins.LCD4linux.WetterPosY.value,
++                              config.plugins.LCD4linux.WetterType.value,
++                              config.plugins.LCD4linux.WetterColor.value,
++                              config.plugins.LCD4linux.WetterColorLow.value,
++                              config.plugins.LCD4linux.WetterColorHigh.value,
++                              config.plugins.LCD4linux.WetterColorLine.value,
++                              config.plugins.LCD4linux.WetterColorDay.value,
++                              config.plugins.LCD4linux.WetterColorCity.value,
++                              config.plugins.LCD4linux.WetterColorSky.value)
+                       if config.plugins.LCD4linux.WetterLCD.value.find("1") >= 0:
+-                              putWetter(config.plugins.LCD4linux.WetterPos.value,config.plugins.LCD4linux.WetterType.value,draw,im)
++                              putWetter(params, draw, im)
+                       if config.plugins.LCD4linux.WetterLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
+-                              putWetter(config.plugins.LCD4linux.WetterPos.value,config.plugins.LCD4linux.WetterType.value,draw2,im2)
++                              putWetter(params, draw2, im2)
+ # get clock
+               if config.plugins.LCD4linux.Clock.value.find(ScreenActive) >= 0:
+                       if config.plugins.LCD4linux.ClockLCD.value.find("1") >= 0:
+@@ -2259,11 +2331,11 @@
+                       if config.plugins.LCD4linux.InfoLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
+                               putInfo(config.plugins.LCD4linux.InfoPos.value, config.plugins.LCD4linux.InfoSize.value,config.plugins.LCD4linux.InfoAlign.value,config.plugins.LCD4linux.InfoSplit.value,config.plugins.LCD4linux.InfoColor.value,config.plugins.LCD4linux.InfoTuner.value+config.plugins.LCD4linux.InfoSensor.value, draw2, im2)
+ # next Timer Record
+-                      if config.plugins.LCD4linux.Timer.value.find(ScreenActive) >= 0:
+-                              if config.plugins.LCD4linux.TimerLCD.value.find("1") >= 0:
+-                                      putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw, im)
+-                              if config.plugins.LCD4linux.TimerLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
+-                                      putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw2, im2)
++              if config.plugins.LCD4linux.Timer.value.find(ScreenActive) >= 0:
++                      if config.plugins.LCD4linux.TimerLCD.value.find("1") >= 0:
++                              putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw, im)
++                      if config.plugins.LCD4linux.TimerLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
++                              putTimer(config.plugins.LCD4linux.TimerPos.value, config.plugins.LCD4linux.TimerSize.value, config.plugins.LCD4linux.TimerColor.value, draw2, im2)
+ # aktive Sendernummer
+               if config.plugins.LCD4linux.ChannelNum.value.find(ScreenActive) >= 0:
+                       if config.plugins.LCD4linux.ChannelNumLCD.value.find("1") >= 0:
+@@ -2324,12 +2396,6 @@
                                putBild(config.plugins.LCD4linux.BildPos.value, config.plugins.LCD4linux.BildSize.value, config.plugins.LCD4linux.BildAlign.value, ShowPicture, im)
                        if config.plugins.LCD4linux.BildLCD.value.find("2") >= 0 and config.plugins.LCD4linux.LCDType2.value != "00":
                                putBild(config.plugins.LCD4linux.BildPos.value, config.plugins.LCD4linux.BildSize.value, config.plugins.LCD4linux.BildAlign.value, ShowPicture, im2)
@@ -396,53 +665,8 @@ diff -urN LCD4linux_ori/plugin.py LCD4linux/plugin.py
  # show Textfile
                if config.plugins.LCD4linux.Text.value.find(ScreenActive) >= 0:
                        if config.plugins.LCD4linux.TextLCD.value.find("1") >= 0:
-@@ -2366,43 +2331,13 @@
-               im.save(PICtmp+".png", "PNG")
-               if os.path.isfile(PICtmp+".png"):
-                       os.rename(PICtmp+".png",PIC+".png")
--      else:
--              if SamsungDevice is not None:
--                      print "[LCD4linux] writing to Samsung Device"
--                      output = StringIO.StringIO()
--                      im.save(output, "JPEG")
--                      pic = output.getvalue()
--                      output.close()
--                      try:
--                              Photoframe.write_jpg2frame(SamsungDevice, pic)
--                      except:
--                              print "[LCD4linux] Samsung 1 write error"
--              im.save(PICtmp+".jpg", "JPEG")
--              if os.path.isfile(PICtmp+".jpg"):
--                      os.rename(PICtmp+".jpg",PIC+".jpg")
--      if config.plugins.LCD4linux.LCDType2.value != "00":
--              if config.plugins.LCD4linux.LCDRotate2.value != "0":
--                      im2=im2.rotate(int(config.plugins.LCD4linux.LCDRotate2.value))
--              if config.plugins.LCD4linux.LCDType2.value[0] == "1":
--                      im2.save(PIC2tmp+".png", "PNG")
--                      if os.path.isfile(PIC2tmp+".png"):
--                              os.rename(PIC2tmp+".png",PIC2+".png")
--              else:
--                      if SamsungDevice2 is not None:
--                              print "[LCD4linux] writing to Samsung2 Device"
--                              output = StringIO.StringIO()
--                              im2.save(output, "JPEG")
--                              pic = output.getvalue()
--                              output.close()
--                              try:
--                                      Photoframe.write_jpg2frame(SamsungDevice2, pic)       
--                              except:
--                                      print "[LCD4linux] Samsung 2 write error"
--                      im2.save(PIC2tmp+".jpg", "JPEG")
--                      if os.path.isfile(PIC2tmp+".jpg"):
--                              os.rename(PIC2tmp+".jpg",PIC2+".jpg")
-+      if self.pngutilconnect == 0:
-+              print "[LCD4linux] RunTime:", time() - tt
-+              return
-+      pngutiltime = time()
-+      pngutil.send(PIC+".png")
-+      print "[LCD4linux] time(write to lcd) : ",time()-pngutiltime
-       print "[LCD4linux] RunTime:", time() - tt
--       
-       return
-       
- def main(session,**kwargs):
+@@ -2440,3 +2506,4 @@
+       icon = "plugin.png",
+       fnc = main))
+       return list
++
diff --git a/meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/wetter.tar.gz b/meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/wetter.tar.gz
new file mode 100644 (file)
index 0000000..60c0c83
Binary files /dev/null and b/meta-openvuplus/recipes-vuplus/duo2lcd4linux/files/wetter.tar.gz differ
diff --git a/meta-openvuplus/recipes-vuplus/duo2lcd4linux/lcd4linuxsupport/plugin.py b/meta-openvuplus/recipes-vuplus/duo2lcd4linux/lcd4linuxsupport/plugin.py
new file mode 100644 (file)
index 0000000..36467e9
--- /dev/null
@@ -0,0 +1,181 @@
+
+import os
+from time import time
+from datetime import datetime
+
+from enigma import eTimer
+from Components.config import ConfigSelection, ConfigSelectionNumber, ConfigSlider, ConfigYesNo
+from Plugins.Plugin import PluginDescriptor
+from fcntl import ioctl
+
+from pngutil import png_util
+pngutil = png_util.PNGUtil()
+lcd4linuxPluginPath = "/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux"
+
+LCDType1_id_lver = "150"
+LCDType1_id = "350"
+
+from Plugins.Extensions.LCD4linux import plugin
+
+def getResolution(t, r="0"):
+       if t[:1] == "5":
+               ttt = LCD4linux.xmlLCDType.value.split("x")
+               MAX_W,MAX_H = int(ttt[0]),int(ttt[1])
+       elif t[1:] == "1":
+               MAX_W,MAX_H = 320,240
+       elif t[1:] == "2":
+               MAX_W,MAX_H = 240,320
+       elif t[1:] in ["3","4","5","10"]:
+               MAX_W,MAX_H = 800,480
+       elif t[1:] in ["6","9","11","12"]:
+               MAX_W,MAX_H = 800,600
+       elif t[1:] in ["7","8","13"]:
+               MAX_W,MAX_H = 1024,600
+       elif t[1:] == "17":
+               MAX_W,MAX_H = 220,176
+       elif t[1:] == "18":
+               MAX_W,MAX_H = 255,64
+       elif t[1:] == "30":
+               MAX_W,MAX_H = 400,240
+       elif t[1:] == "20":
+               MAX_W,MAX_H = LCD4linux.SizeW.value,LCD4linux.SizeH.value
+       elif t[1:] == "50": # vuduo2
+               MAX_W,MAX_H = 400,240
+       if r in ["90","270"]:
+               MAX_W,MAX_H = MAX_H,MAX_W
+       return MAX_W,MAX_H
+
+plugin_writeHelligkeit = None
+g_min = 0
+g_max = None
+def writeHelligkeit_lver(hell):
+       global g_min
+       global g_max
+       global plugin_writeHelligkeit
+       global LCDType1_id_lver
+       plugin_writeHelligkeit(hell)
+       if plugin.config.plugins.LCD4linux.LCDType1.value == LCDType1_id_lver:
+               if g_max is None:
+                       g_min, g_max = getHellRange(plugin.config.plugins.LCD4linux.Helligkeit)
+               updateBrightness(int(hell), g_min, g_max)
+
+def writeHelligkeit(hell,hell2,STOP = False):
+       global g_min
+       global g_max
+       global old_hell
+       global plugin_writeHelligkeit
+       global LCDType1_id
+       plugin_writeHelligkeit(hell, hell2, STOP)
+       if plugin.LCD4linux.LCDType1.value == LCDType1_id:
+               if g_max is None:
+                       g_min, g_max = getHellRange(plugin.LCD4linux.Helligkeit)
+               updateBrightness(int(hell), g_min, g_max)
+
+def getHellRange(ins):
+       try:
+               if isinstance(ins, ConfigSelectionNumber):
+                       choices = []
+                       for s in ins.choices.choices:
+                               choices.append(int(s))
+                       return (min(choices), max(choices))
+               elif isinstance(ins, ConfigSlider):
+                       return (ins.min, ins.max)
+               else:
+                       return (0,10)
+       except:
+               return (0,10)
+
+old_hell = 40
+def updateBrightness(hell, _min, _max):
+       try:
+               if _min == _max: return
+               hell = int( 255*hell/(_max - _min) )
+               if hell >= 250:
+                       hell = 255
+               global old_hell
+               if hell == old_hell:
+                       return
+               else:
+                       old_hell = hell
+               print "[LCD4linux Support] update Brightness : ",hell
+               led_fd = open("/dev/lcd2",'rw')
+               ioctl(led_fd, 0x10, hell)
+               led_fd.close()
+       except:
+               pass
+
+class pngUtilTimer:
+       def __init__(self):
+               self.PIC = "/tmp/dpf"
+               self.updateTimer = eTimer()
+               self.updateTimer.callback.append(self.updateLCD)
+               self.pngutilconnect = pngutil.connect()
+               self.last_mod_time = 0
+               self.oldPluginVer = False
+
+       def startUpdateTimer(self):
+               if self.pngutilconnect :
+                       self.updateTimer.start(1000, True)
+
+       def updateLCD(self):
+               self.updateTimer.stop()
+               if self.oldPluginVer:
+                       lcd = plugin.config.plugins.LCD4linux.LCDType1.value
+               else:
+                       lcd = plugin.LCD4linux.LCDType1.value
+               if lcd[1:] == "50":
+                       if os.path.exists(self.PIC):
+                               modify_time = os.stat(self.PIC).st_mtime
+                               if modify_time != self.last_mod_time:
+                                       self.last_mod_time = modify_time
+                                       pngutiltime = time()
+                                       pngutil.send(self.PIC)
+                                       print "[LCD4linux Support] time (write to lcd) : ",time()-pngutiltime
+               self.updateTimer.start(500, True)
+
+       def setLcd4linuxDuo2(self):
+               global plugin_writeHelligkeit
+               try:
+                       lcdtype = plugin.LCDType
+                       print "[LCD4linux Support] set LCD4linux for DUO2 (ver %s)"%plugin.Version
+                       if plugin.Version == "V0.8r3":
+                               global LCDType1_id_lver
+                               self.oldPluginVer = True
+                               lcdtype.append((LCDType1_id_lver, _("Vu+ Duo2 LCD 400x240")))
+                               plugin.config.plugins.LCD4linux.LCDType1 = ConfigSelection(choices = lcdtype, default=LCDType1_id_lver)
+                               plugin.config.plugins.LCD4linux.Standby = ConfigSelection(choices = [("0", _("off")), ("1", _("on"))], default="0")
+                               plugin.config.plugins.LCD4linux.Thread = ConfigYesNo(default = True)
+                               plugin.config.plugins.LCD4linux.Helligkeit = ConfigSlider(default = 1,  limits = (0, 7))
+                               plugin_writeHelligkeit = plugin.writeHelligkeit
+                               plugin.writeHelligkeit = writeHelligkeit_lver
+                       else:
+                               global LCDType1_id
+                               lcdtype.append((LCDType1_id, _("Vu+ Duo2 LCD 400x240")))
+                               plugin.LCD4linux.LCDType1 = ConfigSelection(choices = lcdtype, default=LCDType1_id)
+                               plugin.LCD4linux.Standby = ConfigSelection(choices = [("0", _("off")), ("1", _("on"))], default="0")
+                               plugin.LCD4linux.Helligkeit = ConfigSelectionNumber(0, 10, 1, default = 2)
+                               plugin_writeHelligkeit = plugin.writeHelligkeit
+                               plugin.writeHelligkeit = writeHelligkeit
+                       plugin.getResolution = getResolution
+                       self.PIC = plugin.PIC+".png"
+                       return True
+               except:
+                       return False
+
+pngutiltimer = pngUtilTimer()
+
+def lcdtimer(reason, **kwargs):
+       if pngutiltimer.setLcd4linuxDuo2():
+               pngutiltimer.startUpdateTimer()
+
+def Plugins(**kwargs):
+       list = []
+       global lcd4linuxPluginPath
+       if os.path.exists(lcd4linuxPluginPath+"/plugin.py"):
+               list.append(
+                       PluginDescriptor(name="LCD4linuxSupport",
+                       description="LCD4linuxSupport",
+                       where = [PluginDescriptor.WHERE_SESSIONSTART],
+                       fnc = lcdtimer))
+       return list
+
diff --git a/meta-openvuplus/recipes-vuplus/duo2lcd4linux/lcd4linuxsupport_0.1.bb b/meta-openvuplus/recipes-vuplus/duo2lcd4linux/lcd4linuxsupport_0.1.bb
new file mode 100644 (file)
index 0000000..6d191ff
--- /dev/null
@@ -0,0 +1,25 @@
+DESCRIPTION = "lcd4linux support for duo2"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+RDEPENDS = "enigma2 png-util"
+
+SRC_URI = " \
+        file://plugin.py \
+"
+
+S = "${WORKDIR}"
+
+PR = "r0"
+
+PLUGINPATH = "/usr/lib/enigma2/python/Plugins/Extensions/LCD4linuxSupport"
+
+do_install() {
+        install -d  ${D}${PLUGINPATH}
+        install -m 0600 ${S}/plugin.py ${D}${PLUGINPATH}
+       touch ${D}${PLUGINPATH}/__init__.py
+}
+
+FILES_${PN} = "${PLUGINPATH}"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
diff --git a/meta-openvuplus/recipes-vuplus/lcd4linux/files/lcd4linux.init b/meta-openvuplus/recipes-vuplus/lcd4linux/files/lcd4linux.init
new file mode 100644 (file)
index 0000000..f08f517
--- /dev/null
@@ -0,0 +1,70 @@
+#!/bin/sh
+#
+# lcd4linux
+#
+PLUGINDIR="/usr/lib/enigma2/python/Plugins/Extensions/LCD4linux"
+DAEMON=/usr/bin/lcd4linux
+NICELEVEL="0"
+
+
+daemon_start() {
+       if [ -f $PLUGINDIR/dpf$1.conf ]; then
+               echo "Starting $DAEMON $1"
+               start-stop-daemon --start --nicelevel $NICELEVEL --quiet --pidfile /var/run/lcd4linux$1.pid --exec $DAEMON -- -q -p /var/run/lcd4linux$1.pid -f $PLUGINDIR/dpf$1.conf
+       else
+               echo $PLUGINDIR/dpf$1.conf nicht gefunden
+       fi
+}
+daemon_stop() {
+       if [ -f /var/run/lcd4linux$1.pid ]; then
+               echo "Stopping $DAEMON $1"
+               start-stop-daemon --oknodo --stop --quiet --pidfile /var/run/lcd4linux$1.pid --exec $DAEMON
+               sleep 2
+               echo "LCD::backlight(0)" | $DAEMON -i -f $PLUGINDIR/dpf$1.conf
+       fi
+}
+daemon_reload() {
+       if [ -f /var/run/lcd4linux$1.pid ]; then
+               start-stop-daemon --stop --signal 1 --quiet --pidfile /var/run/lcd4linux$1.pid --exec $DAEMON
+       fi
+}
+
+
+case "$1" in
+  start)
+               daemon_start 1
+               daemon_start 2
+       ;;
+       start1)
+               daemon_start 1
+       ;;
+       start2)
+               daemon_start 2
+       ;;
+  stop)
+               daemon_stop 1
+               daemon_stop 2
+       ;;
+  stop1)
+               daemon_stop 1
+       ;;
+  stop2)
+               daemon_stop 2
+       ;;
+  reload)
+               daemon_reload 1
+               daemon_reload 2
+  ;;
+  restart|force-reload)
+               daemon_stop 1
+               daemon_stop 2
+               sleep 4
+               daemon_start 1
+               daemon_start 2
+       ;;
+  *)
+               echo "Usage: $0 {start|stop|restart|reload|force-reload|start1|start2|stop1|stop2}" >&2
+               exit 1
+       ;;
+esac
+exit 0
diff --git a/meta-openvuplus/recipes-vuplus/lcd4linux/lcd4linux_0.11.0-SVN.bb b/meta-openvuplus/recipes-vuplus/lcd4linux/lcd4linux_0.11.0-SVN.bb
new file mode 100644 (file)
index 0000000..214562f
--- /dev/null
@@ -0,0 +1,39 @@
+DESCRIPTION = "LCD4Linux is a small program that grabs information from the kernel and some subsystems and displays it on an external liquid crystal display."
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+DEPENDS = "virtual/libusb0 ncurses readline jpeg"
+RDEPENDS = "jpeg"
+
+PV = "0.11.0-SVN"
+PR = "r1"
+
+EXTRA_OECONF = " --with-glib-prefix=${STAGING_LIBDIR}/.. \
+               --with-glib-exec-prefix=${STAGING_LIBDIR}/.. \
+               --with-ncurses=${STAGING_LIBDIR}/.."
+
+SRC_URI = "svn://ssl.bulix.org/svn/lcd4linux/;module=trunk;proto=https;rev=1200 \
+               file://lcd4linux.init \
+"
+
+S =  "${WORKDIR}/trunk"
+
+addtask setlibtool before do_configure after do_patch
+
+do_setlibtool (){
+       sed -i "s#LIBTOOL=libtool#LIBTOOL=\${STAGING_BINDIR_CROSS}\/\${HOST_SYS}-libtool#" ${S}/Makefile.am
+}
+
+INITSCRIPT_PARAMS_vuplus = "stop 10 0 6 ."
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "lcd4linux"
+CONFFILES_${PN} += "${sysconfdir}/lcd4linux.conf"
+
+do_install_append() {
+       install -d ${D}/${sysconfdir}
+       install -m 0600 ${S}/lcd4linux.conf.sample  ${D}/${sysconfdir}/lcd4linux.conf
+       install -d ${D}/${INIT_D_DIR}
+       install -m 0755 ${WORKDIR}/lcd4linux.init ${D}/${INIT_D_DIR}/lcd4linux
+}
+
index e166205..82747cb 100755 (executable)
@@ -13,87 +13,97 @@ static png_bytep * row_pointers = 0;
 static png_bytep row_pointers_bit_shift = 0;
 static int row_byte_len = 0;
 
-//#define UNIT_TEST 1
-#ifdef UNIT_TEST
-int fd = open("/tmp/dump.txt", O_WRONLY|O_CREAT|O_LARGEFILE, 0644);
-#endif
-
 static int read_png_file(char* file_name)
 {
        /* 8 is the maximum size that can be checked */
-        char header[8] = {0,};
+       char header[8] = {0,};
 
-        /* open file and test for it being a png */
-        FILE *fp = fopen(file_name, "rb");
-        if (!fp) 
+       /* open file and test for it being a png */
+       FILE *fp = fopen(file_name, "rb");
+       if (!fp)
        {
-                fprintf(stderr, "[read_png_file] File %s could not be opened for reading\n", file_name);
+               fprintf(stderr, "[read_png_file] File %s could not be opened for reading\n", file_name);
                return 0;
        }
 
-        fread(header, 1, 8, fp);
-        if (png_sig_cmp((png_byte*)header, 0, 8)) 
+       fread(header, 1, 8, fp);
+       if (png_sig_cmp((png_byte*)header, 0, 8))
        {
-                fprintf(stderr, "[read_png_file] File %s is not recognized as a PNG file\n", file_name);
+               fclose(fp);
+               fprintf(stderr, "[read_png_file] File %s is not recognized as a PNG file\n", file_name);
                return 0;
        }
 
-        /* initialize stuff */
-        png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+       /* initialize stuff */
+       png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
 
-        if (!png_ptr) 
+       if (!png_ptr) 
        {
-                fprintf(stderr, "[read_png_file] png_create_read_struct failed\n");
+               fclose(fp);
+               fprintf(stderr, "[read_png_file] png_create_read_struct failed\n");
                return 0;
        }
 
-        info_ptr = png_create_info_struct(png_ptr);
-        if (!info_ptr) 
+       info_ptr = png_create_info_struct(png_ptr);
+       if (!info_ptr)
        {
-                fprintf(stderr, "[read_png_file] png_create_info_struct failed\n");
+               png_destroy_read_struct(&png_ptr, NULL, NULL);
+               fclose(fp);
+               fprintf(stderr, "[read_png_file] png_create_info_struct failed\n");
                return 0;
        }
 
-        if (setjmp(png_jmpbuf(png_ptr))) 
+       if (setjmp(png_jmpbuf(png_ptr)))
        {
-                fprintf(stderr, "[read_png_file] Error during init_io\n");
+               png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+               fclose(fp);
+               fprintf(stderr, "[read_png_file] Error during init_io\n");
                return 0;
        }
 
-        png_init_io(png_ptr, fp);
-        png_set_sig_bytes(png_ptr, 8);
+       png_init_io(png_ptr, fp);
+       png_set_sig_bytes(png_ptr, 8);
 
-        png_read_info(png_ptr, info_ptr);
+       png_read_info(png_ptr, info_ptr);
 
-        width = png_get_image_width(png_ptr, info_ptr);
-        height = png_get_image_height(png_ptr, info_ptr);
-        color_type = png_get_color_type(png_ptr, info_ptr);
-        bit_depth = png_get_bit_depth(png_ptr, info_ptr);
+       width = png_get_image_width(png_ptr, info_ptr);
+       height = png_get_image_height(png_ptr, info_ptr);
+       if (width != 400 || height != 240)
+       {
+               png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+               fclose(fp);
+               fprintf(stderr, "[read_png_file] Error invalid image size\n");
+               return 0;
+       }
+       color_type = png_get_color_type(png_ptr, info_ptr);
+       bit_depth = png_get_bit_depth(png_ptr, info_ptr);
 
-        number_of_passes = png_set_interlace_handling(png_ptr);
-        png_read_update_info(png_ptr, info_ptr);
+       number_of_passes = png_set_interlace_handling(png_ptr);
+       png_read_update_info(png_ptr, info_ptr);
 
         /* read file */
-        if (setjmp(png_jmpbuf(png_ptr))) 
+       if (setjmp(png_jmpbuf(png_ptr)))
        {
-                fprintf(stderr, "[read_png_file] Error during read_image\n");
+               png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+               fclose(fp);
+               fprintf(stderr, "[read_png_file] Error during read_image\n");
                return 0;
        }
 
-       if(row_pointers == 0) 
+       if(row_pointers == 0)
        {
                row_pointers = (png_bytep*) malloc(sizeof(png_bytep) * height);
                row_byte_len = png_get_rowbytes(png_ptr,info_ptr);
-               for (y=0; y<height; y++) 
+               for (y=0; y<height; y++)
                {
-                       row_pointers[y] = (png_byte*) malloc(row_byte_len);
+                       row_pointers[y] = (png_byte*) malloc(row_byte_len);
                }
                row_pointers_bit_shift = (unsigned char*) malloc(sizeof(unsigned char) * height * width * 2);
        }
 
-        png_read_image(png_ptr, row_pointers);
+       png_read_image(png_ptr, row_pointers);
        png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
-        fclose(fp);
+       fclose(fp);
        return 1;
 }
 
@@ -160,13 +170,6 @@ int PNGUtil::send(char* png_file_name)
                        }
                }
        }
-#ifdef UNIT_TEST
-       {
-               int w = write(fd, row_pointers_bit_shift , height * width * 2);
-               printf("write to dst_fd : %d\n",w);
-       }
-#endif
-#ifndef UNIT_TEST
        {
                int w=-1;
                w = write(device_fd, row_pointers_bit_shift, height * width * 2);
@@ -174,7 +177,6 @@ int PNGUtil::send(char* png_file_name)
 //             ret = ioctl(device_fd, 0);
                printf("write to /dev/lcd2 : %d\n",w);
        }
-#endif
        return 1;
 }
 
index 88c78fc..1077eb7 100755 (executable)
@@ -1,7 +1,7 @@
 DESCRIPTION = "PNG Assistant"
 LICENSE = "GPLv2"
 LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
-PR = "r1"
+PR = "r2"
 
 DEPENDS = "swig-native libpng python"
 
index ecf45d7..678a9f3 100644 (file)
@@ -58,7 +58,7 @@ RDEPENDS_${PN} += " \
   ${@base_contains("VUPLUS_FEATURES", "3gmodem", "enigma2-plugin-systemplugins-3gmodemmanager", "", d)} \
   ${@base_contains("VUPLUS_FEATURES", "autoshutdown", "enigma2-plugin-systemplugins-autoshutdown", "", d)} \
   ${@base_contains("VUPLUS_FEATURES", "transcoding", "enigma2-plugin-systemplugins-transcodingsetup enigma2-transtreamproxy", "", d)} \
-  ${@base_conditional("MACHINE", "vuduo2", "duo2lcd4linux", "", d)} \
+  ${@base_conditional("MACHINE", "vuduo2", "duo2lcd4linux lcd4linuxsupport", "", d)} \
 "
 
 PACKAGE_ARCH = "${MACHINE_ARCH}"