<!--<item text="Radio"><code>print "radio mode"</code></item>-->
<item level="0" text="Subtitles" entryID="subtitle_selection" weight="40"><screen module="Subtitles" screen="Subtitles" /></item>
<item level="0" text="Timer" entryID="timer_edit"><screen module="TimerEdit" screen="TimerEditList" /></item>
- <item level="1" text="VCR scart" entryID="scart_switch"><code>self.session.scart.VCRSbChanged(3)</code></item>
+ <item level="1" text="VCR scart" entryID="scart_switch" requires="ScartSwitch"><code>self.session.scart.VCRSbChanged(3)</code></item>
<menu level="0" text="Information" entryID="info_screen">
<id val="information" />
<item level="0" entryID="timezone_setup"><setup id="timezone"/></item>
<item level="0" entryID="av_setup"><setup id="avsetup"/></item>
<!--<item level="0" text="Video Setup" entryID="video_setup"><screen module="VideoSetup" /></item>-->
- <item level="1" entryID="rfmod_setup"><setup id="RFmod"/></item>
- <menu level="0" text="Harddisk" entryID="hardisk_selection">
+ <item level="1" entryID="rfmod_setup" requires="RfModulator"><setup id="RFmod"/></item>
+ <menu level="0" text="Harddisk" entryID="hardisk_selection" requires="Harddisc">
<id val="harddisk" />
<item level="1" entryID="harddisk_setup"><setup id="harddisk"/></item>
<item level="0" text="Initialization..." entryID="harddisk_init"><screen module="HarddiskSetup" screen="HarddiskSelection"/></item>
<item level="1" text="Nameserver Setup..." entryID="dns_setup"><screen module="NetworkSetup" screen="NameserverSetup"/></item>
</menu>
</menu>
- <item level="1" text="Common Interface" entryID="ci_setup"><screen module="Ci" screen="CiSelection" /></item>
+ <item level="1" text="Common Interface" entryID="ci_setup" requires="CommonInterface"><screen module="Ci" screen="CiSelection" /></item>
<item level="0" text="Parental control" entryID="parental_setup"><screen module="ParentalControlSetup" screen="ParentalControlSetup" /></item>
<item level="0" text="Startwizard" entryID="startwizzard"><screen module="StartWizard" screen="StartWizard" /></item>
<!--<item text="Parental Control"><setup id="parental" /></item>-->
<item level="0" text="TV System">config.av.tvsystem</item>
<item level="1" text="WSS on 4:3">config.av.wss</item>
<item level="1" text="AC3 default">config.av.defaultac3</item>
- <item level="1" text="VCR Switch">config.av.vcrswitch</item>
+ <item level="1" text="VCR Switch" requires="ScartSwitch">config.av.vcrswitch</item>
</setup>
<setup key="usage" title="Customize">
<item level="0" text="Setup Mode">config.usage.setup_level</item>
<item level="1" text="Alternative radio mode">config.usage.e1like_radio_mode</item>
<item level="1" text="Action on long powerbutton press">config.usage.on_long_powerpress</item>
<item level="0" text="Infobar timeout">config.usage.infobar_timeout</item>
- <item level="1" text="12V output">config.usage.output_12V</item>
+ <item level="1" text="12V output" requires="12V_Output">config.usage.output_12V</item>
<item level="2" text="Show infobar on channel change">config.usage.show_infobar_on_zap</item>
<item level="2" text="Show infobar on skip forward/backward">config.usage.show_infobar_on_skip</item>
<item level="2" text="Show infobar on event change">config.usage.show_infobar_on_event_change</item>
<item level="2" text="Behaviour of 0 key in PiP-mode">config.usage.pip_zero_button</item>
<item level="2" text="Alternative services tuner priority">config.usage.alternatives_priority</item>
</setup>
- <setup key="harddisk" title="Harddisk setup">
+ <setup key="harddisk" title="Harddisk setup" >
<item level="0" text="Harddisk standby after">config.usage.hdd_standby</item>
</setup>
<setup key="network" title="Network setup">
#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
+#include <string.h>
#include <lib/base/init.h>
#include <lib/base/init_num.h>
return instance;
}
+bool eAVSwitch::haveScartSwitch()
+{
+ char tmp[255];
+ int fd = open("/proc/stb/avs/0/input_choices", O_RDONLY);
+ if(fd < 0) {
+ eDebug("cannot open /proc/stb/avs/0/input_choices");
+ return false;
+ }
+ read(fd, tmp, 255);
+ close(fd);
+ return !!strstr(tmp, "scart");
+}
+
void eAVSwitch::setInput(int val)
{
/*
~eAVSwitch();
#endif
static eAVSwitch *getInstance();
+ bool haveScartSwitch();
int getVCRSlowBlanking();
void setFastBlank(int val);
void setColorFormat(int format);
return 0;
}
+bool Misc_Options::detected_12V_output()
+{
+ int fd = open("/proc/stb/misc/12V_output", O_WRONLY);
+ if (fd < 0)
+ {
+ eDebug("couldn't open /proc/stb/misc/12V_output");
+ return false;
+ }
+ close(fd);
+ return true;
+}
+
Misc_Options *Misc_Options::getInstance()
{
return instance;
static Misc_Options *getInstance();
int set_12V_output(int val);
int get_12V_output() { return m_12V_output_state; }
+ bool detected_12V_output();
};
#endif // __misc_options_h
~eRFmod();
#endif
static eRFmod *getInstance();
-
+ bool detected() { return fd >= 0; }
void setFunction(int val); //0=Enable 1=Disable
void setTestmode(int val); //0=Enable 1=Disable
void setSoundFunction(int val); //0=Enable 1=Disable
from config import config, ConfigSelection, ConfigYesNo, ConfigEnableDisable, ConfigSubsection, ConfigBoolean
from enigma import eAVSwitch
+from SystemInfo import SystemInfo
class AVSwitch:
INPUT = { "ENCODER": (0, 4), "SCART": (1, 3), "AUX": (2, 4) }
config.av.wss.addNotifier(setWSS)
iAVSwitch.setInput("ENCODER") # init on startup
+ SystemInfo["ScartSwitch"] = eAVSwitch.getInstance().haveScartSwitch()
+
from Tools.Directories import SCOPE_HDD, resolveFilename
from Tools.CList import CList
+from SystemInfo import SystemInfo
+
def tryOpen(filename):
try:
procFile = open(filename)
hdd = Harddisk(hddNum)
self.hdd.append(hdd)
+ SystemInfo["Harddisc"] = len(self.hdd) > 0
+
# currently, this is just an enumeration of what's possible,
# this probably has to be changed to support automount stuff.
# still, if stuff is mounted into the correct mountpoints by
FIFOList.py ServiceEventTracker.py Input.py TimerSanityCheck.py FileList.py \
MultiContent.py MediaPlayer.py TunerInfo.py VideoWindow.py ChoiceList.py \
Element.py Playlist.py ParentalControl.py ParentalControlList.py \
- Ipkg.py SelectionList.py Scanner.py
+ Ipkg.py SelectionList.py Scanner.py SystemInfo.py
from config import config, ConfigSelection, ConfigSubsection, ConfigOnOff, ConfigSlider
from enigma import eRFmod
+from Components.SystemInfo import SystemInfo
# CHECK ME.
RFMOD_CHANNEL_MIN = 21
eRFmod.getInstance().setFinetune(value)
def InitRFmod():
-
- config.rfmod = ConfigSubsection()
- config.rfmod.enable = ConfigOnOff(default=False)
- config.rfmod.test = ConfigOnOff(default=False)
- config.rfmod.sound = ConfigOnOff(default=True)
- config.rfmod.soundcarrier = ConfigSelection(choices=[("4500","4.5 MHz"), ("5500", "5.5 MHz"), ("6000", "6.0 MHz"), ("6500", "6.5 MHz")], default="5500")
- config.rfmod.channel = ConfigSelection(default = "36", choices = ["%d" % x for x in range(RFMOD_CHANNEL_MIN, RFMOD_CHANNEL_MAX)])
- config.rfmod.finetune = ConfigSlider(default=5, limits=(1, 10))
-
- iRFmod = RFmod()
-
- def setFunction(configElement):
- iRFmod.setFunction(configElement.value);
- def setTestmode(configElement):
- iRFmod.setTestmode(configElement.value);
- def setSoundFunction(configElement):
- iRFmod.setSoundFunction(configElement.value);
- def setSoundCarrier(configElement):
- iRFmod.setSoundCarrier(configElement.index);
- def setChannel(configElement):
- iRFmod.setChannel(int(configElement.value));
- def setFinetune(configElement):
- iRFmod.setFinetune(configElement.value - 5);
-
- # this will call the "setup-val" initial
- config.rfmod.enable.addNotifier(setFunction);
- config.rfmod.test.addNotifier(setTestmode);
- config.rfmod.sound.addNotifier(setSoundFunction);
- config.rfmod.soundcarrier.addNotifier(setSoundCarrier);
- config.rfmod.channel.addNotifier(setChannel);
- config.rfmod.finetune.addNotifier(setFinetune);
+ detected = eRFmod.getInstance().detected()
+ SystemInfo["RfModulator"] = detected
+ if detected:
+ config.rfmod = ConfigSubsection()
+ config.rfmod.enable = ConfigOnOff(default=False)
+ config.rfmod.test = ConfigOnOff(default=False)
+ config.rfmod.sound = ConfigOnOff(default=True)
+ config.rfmod.soundcarrier = ConfigSelection(choices=[("4500","4.5 MHz"), ("5500", "5.5 MHz"), ("6000", "6.0 MHz"), ("6500", "6.5 MHz")], default="5500")
+ config.rfmod.channel = ConfigSelection(default = "36", choices = ["%d" % x for x in range(RFMOD_CHANNEL_MIN, RFMOD_CHANNEL_MAX)])
+ config.rfmod.finetune = ConfigSlider(default=5, limits=(1, 10))
+
+ iRFmod = RFmod()
+
+ def setFunction(configElement):
+ iRFmod.setFunction(configElement.value);
+ def setTestmode(configElement):
+ iRFmod.setTestmode(configElement.value);
+ def setSoundFunction(configElement):
+ iRFmod.setSoundFunction(configElement.value);
+ def setSoundCarrier(configElement):
+ iRFmod.setSoundCarrier(configElement.index);
+ def setChannel(configElement):
+ iRFmod.setChannel(int(configElement.value));
+ def setFinetune(configElement):
+ iRFmod.setFinetune(configElement.value - 5);
+
+ # this will call the "setup-val" initial
+ config.rfmod.enable.addNotifier(setFunction);
+ config.rfmod.test.addNotifier(setTestmode);
+ config.rfmod.sound.addNotifier(setSoundFunction);
+ config.rfmod.soundcarrier.addNotifier(setSoundCarrier);
+ config.rfmod.channel.addNotifier(setChannel);
+ config.rfmod.finetune.addNotifier(setFinetune);
from config import ConfigSubsection, ConfigYesNo, config, ConfigSelection, ConfigText, ConfigInteger
from enigma import Misc_Options, setTunerTypePriorityOrder;
+from SystemInfo import SystemInfo
import os
def InitUsageConfig():
Misc_Options.getInstance().set_12V_output(0)
config.usage.output_12V.addNotifier(set12VOutput)
+ SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output()
+
config.usage.keymap = ConfigText(default = "/usr/share/enigma2/keymap.xml")
from Components.config import config, ConfigSubsection, ConfigSelection, ConfigSubList, getConfigListEntry, KEY_LEFT, KEY_RIGHT, KEY_0, ConfigNothing, ConfigPIN
from Components.ConfigList import ConfigList
-from enigma import eTimer, eDVBCI_UI
+from Components.SystemInfo import SystemInfo
+
+from enigma import eTimer, eDVBCI_UI, eDVBCIInterfaces
MAX_NUM_CI = 4
self.ci = { }
self.dlgs = { }
eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged)
+ SystemInfo["CommonInterface"]= eDVBCIInterfaces.getInstance().getNumOfSlots() > 0
def setSession(self, session):
self.session = session
from Components.config import configfile
from Components.PluginComponent import plugins
from Components.config import config
+from Components.SystemInfo import SystemInfo
from Tools.Directories import resolveFilename, SCOPE_SKIN
self.session.openWithCallback(self.menuClosed, Setup, dialog)
def addMenu(self, destList, node):
+ requires = node.getAttribute("requires")
+ if requires and not SystemInfo.get(requires, False):
+ return
MenuTitle = _(node.getAttribute("text").encode("UTF-8") or "??")
entryID = node.getAttribute("entryID") or "undefined"
weight = node.getAttribute("weight") or 50
self.close(True)
def addItem(self, destList, node):
+ requires = node.getAttribute("requires")
+ if requires and not SystemInfo.get(requires, False):
+ return
item_text = node.getAttribute("text").encode("UTF-8")
entryID = node.getAttribute("entryID") or "undefined"
weight = node.getAttribute("weight") or 50
continue
elif x.tagName == 'item':
item_level = int(x.getAttribute("level") or "0")
+
if item_level <= config.usage.setup_level.index:
self.addItem(list, x)
count += 1
from Screen import Screen
from Components.ActionMap import NumberActionMap
from Components.config import config, ConfigNothing
+from Components.SystemInfo import SystemInfo
from Components.ConfigList import ConfigListScreen
from Components.Label import Label
from Components.Pixmap import Pixmap
if item_level > config.usage.setup_level.index:
continue
+ requires = x.getAttribute("requires")
+ if requires and not SystemInfo.get(requires, False):
+ continue;
+
item_text = _(x.getAttribute("text").encode("UTF-8") or "??")
b = eval(XMLTools.mergeText(x.childNodes));
if b == "":