aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Components
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python/Components')
-rw-r--r--lib/python/Components/Lcd.py10
-rw-r--r--lib/python/Components/NimManager.py21
-rw-r--r--lib/python/Components/TimerSanityCheck.py54
-rwxr-xr-xlib/python/Components/config.py5
4 files changed, 64 insertions, 26 deletions
diff --git a/lib/python/Components/Lcd.py b/lib/python/Components/Lcd.py
index 0471843c..0e501237 100644
--- a/lib/python/Components/Lcd.py
+++ b/lib/python/Components/Lcd.py
@@ -44,9 +44,14 @@ def InitLcd():
ilcd = LCD()
- config.lcd.bright = ConfigSlider(default=10, limits=(0, 10))
+ config.lcd.standby = ConfigSlider(default=0, limits=(0, 10))
+ config.lcd.standby.addNotifier(setLCDbright);
+ config.lcd.standby.apply = lambda : setLCDbright(config.lcd.standby)
+
+ config.lcd.bright = ConfigSlider(default=5, limits=(0, 10))
config.lcd.bright.addNotifier(setLCDbright);
config.lcd.bright.apply = lambda : setLCDbright(config.lcd.bright)
+ config.lcd.bright.callNotifiersOnSaveAndCancel = True
if not ilcd.isOled():
config.lcd.contrast = ConfigSlider(default=5, limits=(0, 20))
@@ -54,9 +59,6 @@ def InitLcd():
else:
config.lcd.contrast = ConfigNothing()
- config.lcd.standby = ConfigSlider(default=0, limits=(0, 10))
- config.lcd.standby.apply = lambda : setLCDbright(config.lcd.standby)
-
config.lcd.invert = ConfigYesNo(default=False)
config.lcd.invert.addNotifier(setLCDinverted);
else:
diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py
index 3c7a147e..32fca47f 100644
--- a/lib/python/Components/NimManager.py
+++ b/lib/python/Components/NimManager.py
@@ -1,3 +1,5 @@
+from Tools.HardwareInfo import HardwareInfo
+
from config import config, ConfigSubsection, ConfigSelection, ConfigFloat, \
ConfigSatlist, ConfigYesNo, ConfigInteger, ConfigSubList, ConfigNothing, \
ConfigSubDict, ConfigOnOff, ConfigDateTime
@@ -153,6 +155,7 @@ class SecConfigure:
for slot in nim_slots:
x = slot.slot
nim = slot.config
+ hw = HardwareInfo()
if slot.isCompatible("DVB-S"):
print "slot: " + str(x) + " configmode: " + str(nim.configMode.value)
if nim.configMode.value in [ "loopthrough", "satposdepends", "nothing" ]:
@@ -185,7 +188,7 @@ class SecConfigure:
loValue = rotorParam.EAST
else:
loValue = rotorParam.WEST
- inputPowerDelta=50
+ inputPowerDelta=hw.get_device_name() == "dm8000" and 15 or 50
useInputPower=False
turning_speed=0
if nim.powerMeasurement.value:
@@ -656,7 +659,7 @@ class NimManager:
def canEqualTo(self, slotid):
type = self.getNimType(slotid)
- if self.getNimConfig(slotid) == "DVB-S2":
+ if type == "DVB-S2":
type = "DVB-S"
nimList = self.getNimListOfType(type, slotid)
for nim in nimList[:]:
@@ -664,10 +667,10 @@ class NimManager:
if mode.configMode.value == "loopthrough" or mode.configMode.value == "satposdepends":
nimList.remove(nim)
return nimList
-
+
def canDependOn(self, slotid):
type = self.getNimType(slotid)
- if self.getNimConfig(slotid) == "DVB-S2":
+ if type == "DVB-S2":
type = "DVB-S"
nimList = self.getNimListOfType(type, slotid)
positionerList = []
@@ -680,6 +683,13 @@ class NimManager:
if lnb != 0:
nimHaveRotor = True
break
+ if not nimHaveRotor:
+ for sat in mode.advanced.sat.values():
+ lnb_num = int(sat.lnb.value)
+ diseqcmode = lnb_num and mode.advanced.lnb[lnb_num].diseqcMode.value or ""
+ if diseqcmode == "1_2":
+ nimHaveRotor = True
+ break
if nimHaveRotor:
alreadyConnected = False
for testnim in nimList:
@@ -842,6 +852,7 @@ def InitSecParams():
def InitNimManager(nimmgr):
InitSecParams()
+ hw = HardwareInfo()
config.Nims = ConfigSubList()
for x in range(len(nimmgr.nim_slots)):
@@ -972,7 +983,7 @@ def InitNimManager(nimmgr):
nim.advanced.lnb[x].latitude = ConfigFloat(default = [50,767], limits = [(0,359),(0,999)])
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].powerThreshold = ConfigInteger(default=hw.get_device_name() == "dm8000" and 15 or 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)
diff --git a/lib/python/Components/TimerSanityCheck.py b/lib/python/Components/TimerSanityCheck.py
index e793cdcd..031c9cae 100644
--- a/lib/python/Components/TimerSanityCheck.py
+++ b/lib/python/Components/TimerSanityCheck.py
@@ -1,9 +1,7 @@
-import string
import NavigationInstance
from time import localtime
-from Components.NimManager import nimmanager
from ServiceReference import ServiceReference
-from enigma import iServiceInformation, eServiceCenter
+from enigma import iServiceInformation, eServiceCenter, eServiceReference
class TimerSanityCheck:
def __init__(self, timerlist, newtimer=None):
@@ -54,6 +52,7 @@ class TimerSanityCheck:
# index -1 for the new Timer, 0..n index of the existing timers
# count of running timers
+ serviceHandler = eServiceCenter.getInstance()
print "checkTimerlist"
# create a list with all start and end times
# split it into recurring and singleshot timers
@@ -149,9 +148,7 @@ class TimerSanityCheck:
fakeRecList = []
ConflictTimer = None
ConflictTunerType = None
- ConflictSlot = None
newTimerTunerType = None
- newTimerTunerSlot = None
cnt = 0
idx = 0
overlaplist = []
@@ -162,24 +159,45 @@ class TimerSanityCheck:
else:
timer = self.timerlist[event[2]]
if event[1] == self.bflag:
- fakeRecService = NavigationInstance.instance.recordService(timer.service_ref)
- fakeRecResult = fakeRecService.start(True)
- feinfo = fakeRecService.frontendInfo().getFrontendData()
- tunerType = feinfo.get("tuner_type")
- tunerSlot = feinfo.get("tuner_number")
+ tunerType = [ ]
+ fakeRecService = NavigationInstance.instance.recordService(timer.service_ref, True)
+ if fakeRecService:
+ fakeRecResult = fakeRecService.start(True)
+ else:
+ fakeRecResult = -1
+ if not fakeRecResult: # tune okay
+ feinfo = fakeRecService.frontendInfo().getFrontendData()
+ tunerType.append(feinfo.get("tuner_type"))
+ else: # tune failed.. so we must go another way to get service type (DVB-S, DVB-T, DVB-C)
+
+ def getServiceType(ref): # helper function to get a service type of a service reference
+ serviceInfo = serviceHandler.info(ref)
+ serviceInfo = serviceInfo and serviceInfo.getInfoObject(ref, iServiceInformation.sTransponderData)
+ if serviceInfo:
+ return { "Satellite" : "DVB-S", "Cable" : "DVB-C", "Terrestrial" : "DVB-T"}[serviceInfo["type"]]
+
+ ref = timer.service_ref.ref
+ if ref.flags & eServiceReference.isGroup: # service group ?
+ serviceList = serviceHandler.list(ref) # get all alternative services
+ if serviceList:
+ for ref in serviceList.getContent("R"): # iterate over all group service references
+ type = getServiceType(ref)
+ if not type in tunerType: # just add single time
+ tunerType.append(type)
+ else:
+ tunerType.append(getServiceType(ref))
+
if event[2] == -1: # new timer
newTimerTunerType = tunerType
- newTimerTunerSlot = tunerSlot
- overlaplist.append((fakeRecResult, timer, tunerType, tunerSlot))
+ overlaplist.append((fakeRecResult, timer, tunerType))
fakeRecList.append((timer, fakeRecService))
if fakeRecResult:
if ConflictTimer is None: # just take care of the first conflict
ConflictTimer = timer
ConflictTunerType = tunerType
- ConflictTunerSlot = tunerSlot
elif event[1] == self.eflag:
for fakeRec in fakeRecList:
- if timer == fakeRec[0]:
+ if timer == fakeRec[0] and fakeRec[1]:
NavigationInstance.instance.stopRecordService(fakeRec[1])
fakeRecList.remove(fakeRec)
del fakeRec
@@ -211,7 +229,6 @@ class TimerSanityCheck:
if nt and kt:
ConflictTimer = self.newtimer
ConflictTunerType = newTimerTunerType
- ConflictSlot = newTimerTunerSlot
break
self.simultimer = [ ConflictTimer ]
@@ -223,8 +240,11 @@ class TimerSanityCheck:
else:
continue
for entry in event[4]:
- if not self.simultimer.count(entry[1]) and (entry[2] == ConflictTunerType or entry[3] == ConflictTunerSlot):
- self.simultimer.append(entry[1])
+ if not entry[1] in self.simultimer:
+ for x in entry[2]:
+ if x in ConflictTunerType:
+ self.simultimer.append(entry[1])
+ break
if len(self.simultimer) < 2:
print "Bug: unknown Conflict!"
diff --git a/lib/python/Components/config.py b/lib/python/Components/config.py
index c21a9192..4ddcabec 100755
--- a/lib/python/Components/config.py
+++ b/lib/python/Components/config.py
@@ -34,6 +34,7 @@ class ConfigElement(object):
self.save_disabled = False
self.notifiers = []
self.enabled = True
+ self.callNotifiersOnSaveAndCancel = False
# you need to override this to do input validation
def setValue(self, value):
@@ -66,9 +67,13 @@ class ConfigElement(object):
self.saved_value = None
else:
self.saved_value = self.tostring(self.value)
+ if self.callNotifiersOnSaveAndCancel:
+ self.changed()
def cancel(self):
self.load()
+ if self.callNotifiersOnSaveAndCancel:
+ self.changed()
def isChanged(self):
sv = self.saved_value