add possibility to set rotor turning speed to fast/slow or set a time epoch
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>
Sat, 7 Jul 2007 23:56:09 +0000 (23:56 +0000)
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>
Sat, 7 Jul 2007 23:56:09 +0000 (23:56 +0000)
for turning fast
add some missing and new translations

lib/dvb/sec.cpp
lib/dvb/sec.h
lib/python/Components/NimManager.py
lib/python/Screens/Satconfig.py
po/de.po

index 7f45f576ff21ff77174bbabaadeffce0c4ed2358..ff3f9bd04ddfffca73b6b5bbf2cc32a6c4f4babc 100644 (file)
@@ -1,6 +1,7 @@
 #include <lib/dvb/dvb.h>
 #include <lib/dvb/sec.h>
 #include <lib/dvb/rotor_calc.h>
+#include <lib/dvb/dvbtime.h>
 
 #include <set>
 
@@ -253,6 +254,30 @@ int eDVBSatelliteEquipmentControl::canTune(const eDVBFrontendParametersSatellite
        return ret;
 }
 
+bool need_turn_fast(int turn_speed)
+{
+       if (turn_speed == eDVBSatelliteRotorParameters::FAST)
+               return true;
+       else if (turn_speed != eDVBSatelliteRotorParameters::SLOW)
+       {
+               int begin = turn_speed >> 16; // high word is start time
+               int end = turn_speed&0xFFFF; // low word is end time
+               time_t now_time = eDVBLocalTimeHandler::getInstance()->nowTime();
+               tm nowTime;
+               localtime_r(&now_time, &nowTime);
+               int now = (nowTime.tm_hour + 1) * 60 + nowTime.tm_min + 1;
+               bool neg = end <= begin;
+               if (neg) {
+                       int tmp = begin;
+                       begin = end;
+                       end = tmp;
+               }
+               if ((now >= begin && now < end) ^ neg)
+                       return true;
+       }
+       return false;
+}
+
 #define VOLTAGE(x) (lnb_param.m_increased_voltage ? iDVBFrontend::voltage##x##_5 : iDVBFrontend::voltage##x)
 
 RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPARAMETERS &parm, const eDVBFrontendParametersSatellite &sat, int slot_id)
@@ -678,7 +703,8 @@ RESULT eDVBSatelliteEquipmentControl::prepare(iDVBFrontend &frontend, FRONTENDPA
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::IF_NO_MORE_ROTOR_DISEQC_RETRYS_GOTO, +9 ) );  // timeout .. we assume now the rotor is already at the correct position
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::GOTO, -8) );  // goto loop start
 ////////////////////
-                                                       sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(18)) );
+                                                       if (need_turn_fast(rotor_param.m_inputpower_parameters.m_turning_speed))
+                                                               sec_sequence.push_back( eSecCommand(eSecCommand::SET_VOLTAGE, VOLTAGE(18)) );
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::SET_TIMEOUT, m_params[MOTOR_RUNNING_TIMEOUT]*20) );  // 2 minutes running timeout
 // rotor running loop
                                                        sec_sequence.push_back( eSecCommand(eSecCommand::SLEEP, 50) );  // wait 50msec
@@ -1072,6 +1098,16 @@ RESULT eDVBSatelliteEquipmentControl::setRotorPosNum(int rotor_pos_num)
        return 0;
 }
 
+RESULT eDVBSatelliteEquipmentControl::setRotorTurningSpeed(int speed)
+{
+       eSecDebug("eDVBSatelliteEquipmentControl::setRotorTurningSpeed(%d)", speed);
+       if ( currentLNBValid() )
+               m_lnbs[m_lnbidx].m_rotor_parameters.m_inputpower_parameters.m_turning_speed = speed;
+       else
+               return -ENOENT;
+       return 0;
+}
+
 struct sat_compare
 {
        int orb_pos, lofl, lofh;
index 31415c4254923dd89ffc477b344f336b3c9093f6..dba5565100fff7c68c871bf4c0ae2aca592df7b0 100644 (file)
@@ -180,6 +180,7 @@ class eDVBSatelliteRotorParameters
 #endif
 public:
        enum { NORTH, SOUTH, EAST, WEST };
+       enum { FAST, SLOW };
 #ifndef SWIG
        eDVBSatelliteRotorParameters() { setDefaultOptions(); }
 
@@ -187,6 +188,7 @@ public:
        {
                bool m_use;     // can we use rotor inputpower to detect rotor running state ?
                __u8 m_delta;   // delta between running and stopped rotor
+               unsigned int m_turning_speed; // SLOW, FAST, or fast turning epoch
        };
        eDVBSatelliteRotorInputpowerParameters m_inputpower_parameters;
 
@@ -201,6 +203,7 @@ public:
 
        void setDefaultOptions() // set default rotor options
        {
+               m_inputpower_parameters.m_turning_speed = FAST; // fast turning
                m_inputpower_parameters.m_use = true;
                m_inputpower_parameters.m_delta = 60;
                m_gotoxx_parameters.m_lo_direction = EAST;
@@ -307,6 +310,7 @@ public:
        RESULT setLaDirection(int direction);
        RESULT setUseInputpower(bool onoff);
        RESULT setInputpowerDelta(int delta);  // delta between running and stopped rotor
+       RESULT setRotorTurningSpeed(int speed);  // set turning speed..
 /* Satellite Specific Parameters */
        RESULT addSatellite(int orbital_position);
        RESULT setVoltageMode(int mode);
index 1ba676c9c206d24029e62a16577fe430950c4ecd..00f34c6b0f3e87dfce970ce8bdf75b66f2707909 100644 (file)
@@ -1,4 +1,4 @@
-from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, ConfigSubDict, ConfigOnOff
+from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, ConfigSubDict, ConfigOnOff, ConfigDateTime
 
 from enigma import eDVBSatelliteEquipmentControl as secClass, \
        eDVBSatelliteLNBParameters as lnbParam, \
@@ -16,6 +16,8 @@ from xml.sax import make_parser
 from xml.sax.handler import ContentHandler
 
 from Tools.BoundFunction import boundFunction
+from time import localtime, mktime
+from datetime import datetime
 
 def getConfigSatlist(orbpos, satlist):
        default_orbpos = None
@@ -33,7 +35,7 @@ def tryOpen(filename):
        return procFile
 
 class SecConfigure:
-       def addLNBSimple(self, sec, slotid, diseqcmode, toneburstmode = diseqcParam.NO, diseqcpos = diseqcParam.SENDNO, orbpos = 0, longitude = 0, latitude = 0, loDirection = 0, laDirection = 0):
+       def addLNBSimple(self, sec, slotid, diseqcmode, toneburstmode = diseqcParam.NO, diseqcpos = diseqcParam.SENDNO, orbpos = 0, longitude = 0, latitude = 0, loDirection = 0, laDirection = 0, turningSpeed = rotorParam.FAST):
                #simple defaults
                sec.addLNB()
                tunermask = 1 << slotid
@@ -71,6 +73,7 @@ class SecConfigure:
                        sec.setLoDirection(loDirection)
                        sec.setUseInputpower(True)
                        sec.setInputpowerDelta(50)
+                       sec.setRotorTurningSpeed(turningSpeed)
 
                        for x in self.NimManager.satList:
                                print "Add sat " + str(x[0])
@@ -102,9 +105,9 @@ class SecConfigure:
                self.linked = { }
                self.satposdepends = { }
                self.equal = { }
-               
+
                nim_slots = self.NimManager.nim_slots
-               
+
                for slot in nim_slots:
                        x = slot.slot
                        nim = slot.config
@@ -155,11 +158,20 @@ class SecConfigure:
                                                                loValue = rotorParam.EAST
                                                        else:
                                                                loValue = rotorParam.WEST
+                                                       turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW }
+                                                       if turn_speed_dict.has_key(nim.turningSpeed.value):
+                                                               turning_speed = turn_speed_dict[nim.turningSpeed.value]
+                                                       else:
+                                                               beg_time = localtime(nim.fastTurningBegin.value)
+                                                               end_time = localtime(nim.fastTurningEnd.value)
+                                                               turning_speed = ((beg_time.tm_hour+1) * 60 + beg_time.tm_min + 1) << 16
+                                                               turning_speed |= (end_time.tm_hour+1) * 60 + end_time.tm_min + 1
                                                        self.addLNBSimple(sec, slotid = x, diseqcmode = 3,
                                                                longitude = nim.longitude.float,
                                                                loDirection = loValue,
                                                                latitude = nim.latitude.float,
-                                                               laDirection = laValue)
+                                                               laDirection = laValue,
+                                                               turningSpeed = turning_speed)
                                        elif nim.configMode.value == "advanced": #advanced config
                                                self.updateAdvanced(sec, x)
                print "sec config completed"
@@ -196,18 +208,18 @@ class SecConfigure:
                                        sec.setLNBLOFL(currLnb.lofl.value * 1000)
                                        sec.setLNBLOFH(currLnb.lofh.value * 1000)
                                        sec.setLNBThreshold(currLnb.threshold.value * 1000)
-                                       
+
 #                              if currLnb.output_12v.value == "0V":
 #                                      pass # nyi in drivers
 #                              elif currLnb.output_12v.value == "12V":
 #                                      pass # nyi in drivers
-                                       
+
                                if currLnb.increased_voltage.value:
                                        sec.setLNBIncreasedVoltage(lnbParam.ON)
                                else:
                                        sec.setLNBIncreasedVoltage(lnbParam.OFF)
-                               
-                               dm = currLnb.diseqcMode.value 
+
+                               dm = currLnb.diseqcMode.value
                                if dm == "none":
                                        sec.setDiSEqCMode(diseqcParam.NONE)
                                elif dm == "1_0":
@@ -227,10 +239,10 @@ class SecConfigure:
                                                sec.setToneburst(diseqcParam.A)
                                        elif currLnb.toneburst.value == "B":
                                                sec.setToneburst(diseqcParam.B)
-                                       
+
                                        # Committed Diseqc Command
                                        cdc = currLnb.commitedDiseqcCommand.value
-                                       
+
                                        c = { "none": diseqcParam.SENDNO,
                                                "AA": diseqcParam.AA,
                                                "AB": diseqcParam.AB,
@@ -243,9 +255,9 @@ class SecConfigure:
                                                sec.setCommittedCommand(long(cdc))
 
                                        sec.setFastDiSEqC(currLnb.fastDiseqc.value)
-                                               
+
                                        sec.setSeqRepeat(currLnb.sequenceRepeat.value)
-                                               
+
                                        if currLnb.diseqcMode.value == "1_0":
                                                currCO = currLnb.commandOrder1_0.value
                                        else:
@@ -260,9 +272,9 @@ class SecConfigure:
                                                sec.setRepeats({"none": 0, "one": 1, "two": 2, "three": 3}[currLnb.diseqcRepeats.value])
 
                                        setCommandOrder = False
-                                       
-                                       # 0 "committed, toneburst", 
-                                       # 1 "toneburst, committed", 
+
+                                       # 0 "committed, toneburst",
+                                       # 1 "toneburst, committed",
                                        # 2 "committed, uncommitted, toneburst",
                                        # 3 "toneburst, committed, uncommitted",
                                        # 4 "uncommitted, committed, toneburst"
@@ -283,10 +295,19 @@ class SecConfigure:
                                                sec.setLoDirection(rotorParam.EAST)
                                        else:
                                                sec.setLoDirection(rotorParam.WEST)
-                                               
+
                                if currLnb.powerMeasurement.value:
                                        sec.setUseInputpower(True)
                                        sec.setInputpowerDelta(currLnb.powerThreshold.value)
+                                       turn_speed_dict = { "fast": rotorParam.FAST, "slow": rotorParam.SLOW }
+                                       if turn_speed_dict.has_key(currLnb.turningSpeed.value):
+                                               turning_speed = turn_speed_dict[currLnb.turningSpeed.value]
+                                       else:
+                                               beg_time = localtime(currLnb.fastTurningBegin.value)
+                                               end_time = localtime(currLnb.fastTurningEnd.value)
+                                               turning_speed = ((beg_time.tm_hour + 1) * 60 + beg_time.tm_min + 1) << 16
+                                               turning_speed |= (end_time.tm_hour + 1) * 60 + end_time.tm_min + 1
+                                       sec.setRotorTurningSpeed(turning_speed)
                                else:
                                        sec.setUseInputpower(False)
 
@@ -817,7 +838,11 @@ def InitNimManager(nimmgr):
                        nim.longitudeOrientation = ConfigSelection(choices={"east": _("East"), "west": _("West")}, default = "east")
                        nim.latitude = ConfigFloat(default=[50,767], limits=[(0,359),(0,999)])
                        nim.latitudeOrientation = ConfigSelection(choices={"north": _("North"), "south": _("South")}, default="north")
-                       
+                       nim.turningSpeed = ConfigSelection(choices = [("fast", _("Fast")), ("slow", _("Slow")), ("fast epoch", _("Fast epoch")) ], default = "fast")
+                       btime = datetime(1970, 1, 1, 7, 0);
+                       nim.fastTurningBegin = ConfigDateTime(default = mktime(btime.timetuple()), formatstring = _("%H:%M"), increment = 900)
+                       etime = datetime(1970, 1, 1, 19, 0);
+                       nim.fastTurningEnd = ConfigDateTime(default = mktime(etime.timetuple()), formatstring = _("%H:%M"), increment = 900)
                        # get other frontends of the same type
                        satNimList = nimmgr.getNimListOfType(slot.type, slot.slot)
                        satNimListNames = {}
@@ -887,7 +912,11 @@ def InitNimManager(nimmgr):
                                nim.advanced.lnb[x].latitudeOrientation = ConfigSelection(choices = [("north", _("North")), ("south", _("South"))], default = "north")
                                nim.advanced.lnb[x].powerMeasurement = ConfigYesNo(default=True)
                                nim.advanced.lnb[x].powerThreshold = ConfigInteger(default=50, limits=(0, 100))
-
+                               nim.advanced.lnb[x].turningSpeed = ConfigSelection(choices = [("fast", _("Fast")), ("slow", _("Slow")), ("fast epoch", _("Fast epoch"))], default = "fast")
+                               btime = datetime(1970, 1, 1, 7, 0);
+                               nim.advanced.lnb[x].fastTurningBegin = ConfigDateTime(default=mktime(btime.timetuple()), formatstring = _("%H:%M"), increment = 600)
+                               etime = datetime(1970, 1, 1, 19, 0);
+                               nim.advanced.lnb[x].fastTurningEnd = ConfigDateTime(default=mktime(etime.timetuple()), formatstring = _("%H:%M"), increment = 600)
                elif slot.isCompatible("DVB-C"):
                        nim.configMode = ConfigSelection(
                                choices = {
index e07b45e154cdc69aea6ab660c220a423d1021b7e..de04dc45adbb09b17a915e27ae43fb302397dee9 100644 (file)
@@ -5,6 +5,9 @@ from Components.MenuList import MenuList
 from Components.NimManager import nimmanager
 from Components.config import getConfigListEntry, config, ConfigNothing
 
+from time import mktime, localtime
+from datetime import datetime
+
 class NimSetup(Screen, ConfigListScreen):
        def createSimpleSetup(self, list, mode):
                if mode == "single":
@@ -25,6 +28,14 @@ class NimSetup(Screen, ConfigListScreen):
                list.append(getConfigListEntry(" ", self.nimConfig.longitudeOrientation))
                list.append(getConfigListEntry(_("Latitude"), self.nimConfig.latitude))
                list.append(getConfigListEntry(" ", self.nimConfig.latitudeOrientation))
+               self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), self.nimConfig.turningSpeed)
+               self.list.append(self.turningSpeed)
+               if self.nimConfig.turningSpeed.value == "fast epoch":
+                       self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), self.nimConfig.fastTurningBegin)
+                       self.turnFastEpochEnd = getConfigListEntry(_("End time"), self.nimConfig.fastTurningEnd)
+                       self.list.append(self.turnFastEpochBegin)
+                       self.list.append(self.turnFastEpochEnd)
+
 #              elif self.nimConfig.positionerMode.value == "manual": # manual
 #                      pass
 
@@ -40,13 +51,16 @@ class NimSetup(Screen, ConfigListScreen):
                self.advancedUsalsEntry = None
                self.advancedLof = None
                self.advancedPowerMeasurement = None
+               self.turningSpeed = None
+               self.turnFastEpochBegin = None
+               self.turnFastEpochEnd = None
 
                self.cableScanType = None
 
                if self.nim.isCompatible("DVB-S"):
                        self.configMode = getConfigListEntry(_("Configuration Mode"), self.nimConfig.configMode)
                        self.list.append(self.configMode)
-                       
+
                        if self.nimConfig.configMode.value == "simple":                 #simple setup
                                self.diseqcModeEntry = getConfigListEntry(_("DiSEqC Mode"), self.nimConfig.diseqcMode)
                                self.list.append(self.diseqcModeEntry)
@@ -115,7 +129,7 @@ class NimSetup(Screen, ConfigListScreen):
        def newConfig(self):
                checkList = (self.configMode, self.diseqcModeEntry, self.advancedSatsEntry, \
                        self.advancedLnbsEntry, self.advancedDiseqcMode, self.advancedUsalsEntry, \
-                       self.advancedLof, self.advancedPowerMeasurement, self.cableScanType)
+                       self.advancedLof, self.advancedPowerMeasurement, self.turningSpeed, self.cableScanType)
                for x in checkList:
                        if self["config"].getCurrent() == x:
                                self.createSetup()
@@ -124,6 +138,12 @@ class NimSetup(Screen, ConfigListScreen):
                if self.have_advanced and self.nim.config_mode == "advanced":
                        self.fillAdvancedList()
                for x in self["config"].list:
+                       if x in [self.turnFastEpochBegin, self.turnFastEpochEnd]:
+                               # workaround for storing only hour*3600+min*60 value in configfile
+                               # not really needed.. just for cosmetics..
+                               tm = localtime(x[1].value)
+                               dt = datetime(1970, 1, 1, tm.tm_hour, tm.tm_min)
+                               x[1].value = int(mktime(dt.timetuple()))
                        x[1].save()
                nimmanager.sec.update()
 
@@ -165,8 +185,15 @@ class NimSetup(Screen, ConfigListScreen):
                                        self.list.append(getConfigListEntry(" ", currLnb.latitudeOrientation))
                                        self.advancedPowerMeasurement = getConfigListEntry("Use Power Measurement", currLnb.powerMeasurement)
                                        self.list.append(self.advancedPowerMeasurement)
-                                       if currLnb.powerMeasurement.value == "yes":
-                                               self.list.append(getConfigListEntry("Power Threshold in mA", currLnb.powerThreshold))
+                                       if currLnb.powerMeasurement.value:
+                                               self.list.append(getConfigListEntry(_("Power threshold in mA"), currLnb.powerThreshold))
+                                               self.turningSpeed = getConfigListEntry(_("Rotor turning speed"), currLnb.turningSpeed)
+                                               self.list.append(self.turningSpeed)
+                                               if currLnb.turningSpeed.value == "fast epoch":
+                                                       self.turnFastEpochBegin = getConfigListEntry(_("Begin time"), currLnb.fastTurningBegin)
+                                                       self.turnFastEpochEnd = getConfigListEntry(_("End time"), currLnb.fastTurningEnd)
+                                                       self.list.append(self.turnFastEpochBegin)
+                                                       self.list.append(self.turnFastEpochEnd)
                        self.advancedLof = getConfigListEntry(_("LOF"), currLnb.lof)
                        self.list.append(self.advancedLof)
                        if currLnb.lof.value == "user_defined":
index 5ce9581a03b023fd472e623c3e19c11cb98d4b22..e7dd7607c052f8e4fd30c55ba904e2447a97693a 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: tuxbox-enigma 0.0.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-19 00:20+0200\n"
+"POT-Creation-Date: 2007-07-08 01:27+0200\n"
 "PO-Revision-Date: 2007-06-19 00:21+0100\n"
 "Last-Translator: Stefan Pluecken <stefanpl@baer.rwth-aachen.de>\n"
 "Language-Team: none\n"
@@ -60,6 +60,9 @@ msgstr ""
 msgid "#ffffffff"
 msgstr ""
 
+msgid "%H:%M"
+msgstr ""
+
 #, python-format
 msgid "%d min"
 msgstr "%d min"
@@ -357,6 +360,9 @@ msgstr "Band"
 msgid "Bandwidth"
 msgstr "Bandbreite"
 
+msgid "Begin time"
+msgstr "Startzeit"
+
 msgid "Brightness"
 msgstr "Helligkeit"
 
@@ -612,7 +618,7 @@ msgid "Dish"
 msgstr "Schüssel"
 
 msgid "Display Setup"
-msgstr ""
+msgstr "Display Einstellungen"
 
 msgid ""
 "Do you really want to REMOVE\n"
@@ -734,6 +740,9 @@ msgstr "Eingeschaltet"
 msgid "End"
 msgstr "Ende"
 
+msgid "End time"
+msgstr "Endzeit"
+
 msgid "EndTime"
 msgstr "Endzeit"
 
@@ -794,9 +803,15 @@ msgstr "Erweiterungen"
 msgid "FEC"
 msgstr "FEC"
 
+msgid "Fast"
+msgstr "Schnell"
+
 msgid "Fast DiSEqC"
 msgstr "Schnelles DiSEqC"
 
+msgid "Fast epoch"
+msgstr "Schnell Zeitraum"
+
 msgid "Favourites"
 msgstr "Favoriten"
 
@@ -866,6 +881,9 @@ msgstr "Gehe zu 0"
 msgid "Goto position"
 msgstr "Auf Position drehen"
 
+msgid "Greek"
+msgstr "Griechisch"
+
 msgid "Guard Interval"
 msgstr ""
 
@@ -1411,6 +1429,9 @@ msgstr "Rotor-Einstellungen"
 msgid "Positioner storage"
 msgstr "Positionsspeicher"
 
+msgid "Power threshold in mA"
+msgstr "Strom Schwellwert in mA"
+
 msgid "Predefined transponder"
 msgstr "Vordefinierte Transponder"
 
@@ -1551,11 +1572,14 @@ msgstr "Rechts"
 msgid "Rolloff"
 msgstr ""
 
+msgid "Rotor turning speed"
+msgstr "Rotor Drehgeschwindigkeit"
+
 msgid "Running"
-msgstr ""
+msgstr "Aktiviert"
 
 msgid "Russian"
-msgstr ""
+msgstr "Russisch"
 
 msgid "S-Video"
 msgstr "S-Video"
@@ -1588,64 +1612,64 @@ msgid "Scan "
 msgstr "Suche "
 
 msgid "Scan QAM128"
-msgstr ""
+msgstr "Durchsuche QAM128"
 
 msgid "Scan QAM16"
-msgstr ""
+msgstr "Durchsuche QAM16"
 
 msgid "Scan QAM256"
-msgstr ""
+msgstr "Durchsuche QAM256"
 
 msgid "Scan QAM32"
-msgstr ""
+msgstr "Durchsuche QAM32"
 
 msgid "Scan QAM64"
-msgstr ""
+msgstr "Durchsuche QAM64"
 
 msgid "Scan SR6875"
-msgstr ""
+msgstr "Durchsuche SR6875"
 
 msgid "Scan SR6900"
-msgstr ""
+msgstr "Durchsuche SR6900"
 
 msgid "Scan additional SR"
-msgstr ""
+msgstr "Durchsuche weitere SR"
 
 msgid "Scan band EU HYPER"
-msgstr ""
+msgstr "Durchsuche EU HYPER"
 
 msgid "Scan band EU MID"
-msgstr ""
+msgstr "Durchsuche EU MID"
 
 msgid "Scan band EU SUPER"
-msgstr ""
+msgstr "Durchsuche EU SUPER"
 
 msgid "Scan band EU UHF IV"
-msgstr ""
+msgstr "Durchsuche EU UHF IV"
 
 msgid "Scan band EU UHF V"
-msgstr ""
+msgstr "Durchsuche EU UHF V"
 
 msgid "Scan band EU VHF I"
-msgstr ""
+msgstr "Durchsuche EU VHF I"
 
 msgid "Scan band EU VHF III"
-msgstr ""
+msgstr "Durchsucher EU VHF III"
 
 msgid "Scan band US HIGH"
-msgstr ""
+msgstr "Durchsuche US HIGH"
 
 msgid "Scan band US HYPER"
-msgstr ""
+msgstr "Durchsuche US HYPER"
 
 msgid "Scan band US LOW"
-msgstr ""
+msgstr "Durchsucher US LOW"
 
 msgid "Scan band US MID"
-msgstr ""
+msgstr "Durchsuche US MID"
 
 msgid "Scan band US SUPER"
-msgstr ""
+msgstr "Durchsuche US SUPER"
 
 msgid "Search east"
 msgstr "Östlich suchen"
@@ -1697,7 +1721,7 @@ msgid ""
 "(Timeout reading PMT)"
 msgstr ""
 "Kanal ist ungültig!\n"
-"(Zeit lief beim Lesen von PMT ab)"
+"(Zeit lief beim Lesen der PMT ab)"
 
 msgid ""
 "Service not found!\n"
@@ -1779,6 +1803,9 @@ msgstr "Diaschau-Intervall (sek.)"
 msgid "Slot %d"
 msgstr "Steckplatz %d"
 
+msgid "Slow"
+msgstr ""
+
 msgid "Some plugins are not available:\n"
 msgstr "Einige Plugins sind nicht verfügbar:\n"
 
@@ -1846,10 +1873,10 @@ msgid "Stop Timeshift?"
 msgstr "Timeshift beenden?"
 
 msgid "Stop current event and disable coming events"
-msgstr ""
+msgstr "Laufendes Ereigniss abbrechen und kommende ignorieren"
 
 msgid "Stop current event but not coming events"
-msgstr ""
+msgstr "Laufendes Ereigniss abbrechen aber kommende ausführen"
 
 msgid "Stop playing this movie?"
 msgstr "Das Abspielen dieses Films beenden?"
@@ -2162,7 +2189,7 @@ msgid "VCR scart"
 msgstr "Scart-Videorekorder"
 
 msgid "View Rass interactive..."
-msgstr ""
+msgstr "Rass Interaktiv anzeigen..."
 
 msgid "View teletext..."
 msgstr "Videotext anzeigen ..."
@@ -2316,9 +2343,13 @@ msgstr ""
 
 msgid "Zap back to service before positioner setup?"
 msgstr ""
+"Zurück schalten zum Sender der vor dem\n"
+"öffnen der Motor Einstellungen lief?"
 
 msgid "Zap back to service before satfinder?"
 msgstr ""
+"Zurück schalten zum Sender der vor dem\n"
+"öffnen des Satfinders lief?"
 
 msgid "[alternative edit]"
 msgstr "[Alternativen-Bearbeitung]"
@@ -2755,9 +2786,15 @@ msgstr "einfach"
 msgid "skip backward"
 msgstr "Rückwärts spulen"
 
+msgid "skip backward (enter time)"
+msgstr "Rückwärts springen (Zeit eingeben)"
+
 msgid "skip forward"
 msgstr "Vorwärts spulen"
 
+msgid "skip forward (enter time)"
+msgstr "Vorwärts springen (Zeit eingeben)"
+
 msgid "standby"
 msgstr "Standby"