#include <lib/dvb/dvb.h>
#include <lib/dvb/sec.h>
#include <lib/dvb/rotor_calc.h>
+#include <lib/dvb/dvbtime.h>
#include <set>
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)
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
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;
#endif
public:
enum { NORTH, SOUTH, EAST, WEST };
+ enum { FAST, SLOW };
#ifndef SWIG
eDVBSatelliteRotorParameters() { setDefaultOptions(); }
{
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;
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;
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);
-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, \
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
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
sec.setLoDirection(loDirection)
sec.setUseInputpower(True)
sec.setInputpowerDelta(50)
+ sec.setRotorTurningSpeed(turningSpeed)
for x in self.NimManager.satList:
print "Add sat " + str(x[0])
self.linked = { }
self.satposdepends = { }
self.equal = { }
-
+
nim_slots = self.NimManager.nim_slots
-
+
for slot in nim_slots:
x = slot.slot
nim = slot.config
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"
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":
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,
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:
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"
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)
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 = {}
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 = {
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":
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
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)
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()
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()
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":
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"
msgid "#ffffffff"
msgstr ""
+msgid "%H:%M"
+msgstr ""
+
#, python-format
msgid "%d min"
msgstr "%d min"
msgid "Bandwidth"
msgstr "Bandbreite"
+msgid "Begin time"
+msgstr "Startzeit"
+
msgid "Brightness"
msgstr "Helligkeit"
msgstr "Schüssel"
msgid "Display Setup"
-msgstr ""
+msgstr "Display Einstellungen"
msgid ""
"Do you really want to REMOVE\n"
msgid "End"
msgstr "Ende"
+msgid "End time"
+msgstr "Endzeit"
+
msgid "EndTime"
msgstr "Endzeit"
msgid "FEC"
msgstr "FEC"
+msgid "Fast"
+msgstr "Schnell"
+
msgid "Fast DiSEqC"
msgstr "Schnelles DiSEqC"
+msgid "Fast epoch"
+msgstr "Schnell Zeitraum"
+
msgid "Favourites"
msgstr "Favoriten"
msgid "Goto position"
msgstr "Auf Position drehen"
+msgid "Greek"
+msgstr "Griechisch"
+
msgid "Guard Interval"
msgstr ""
msgid "Positioner storage"
msgstr "Positionsspeicher"
+msgid "Power threshold in mA"
+msgstr "Strom Schwellwert in mA"
+
msgid "Predefined transponder"
msgstr "Vordefinierte Transponder"
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"
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"
"(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"
msgid "Slot %d"
msgstr "Steckplatz %d"
+msgid "Slow"
+msgstr ""
+
msgid "Some plugins are not available:\n"
msgstr "Einige Plugins sind nicht verfügbar:\n"
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?"
msgstr "Scart-Videorekorder"
msgid "View Rass interactive..."
-msgstr ""
+msgstr "Rass Interaktiv anzeigen..."
msgid "View teletext..."
msgstr "Videotext anzeigen ..."
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]"
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"