<widget name="bottom" position="10,230" size="430,25" font="Regular;23" />
</screen>
<!-- Common interface - selection -->
- <screen name="CiSelection" position="140,226" size="440,160" title="Common Interface">
+ <screen name="CiSelection" position="140,226" size="440,185" title="Common Interface">
<widget name="text" position="10,10" size="430,25" font="Regular;23" />
- <widget name="entries" position="10,55" size="420,100" scrollbarMode="showOnDemand" />
+ <widget name="entries" position="10,55" size="420,125" scrollbarMode="showOnDemand" />
</screen>
<!-- Console -->
<screen name="Console" position="90,95" size="560,430" title="Command execution...">
return 0;
}
+int eDVBCIInterfaces::setCIClockRate(int slotid, int rate)
+{
+ eDVBCISlot *slot = getSlot(slotid);
+ if (slot)
+ return slot->setClockRate(rate);
+ return -1;
+}
+
int eDVBCISlot::send(const unsigned char *data, size_t len)
{
int res=0;
return 0;
}
+int eDVBCISlot::setClockRate(int rate)
+{
+ char buf[64];
+ snprintf(buf, 64, "/proc/stb/tsmux/ci%d_tsclk", slotid);
+ FILE *ci = fopen(buf, "wb");
+ if (ci)
+ {
+ if (rate)
+ fprintf(ci, "high");
+ else
+ fprintf(ci, "normal");
+ fclose(ci);
+ return 0;
+ }
+ return -1;
+}
+
eAutoInitP0<eDVBCIInterfaces> init_eDVBCIInterfaces(eAutoInitNumbers::dvb, "CI Slots");
void removeService(uint16_t program_number=0xFFFF);
int getNumOfServices() { return running_services.size(); }
int setSource(data_source source);
+ int setClockRate(int);
};
struct CIPmtHandler
int getMMIState(int slot);
int sendCAPMT(int slot);
int setInputSource(int tunerno, data_source source);
+ int setCIClockRate(int slot, int rate);
#ifdef SWIG
public:
#endif
return eDVBCIInterfaces::getInstance()->getMMIState(slot);
}
+int eDVBCI_UI::setClockRate(int slot, int rate)
+{
+ return eDVBCIInterfaces::getInstance()->setCIClockRate(slot, rate);
+}
+
//FIXME: correct "run/startlevel"
eAutoInitP0<eDVBCI_UI> init_dvbciui(eAutoInitNumbers::rc, "DVB-CI UI");
#endif
void stateChanged(int val) { ciStateChanged(val); }
public:
+ enum { rateNormal, rateHigh };
PSignal1<void,int> ciStateChanged;
#ifndef SWIG
eDVBCI_UI();
int answerMenu(int slot, int answer);
int answerEnq(int slot, char *val);
int cancelEnq(int slot);
+ int setClockRate(int slot, int rate);
};
#endif
MAX_NUM_CI = 4
+def setCIBitrate(configElement):
+ if configElement.value == "no":
+ eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateNormal)
+ else:
+ eDVBCI_UI.getInstance().setClockRate(configElement.slotid, eDVBCI_UI.rateHigh)
+
def InitCiConfig():
config.ci = ConfigSubList()
for slot in range(MAX_NUM_CI):
config.ci.append(ConfigSubsection())
config.ci[slot].canDescrambleMultipleServices = ConfigSelection(choices = [("auto", _("Auto")), ("no", _("No")), ("yes", _("Yes"))], default = "auto")
+ if SystemInfo["CommonInterfaceSupportsHighBitrates"]:
+ config.ci[slot].canHandleHighBitrates = ConfigSelection(choices = [("no", _("No")), ("yes", _("Yes"))], default = "no")
+ config.ci[slot].canHandleHighBitrates.slotid = slot
+ config.ci[slot].canHandleHighBitrates.addNotifier(setCIBitrate)
class MMIDialog(Screen):
def __init__(self, session, slotid, action, handler = eDVBCI_UI.getInstance(), wait_text = _("wait for ci...") ):
self.ci = { }
self.dlgs = { }
eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged)
- SystemInfo["CommonInterface"]= eDVBCIInterfaces.getInstance().getNumOfSlots() > 0
+ SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() > 0
+ try:
+ file = open("/proc/stb/tsmux/ci0_tsclk", "r")
+ file.close()
+ SystemInfo["CommonInterfaceSupportsHighBitrates"] = True
+ except:
+ SystemInfo["CommonInterfaceSupportsHighBitrates"] = False
def setSession(self, session):
self.session = session
def selectionChanged(self):
cur_idx = self["entries"].getCurrentIndex()
- self["text"].setText(_("Slot %d")%((cur_idx / 4)+1))
+ self["text"].setText(_("Slot %d")%((cur_idx / 5)+1))
def keyConfigEntry(self, key):
try:
self.list.append( (appname, ConfigNothing(), 2, slot) )
self.list.append(getConfigListEntry(_("Multiple service support"), config.ci[slot].canDescrambleMultipleServices))
+ self.list.append(getConfigListEntry(_("High bitrate support"), config.ci[slot].canHandleHighBitrates))
def updateState(self, slot):
state = eDVBCI_UI.getInstance().getState(slot)
msgid "Hierarchy mode"
msgstr "Hierarchiemodus"
+msgid "High bitrate support"
+msgstr "Kann hohe Datenraten verarbeiten"
+
msgid "Horizontal"
msgstr ""
msgid "Hierarchy mode"
msgstr ""
+#: ../lib/python/Screens/Ci.py:334
+msgid "High bitrate support"
+msgstr ""
+
#: ../lib/python/Tools/Transponder.py:31
msgid "Horizontal"
msgstr ""