Merge remote branch 'origin/bug_593_i2c_device_from_file' into experimental
authorghost <andreas.monzner@multimedia-labs.de>
Sun, 10 Oct 2010 10:50:53 +0000 (12:50 +0200)
committerghost <andreas.monzner@multimedia-labs.de>
Sun, 10 Oct 2010 12:23:43 +0000 (14:23 +0200)
this merge and bug 587 needs new drivers!!

47 files changed:
data/skin_default.xml
data/skin_default/icons/Makefile.am
data/startwizard.xml
lib/driver/rcinput.cpp
lib/dvb/decoder.cpp
lib/dvb/dvbtime.cpp
lib/dvb/epgcache.cpp
lib/gdi/accel.cpp
lib/gdi/bcm.cpp
lib/gdi/font.cpp
lib/gui/epixmap.cpp
lib/gui/epixmap.h
lib/python/Components/NimManager.py
lib/python/Plugins/Extensions/CutListEditor/meta/Makefile.am
lib/python/Plugins/Extensions/DVDBurn/Process.py
lib/python/Plugins/Extensions/DVDBurn/TitleCutter.py
lib/python/Plugins/Extensions/DVDBurn/meta/Makefile.am
lib/python/Plugins/Extensions/DVDPlayer/meta/Makefile.am
lib/python/Plugins/Extensions/GraphMultiEPG/meta/Makefile.am
lib/python/Plugins/Extensions/MediaPlayer/meta/Makefile.am
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/CrashlogAutoSubmit/__init__.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/FrontprocessorUpgrade/meta/Makefile.am
lib/python/Plugins/SystemPlugins/Hotplug/meta/Makefile.am
lib/python/Plugins/SystemPlugins/NFIFlash/meta/Makefile.am
lib/python/Plugins/SystemPlugins/NetworkWizard/meta/Makefile.am
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/SoftwareManager/meta/Makefile.am
lib/python/Plugins/SystemPlugins/TempFanControl/plugin.py [changed mode: 0644->0755]
lib/python/Plugins/SystemPlugins/VideoEnhancement/meta/Makefile.am
lib/python/Plugins/SystemPlugins/VideoTune/meta/Makefile.am
lib/python/Plugins/SystemPlugins/Videomode/meta/Makefile.am
lib/python/Plugins/SystemPlugins/WirelessLan/meta/Makefile.am
lib/python/Screens/ParentalControlSetup.py
main/bsod.cpp

index f9fb09c..e5b3132 100755 (executable)
@@ -1304,7 +1304,7 @@ self.instance.move(ePoint(orgpos.x() + (orgwidth - newwidth)/2, orgpos.y()))
        </screen>
        <!-- Color OLED screen (standby) -->
        <screen name="StandbySummary" position="0,0" size="96,64" id="2">
-               <widget source="global.CurrentTime" render="Label" position="0,0" size="96,64" font="Regular;40" halign="center" valign="center">
+               <widget source="global.CurrentTime" render="Label" position="0,0" size="96,64" font="Regular;38" halign="center" valign="center">
                        <convert type="ClockToText">Format:%H:%M</convert>
                </widget>
                <widget source="session.RecordState" render="FixedLabel" position="0,0" zPosition="1" size="96,64" text=" ">
index 5a836bc..b453aa7 100755 (executable)
@@ -65,3 +65,4 @@ dist_install_DATA = \
        selectioncross.png \
        unlock.png \
        unlockBouquet.png
+
index 70a6e0d..a6b773e 100644 (file)
@@ -142,10 +142,10 @@ config.ParentalControl.configured.save()
                        </code>
                </step>
                <step id="parentalsetup">
-                       <text value="You need to set a pin code and hide it from your children.\n\nDo you want to set the pin now?" />
+                       <text value="You need to set a PIN code and hide it from your children.\n\nDo you want to set the pin now?" />
                        <list>
                                <listentry caption="Yes" step="finishparentalsetup" />
-                               <listentry caption="No" step="finishparentalsetup" />
+                               <listentry caption="No" step="warnpin" />
                        </list>
                        <code pos="after">
 from ParentalControlSetup import ParentalControlChangePin
@@ -153,9 +153,15 @@ if self["list"].index == 0:
        self.session.open(ParentalControlChangePin, config.ParentalControl.servicepin[0], _("parental control pin"))
                        </code>
                </step>
+               <step id="warnpin">
+                       <text value="Please be aware, that anyone can disable the parental control, if you have not set a PIN." />
+               </step>
                <step id="finishparentalsetup">
                        <code>
-config.ParentalControl.setuppinactive.value = True
+if config.ParentalControl.setuppin.value == "aaaa":
+       config.ParentalControl.setuppinactive.value = False
+else:
+       config.ParentalControl.setuppinactive.value = True
 config.ParentalControl.setuppinactive.save()
 config.ParentalControl.servicepinactive.value = True
 config.ParentalControl.servicepinactive.save()
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 ");
 }
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];
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 )
index 1e8414c..119223a 100644 (file)
@@ -2562,7 +2562,7 @@ void eEPGCache::PMTready(eDVBServicePMTHandler *pmthandler)
                                                                {
                                                                        __u8 buffer[10];
                                                                        (*desc)->writeToBuffer(buffer);
-                                                                       if (!strncmp((char*)buffer+2, "EPGDATA", 7))
+                                                                       if (!strncmp((const char *)buffer+2, "EPGDATA", 7))
                                                                        {
                                                                                eServiceReferenceDVB ref;
                                                                                if (!pmthandler->getServiceReference(ref))
@@ -2571,7 +2571,7 @@ void eEPGCache::PMTready(eDVBServicePMTHandler *pmthandler)
                                                                                        messages.send(Message(Message::got_mhw2_channel_pid, ref, pid));
                                                                                }
                                                                        }
-                                                                       else if(!strncmp((char*)buffer+2, "FICHAS", 6))
+                                                                       else if(!strncmp((const char *)buffer+2, "FICHAS", 6))
                                                                        {
                                                                                eServiceReferenceDVB ref;
                                                                                if (!pmthandler->getServiceReference(ref))
@@ -2580,7 +2580,7 @@ void eEPGCache::PMTready(eDVBServicePMTHandler *pmthandler)
                                                                                        messages.send(Message(Message::got_mhw2_summary_pid, ref, pid));
                                                                                }
                                                                        }
-                                                                       else if(!strncmp((char*)buffer+2, "GENEROS", 7))
+                                                                       else if(!strncmp((const char *)buffer+2, "GENEROS", 7))
                                                                        {
                                                                                eServiceReferenceDVB ref;
                                                                                if (!pmthandler->getServiceReference(ref))
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 );
index 1768685..bc0d42d 100644 (file)
@@ -46,25 +46,25 @@ void ePixmap::setPixmapFromFile(const char *filename)
        
                // TODO: This only works for desktop 0
        getDesktop(0)->makeCompatiblePixmap(*m_pixmap);
-        event(evtChangedPixmap);
+       event(evtChangedPixmap);
 }
 
 void ePixmap::setBorderWidth(int pixel)
 {
-        m_border_width=pixel;
-        invalidate();
+       m_border_width=pixel;
+       invalidate();
 }
 
 void ePixmap::setBorderColor(const gRGB &color)
 {
-        m_border_color=color;
-        m_have_border_color=true;
-        invalidate();
+       m_border_color=color;
+       m_have_border_color=true;
+       invalidate();
 }
 
 void ePixmap::checkSize()
 {
-                        /* when we have no pixmap, or a pixmap of different size, we need 
+       /* when we have no pixmap, or a pixmap of different size, we need
           to enable transparency in any case. */
        if (m_pixmap && m_pixmap->size() == size() && !m_alphatest)
                setTransparent(0);
@@ -78,16 +78,16 @@ int ePixmap::event(int event, void *data, void *data2)
        switch (event)
        {
        case evtPaint:
-        {
-                ePtr<eWindowStyle> style;
+       {
+               ePtr<eWindowStyle> style;
 
-                eSize s(size());
-                getStyle(style);
+               eSize s(size());
+               getStyle(style);
 
-//      we don't clear the background before because of performance reasons.
+//     we don't clear the background before because of performance reasons.
 //     when the pixmap is too small to fit the whole widget area, the widget is
 //     transparent anyway, so the background is already painted.
-//             eWidget::event(event, data, data2); 
+//             eWidget::event(event, data, data2);
 
                gPainter &painter = *(gPainter*)data2;
                if (m_pixmap)
@@ -102,20 +102,22 @@ int ePixmap::event(int event, void *data, void *data2)
                        if (m_scale)
                                painter.blitScale(m_pixmap, eRect(ePoint(0, 0), size()), eRect(), flags);
                        else
-                                painter.blit(m_pixmap, ePoint(0, 0), eRect(), flags);
-                }
-
-// border
-                if (m_have_border_color)
-                        painter.setForegroundColor(m_border_color);
-                painter.fill(eRect(0, 0, s.width(), m_border_width));
-                painter.fill(eRect(0, m_border_width, m_border_width, s.height()-m_border_width));
-                painter.fill(eRect(m_border_width, s.height()-m_border_width, s.width()-m_border_width, m_border_width));
-                painter.fill(eRect(s.width()-m_border_width, m_border_width, m_border_width, s.height()-m_border_width));
-
-                return 0;
-        }
-        case evtChangedPixmap:
+                               painter.blit(m_pixmap, ePoint(0, 0), eRect(), flags);
+               }
+
+               if (m_have_border_color)
+                       painter.setForegroundColor(m_border_color);
+
+               if (m_border_width) {
+                       painter.fill(eRect(0, 0, s.width(), m_border_width));
+                       painter.fill(eRect(0, m_border_width, m_border_width, s.height()-m_border_width));
+                       painter.fill(eRect(m_border_width, s.height()-m_border_width, s.width()-m_border_width, m_border_width));
+                       painter.fill(eRect(s.width()-m_border_width, m_border_width, m_border_width, s.height()-m_border_width));
+               }
+
+               return 0;
+       }
+       case evtChangedPixmap:
                checkSize();
                invalidate();
                return 0;
index 9a6e20d..2db26f2 100644 (file)
@@ -12,23 +12,23 @@ public:
 
        void setPixmap(gPixmap *pixmap);
        void setPixmap(ePtr<gPixmap> &pixmap);
-        void setPixmapFromFile(const char *filename);
-        void setAlphatest(int alphatest); /* 1 for alphatest, 2 for alphablend */
-        void setScale(int scale);
-        void setBorderWidth(int pixel);
-        void setBorderColor(const gRGB &color);
+       void setPixmapFromFile(const char *filename);
+       void setAlphatest(int alphatest); /* 1 for alphatest, 2 for alphablend */
+       void setScale(int scale);
+       void setBorderWidth(int pixel);
+       void setBorderColor(const gRGB &color);
 protected:
-        ePtr<gPixmap> m_pixmap;
-        int event(int event, void *data=0, void *data2=0);
+       ePtr<gPixmap> m_pixmap;
+       int event(int event, void *data=0, void *data2=0);
        void checkSize();
 private:
        enum eLabelEvent
-        {
-                evtChangedPixmap = evtUserWidget,
-        };
-        bool m_have_border_color;
-        int m_border_width;
-        gRGB m_border_color;
+       {
+               evtChangedPixmap = evtUserWidget,
+       };
+       bool m_have_border_color;
+       int m_border_width;
+       gRGB m_border_color;
 };
 
 #endif
index 67a1abc..1aff866 100644 (file)
@@ -1398,7 +1398,7 @@ def InitNimManager(nimmgr):
                nim = config.Nims[x]
 
                if slot.isCompatible("DVB-S"):
-                       nim.toneAmplitude = ConfigSelection([("9", "600mV"), ("8", "700mV"), ("7", "800mV"), ("6", "900mV"), ("5", "1100mV")], "7")
+                       nim.toneAmplitude = ConfigSelection([("11", "340mV"), ("10", "360mV"), ("9", "600mV"), ("8", "700mV"), ("7", "800mV"), ("6", "900mV"), ("5", "1100mV")], "7")
                        nim.toneAmplitude.fe_id = x - empty_slots
                        nim.toneAmplitude.slot_id = x
                        nim.toneAmplitude.addNotifier(toneAmplitudeChanged)
index ee18898..e926e3f 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_cutlisteditor.xml
 
index b64541b..e00dedd 100644 (file)
@@ -95,6 +95,8 @@ class DemuxTask(Task):
                self.relevantAudioPIDs = [ ]
                self.getRelevantAudioPIDs(title)
                self.generated_files = [ ]
+               self.mplex_audiofiles = { }
+               self.mplex_videofile = ""
                self.mplex_streamfiles = [ ]
                if len(self.cutlist) > 1:
                        self.args += [ "-cut", self.cutfile ]
@@ -132,8 +134,10 @@ class DemuxTask(Task):
        def haveNewFile(self, file):
                print "[DemuxTask] produced file:", file, self.currentPID
                self.generated_files.append(file)
-               if self.currentPID in self.relevantAudioPIDs or file.endswith("m2v"):
-                       self.mplex_streamfiles.append(file)
+               if self.currentPID in self.relevantAudioPIDs:
+                       self.mplex_audiofiles[self.currentPID] = file
+               elif file.endswith("m2v"):
+                       self.mplex_videofile = file
 
        def haveProgress(self, progress):
                #print "PROGRESS [%s]" % progress
@@ -167,6 +171,12 @@ class DemuxTask(Task):
                f.close()
 
        def cleanup(self, failed):
+               print "[DemuxTask::cleanup]"
+               self.mplex_streamfiles = [ self.mplex_videofile ]
+               for pid in self.relevantAudioPIDs:
+                       self.mplex_streamfiles.append(self.mplex_audiofiles[pid])
+               print self.mplex_streamfiles
+
                if failed:
                        import os
                        for file in self.generated_files:
index a52fad9..71a7f23 100644 (file)
@@ -32,9 +32,9 @@ class TitleCutter(CutListEditor):
                                pid = str(i.getPID())
                                if description == "MPEG":
                                        description = "MP2"
-                               print "[audiotrack] pid:", pid, "description:", description, "language:", DVB_lang
+                               print "[audiotrack] pid:", pid, "description:", description, "language:", DVB_lang, "count:", x, "active:", (x < 8)
                                self.t.properties.audiotracks.append(ConfigSubsection())
-                               self.t.properties.audiotracks[-1].active = ConfigYesNo(default = True)
+                               self.t.properties.audiotracks[-1].active = ConfigYesNo(default = (x < 8))
                                self.t.properties.audiotracks[-1].format = ConfigFixedText(description)
                                self.t.properties.audiotracks[-1].language = ConfigSelection(choices = languageChoices.choices, default=languageChoices.getLanguage(DVB_lang))
                                self.t.properties.audiotracks[-1].pid = ConfigFixedText(pid)
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 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 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 e69de29..cabaadd 100755 (executable)
@@ -0,0 +1,40 @@
+import sha\r
+\r
+def bin2long(s):\r
+       return reduce( lambda x,y:(x<<8L)+y, map(ord, s))\r
+\r
+def long2bin(l):\r
+       res = ""\r
+       for byte in range(128):\r
+               res += chr((l >> (1024 - (byte + 1) * 8)) & 0xff)\r
+       return res\r
+\r
+def rsa_pub1024(src, mod):\r
+       return long2bin(pow(bin2long(src), 65537, bin2long(mod)))\r
+       \r
+def decrypt_block(src, mod):\r
+       if len(src) != 128 and len(src) != 202:\r
+               return None\r
+       dest = rsa_pub1024(src[:128], mod)\r
+       hash = sha.new(dest[1:107])\r
+       if len(src) == 202:\r
+               hash.update(src[131:192])       \r
+       result = hash.digest()\r
+       if result == dest[107:127]:\r
+               return dest\r
+       return None\r
+\r
+def validate_cert(cert, key):\r
+       buf = decrypt_block(cert[8:], key) \r
+       if buf is None:\r
+               return None\r
+       return buf[36:107] + cert[139:196]\r
+\r
+def read_random():\r
+       try:\r
+               fd = open("/dev/urandom", "r")\r
+               buf = fd.read(8)\r
+               fd.close()\r
+               return buf\r
+       except:\r
+               return None
\ No newline at end of file
index 2563981..92c1628 100755 (executable)
@@ -8,12 +8,13 @@ from Screens.Screen import Screen
 from Screens.VirtualKeyBoard import VirtualKeyBoard
 from Screens.ChoiceBox import ChoiceBox
 from Screens.MessageBox import MessageBox
-from enigma import ePoint
+from enigma import ePoint, eTPM
 from Tools import Notifications
 
 import os
 from twisted.mail import smtp, relaymanager
 import MimeWriter, mimetools, StringIO
+from __init__ import bin2long, long2bin, rsa_pub1024, decrypt_block, validate_cert, read_random
 
 config.plugins.crashlogautosubmit = ConfigSubsection()
 config.plugins.crashlogautosubmit.sendmail = ConfigSelection(default = "send", choices = [
@@ -376,11 +377,36 @@ def callCrashMailer(result,session):
 
 def autostart(reason, **kwargs):
        print "[CrashlogAutoSubmit] - autostart"
-       if "session" in kwargs:
-               try:
-                       startMailer(kwargs["session"])
-               except ImportError, e:
-                       print "[CrashlogAutoSubmit] Twisted-mail not available, not starting CrashlogAutoSubmitter", e
+       try:
+               device = open("/proc/stb/info/model", "r").readline().strip()
+       except:
+               device = ""     
+       if device != "dm7025":
+               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)
+               if l2cert is None:
+                       return
+               l2key = validate_cert(l2cert, rootkey)
+               if l2key is None:
+                       return
+               l3cert = etpm.getCert(eTPM.TPMD_DT_LEVEL3_CERT)
+               if l3cert is None:
+                       return
+               l3key = validate_cert(l3cert, l2key)
+               if l3key is None:
+                       return
+               rnd = read_random()
+               if rnd is None:
+                       return
+               val = etpm.challenge(rnd)
+               result = decrypt_block(val, l3key)
+       if device == "dm7025" or result[80:88] == rnd:
+               if "session" in kwargs:
+                       try:
+                               startMailer(kwargs["session"])
+                       except ImportError, e:
+                               print "[CrashlogAutoSubmit] Twisted-mail not available, not starting CrashlogAutoSubmitter", e
 
 
 def openconfig(session, **kwargs):
index 9b0a2ed..92a5473 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_diseqctester.xml
 
index a757b53..cf5608b 100755 (executable)
@@ -1,3 +1,3 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_hotplug.xml
index 0633e7c..598c071 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_nfiflash.xml
 
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
 
old mode 100644 (file)
new mode 100755 (executable)
index c8af9cd..42fe82d
@@ -131,6 +131,7 @@ class TempFanControl(Screen, ConfigListScreen):
                ConfigListScreen.__init__(self, self.list, session = self.session)
                #self["config"].list = self.list
                #self["config"].setList(self.list)
+               self["config"].l.setSeperation(300)
                
                self["actions"] = ActionMap(["OkCancelActions", "ColorActions"], 
                {
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 6bc4aab..692d91a 100755 (executable)
@@ -1,4 +1,4 @@
-installdir = $(datadir)/meta/
+installdir = $(datadir)/meta
 
 dist_install_DATA = plugin_wirelesslan.xml
 
index eae12da..f174b58 100644 (file)
@@ -78,21 +78,21 @@ class ParentalControlSetup(Screen, ConfigListScreen, ProtectedScreen):
                        #self.list.append(getConfigListEntry(_("Configuration mode"), config.ParentalControl.mode))
                        self.list.append(getConfigListEntry(_("Protect setup"), config.ParentalControl.setuppinactive))
                        if config.ParentalControl.setuppinactive.value:
-                               self.changeSetupPin = getConfigListEntry(_("Change setup pin"), NoSave(ConfigNothing()))
+                               self.changeSetupPin = getConfigListEntry(_("Change setup PIN"), NoSave(ConfigNothing()))
                                self.list.append(self.changeSetupPin)
                        self.list.append(getConfigListEntry(_("Protect services"), config.ParentalControl.servicepinactive))
                        if config.ParentalControl.servicepinactive.value:
                                self.list.append(getConfigListEntry(_("Parental control type"), config.ParentalControl.type))
                                if config.ParentalControl.mode.value == "complex":
-                                       self.changePin = getConfigListEntry(_("Change service pins"), NoSave(ConfigNothing()))
+                                       self.changePin = getConfigListEntry(_("Change service PINs"), NoSave(ConfigNothing()))
                                        self.list.append(self.changePin)
                                elif config.ParentalControl.mode.value == "simple":     
-                                       self.changePin = getConfigListEntry(_("Change service pin"), NoSave(ConfigNothing()))
+                                       self.changePin = getConfigListEntry(_("Change service PIN"), NoSave(ConfigNothing()))
                                        self.list.append(self.changePin)
                                #Added Option to remember the service pin
-                               self.list.append(getConfigListEntry(_("Remember service pin"), config.ParentalControl.storeservicepin)) 
+                               self.list.append(getConfigListEntry(_("Remember service PIN"), config.ParentalControl.storeservicepin)) 
                                #Added Option to remember the cancellation of service pin entry
-                               self.list.append(getConfigListEntry(_("Remember service pin cancel"), config.ParentalControl.storeservicepincancel))    
+                               self.list.append(getConfigListEntry(_("Remember service PIN cancel"), config.ParentalControl.storeservicepincancel))    
                                self.editListEntry = getConfigListEntry(_("Edit services list"), NoSave(ConfigNothing()))
                                self.list.append(self.editListEntry)
                                #New funtion: Possibility to add Bouquets to whitelist / blacklist
@@ -115,9 +115,9 @@ class ParentalControlSetup(Screen, ConfigListScreen, ProtectedScreen):
                        if config.ParentalControl.mode.value == "complex":
                                pass
                        else:
-                               self.session.open(ParentalControlChangePin, config.ParentalControl.servicepin[0], _("service pin"))
+                               self.session.open(ParentalControlChangePin, config.ParentalControl.servicepin[0], _("service PIN"))
                elif self["config"].l.getCurrentSelection() == self.changeSetupPin:
-                       self.session.open(ParentalControlChangePin, config.ParentalControl.setuppin, _("setup pin"))
+                       self.session.open(ParentalControlChangePin, config.ParentalControl.setuppin, _("setup PIN"))
                elif self["config"].l.getCurrentSelection() == self.reloadLists:
                        parentalControl.open()
                else:
@@ -137,14 +137,14 @@ class ParentalControlSetup(Screen, ConfigListScreen, ProtectedScreen):
 
        def SetupPinMessageCallback(self, value):
                if value:
-                       self.session.openWithCallback(self.cancelCB, ParentalControlChangePin, config.ParentalControl.setuppin, _("setup pin"))
+                       self.session.openWithCallback(self.cancelCB, ParentalControlChangePin, config.ParentalControl.setuppin, _("setup PIN"))
                else:
                        config.ParentalControl.setuppinactive.value = False
                        self.keyCancel()
 
        def ServicePinMessageCallback(self, value):
                if value:
-                       self.session.openWithCallback(self.cancelCB, ParentalControlChangePin, config.ParentalControl.servicepin[0], _("service pin"))
+                       self.session.openWithCallback(self.cancelCB, ParentalControlChangePin, config.ParentalControl.servicepin[0], _("service PIN"))
                else:
                        config.ParentalControl.servicepinactive.value = False
                        self.keyCancel()
@@ -317,8 +317,8 @@ class ParentalControlChangePin(Screen, ConfigListScreen, ProtectedScreen):
                self.pin2 = ConfigPIN(default = 1112, censor = "*")
                self.pin1.addEndNotifier(boundFunction(self.valueChanged, 1))
                self.pin2.addEndNotifier(boundFunction(self.valueChanged, 2))
-               self.list.append(getConfigListEntry(_("New pin"), NoSave(self.pin1)))
-               self.list.append(getConfigListEntry(_("Reenter new pin"), NoSave(self.pin2)))
+               self.list.append(getConfigListEntry(_("New PIN"), NoSave(self.pin1)))
+               self.list.append(getConfigListEntry(_("Reenter new PIN"), NoSave(self.pin2)))
                ConfigListScreen.__init__(self, self.list)
 #              print "old pin:", pin
                #if pin.value != "aaaa":
@@ -345,7 +345,7 @@ class ParentalControlChangePin(Screen, ConfigListScreen, ProtectedScreen):
                        self.keyOK()
 
        def getPinText(self):
-               return _("Please enter the old pin code")
+               return _("Please enter the old PIN code")
 
        def isProtected(self):
                return (self.pin.value != "aaaa")
@@ -364,9 +364,9 @@ class ParentalControlChangePin(Screen, ConfigListScreen, ProtectedScreen):
                if self.pin1.value == self.pin2.value:
                        self.pin.value = self.pin1.value
                        self.pin.save()
-                       self.session.openWithCallback(self.close, MessageBox, _("The pin code has been changed successfully."), MessageBox.TYPE_INFO)
+                       self.session.openWithCallback(self.close, MessageBox, _("The PIN code has been changed successfully."), MessageBox.TYPE_INFO)
                else:
-                       self.session.open(MessageBox, _("The pin codes you entered are different."), MessageBox.TYPE_ERROR)
+                       self.session.open(MessageBox, _("The PIN codes you entered are different."), MessageBox.TYPE_ERROR)
 
        def cancel(self):
                self.close(None)
index 45f97c6..68b5d57 100755 (executable)
@@ -234,6 +234,13 @@ void bsodFatal(const char *component)
 #endif
                fprintf(f, "\t\t<contactemail>%s</contactemail>\n", crash_emailaddr);
                fprintf(f, "\t\t<!-- Please email this crashlog to above address -->\n");
+               std::string activeSkin = getConfigFileValue("config.skin.primary_skin");
+               if (activeSkin != "Error")
+               {
+                       if (activeSkin == "")
+                               activeSkin = "Default Skin";
+                       fprintf(f, "\t\t<skin>%s</skin>\n", activeSkin.c_str());
+               }
                fprintf(f, "\t</enigma2>\n");
 
                fprintf(f, "\t<image>\n");