def __init__(self): Renderer.__init__(self) VariableText.__init__(self) self.eDVBCIUIInstance = eDVBCI_UI.getInstance() self.eDVBCIUIInstance and self.eDVBCIUIInstance.ciStateChanged.get().append(self.ciModuleStateChanged) self.NUM_CI = eDVBCIInterfaces.getInstance() and eDVBCIInterfaces.getInstance().getNumOfSlots() self.text = "" self.allVisible = False
def isModule(): NUM_CI = eDVBCIInterfaces.getInstance() and eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI and NUM_CI > 0: for slot in range(NUM_CI): state = eDVBCI_UI.getInstance().getState(slot) if state > 0: return True return False
def activate_all(session): NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Activate] FOUND %d CI Slots " % NUM_CI if NUM_CI > 0: ci_config = [] def getValue(definitions, default): # Initialize Output ret = "" # How many definitions are present Len = len(definitions) return Len > 0 and definitions[Len - 1].text or default for ci in range(NUM_CI): filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(ci) + ".xml" if not os_path.exists(filename): print "[CI_Activate_Config_CI%d] no config file found" % ci try: if not os_path.exists(self.filename): return fp = open(filename, "r") tree = ci_parse(fp).getroot() fp.close() read_services = [] read_providers = [] usingcaid = [] for slot in tree.findall("slot"): read_slot = getValue(slot.findall("id"), False).encode("UTF-8") for caid in slot.findall("caid"): read_caid = caid.get("id").encode("UTF-8") usingcaid.append(long(read_caid, 16)) for service in slot.findall("service"): read_service_ref = service.get("ref").encode("UTF-8") read_services.append(read_service_ref) for provider in slot.findall("provider"): read_provider_name = provider.get("name").encode("UTF-8") read_provider_dvbname = provider.get("dvbnamespace").encode("UTF-8") read_providers.append((read_provider_name, long(read_provider_dvbname, 16))) ci_config.append((int(read_slot), (read_services, read_providers, usingcaid))) except: print "[CI_Activate_Config_CI%d] error parsing xml..." % ci for item in ci_config: print "[CI_Activate] activate CI%d with following settings:" % item[0] print item[0] print item[1] try: eDVBCIInterfaces.getInstance().setDescrambleRules(item[0], item[1]) except: print "[CI_Activate_Config_CI%d] error setting DescrambleRules..." % item[0]
def activate_all(session): NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Activate] FOUND %d CI Slots " % NUM_CI if NUM_CI > 0: ci_config=[] def getValue(definitions, default): # Initialize Output ret = "" # How many definitions are present Len = len(definitions) return Len > 0 and definitions[Len-1].text or default for ci in range(NUM_CI): filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(ci) + ".xml" if not os_path.exists(filename): print "[CI_Activate_Config_CI%d] no config file found" %ci try: tree = ci_parse(filename).getroot() read_services=set() read_providers=set() usingcaid=set() for slot in tree.findall("slot"): read_slot = getValue(slot.findall("id"), False).encode("UTF-8") for caid in slot.findall("caid"): read_caid = caid.get("id").encode("UTF-8") usingcaid.add(int(read_caid,16)) for service in slot.findall("service"): read_service_ref = service.get("ref").encode("UTF-8") read_services.add(eServiceReference(read_service_ref)) for provider in slot.findall("provider"): read_provider_name = provider.get("name").encode("UTF-8") read_provider_dvbname = provider.get("dvbnamespace").encode("UTF-8") read_providers.add((read_provider_name,int(read_provider_dvbname,16))) ci_config.append((int(read_slot), (read_services, read_providers, usingcaid))) except IOError: print "[CI_Activate_Config_CI%d] error parsing xml..." %ci instance = eDVBCIInterfaces.getInstance() setProviderRules = instance.setProviderRules setCaidRules = instance.setCaidRules setServiceRules = instance.setServiceRules for item in ci_config: print "[CI_Activate] activate CI%d with following settings:" %item[0] print "services", [ x.toString() for x in item[1][0] ] print "providers", [ x for x in item[1][1] ] print "caids", [ x for x in item[1][2] ] setServiceRules(item[0], item[1][0]); setProviderRules(item[0], item[1][1]); setCaidRules(item[0], item[1][2]);
def __init__(self, session, ci_slot="9"): Screen.__init__(self, session) self.ci_slot = ci_slot self.filename = "/etc/enigma2/ci" + str(self.ci_slot) + ".xml" self["key_red"] = StaticText(_("Delete")) self["key_green"] = StaticText(_("add Service")) self["key_yellow"] = StaticText(_("add Provider")) self["key_blue"] = StaticText(_("select CAId")) self["CAidList_desc"] = StaticText(_("assigned CAIds:")) self["CAidList"] = StaticText() self["ServiceList_desc"] = StaticText(_("assigned Services/Provider:")) self["ServiceList_info"] = StaticText() self["actions"] = ActionMap( ["ColorActions", "SetupActions"], { "green": self.greenPressed, "red": self.redPressed, "yellow": self.yellowPressed, "blue": self.bluePressed, "cancel": self.cancel, }, -1, ) print "[CI_Wizzard_Config] Configuring CI Slots : %d " % self.ci_slot i = 0 self.caidlist = [] print eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot) for caid in eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot): i += 1 self.caidlist.append((str(hex(int(caid))), str(caid), i)) print "[CI_Wizzard_Config_CI%d] read following CAIds from CI: %s" % (self.ci_slot, self.caidlist) self.selectedcaid = [] self.servicelist = [] self.caids = "" serviceList = ConfigList(self.servicelist) serviceList.list = self.servicelist serviceList.l.setList(self.servicelist) self["ServiceList"] = serviceList self.loadXML() # if config mode !=advanced autoselect any caid if config.usage.setup_level.index <= 1: # advanced self.selectedcaid = self.caidlist self.finishedCAidSelection(self.selectedcaid) self.onShown.append(self.setWindowTitle)
def __init__(self, session, ci_slot="9"): Screen.__init__(self, session) self.ci_slot = ci_slot self.filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str( self.ci_slot) + ".xml" self["key_red"] = StaticText(_("Delete")) self["key_green"] = StaticText(_("Add service")) self["key_yellow"] = StaticText(_("Add provider")) self["key_blue"] = StaticText(_("Select CAId")) self["CAidList_desc"] = StaticText(_("Assigned CAIds:")) self["CAidList"] = StaticText() self["ServiceList_desc"] = StaticText(_("Assigned services/provider:")) self["ServiceList_info"] = StaticText() self["actions"] = ActionMap( ["ColorActions", "SetupActions"], { "green": self.greenPressed, "red": self.redPressed, "yellow": self.yellowPressed, "blue": self.bluePressed, "cancel": self.cancel }, -1) print "[CI_Wizzard_Config] Configuring CI Slots : %d " % self.ci_slot i = 0 self.caidlist = [] print eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot) for caid in eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot): i += 1 self.caidlist.append((str(hex(int(caid))), str(caid), i)) print "[CI_Wizzard_Config_CI%d] read following CAIds from CI: %s" % ( self.ci_slot, self.caidlist) self.selectedcaid = [] self.servicelist = [] self.caids = "" serviceList = ConfigList(self.servicelist) serviceList.list = self.servicelist serviceList.l.setList(self.servicelist) self["ServiceList"] = serviceList self.loadXML() # if config mode !=advanced autoselect any caid if config.usage.setup_level.index <= 1: # advanced self.selectedcaid = self.caidlist self.finishedCAidSelection(self.selectedcaid) self.onShown.append(self.setWindowTitle)
def __init__(self, session, args=0): Screen.__init__(self, session) self["key_red"] = StaticText(_("Close")) self["key_green"] = StaticText(_("Edit")) self["actions"] = ActionMap( ["ColorActions", "SetupActions"], { "green": self.greenPressed, "red": self.close, "ok": self.greenPressed, "cancel": self.close }, -1) if getBoxType() in ('zgemmah9combo', ): NUM_CI = 1 else: NUM_CI = eDVBCIInterfaces.getInstance( ) and eDVBCIInterfaces.getInstance().getNumOfSlots() print("[CI_Wizzard] FOUND %d CI Slots " % NUM_CI) self.dlg = None self.state = {} self.list = [] if NUM_CI and NUM_CI > 0: for slot in list(range(NUM_CI)): state = eDVBCI_UI.getInstance().getState(slot) if state != -1: appname = _("Slot %d") % (slot + 1) + " - " + _("unknown error") if state == 0: appname = _("Slot %d") % (slot + 1) + " - " + _( "no module found") elif state == 1: appname = _("Slot %d") % (slot + 1) + " - " + _( "init modules") elif state == 2: appname = _("Slot %d") % ( slot + 1) + " - " + eDVBCI_UI.getInstance( ).getAppName(slot) self.list.append((appname, ConfigNothing(), 0, slot)) else: self.list.append((_("no CI slots found"), ConfigNothing(), 1, -1)) menuList = ConfigList(self.list) menuList.list = self.list menuList.l.setList(self.list) self["CiList"] = menuList self.onShown.append(self.setWindowTitle)
def activate_all(session): NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Activate] FOUND %d CI Slots " % NUM_CI if NUM_CI > 0: ci_config=[] def getValue(definitions, default): # Initialize Output ret = "" # How many definitions are present Len = len(definitions) return Len > 0 and definitions[Len-1].text or default for ci in range(NUM_CI): filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(ci) + ".xml" if not os_path.exists(filename): print "[CI_Activate_Config_CI%d] no config file found" %ci try: tree = ci_parse(filename).getroot() read_services=[] read_providers=[] usingcaid=[] for slot in tree.findall("slot"): read_slot = getValue(slot.findall("id"), False).encode("UTF-8") for caid in slot.findall("caid"): read_caid = caid.get("id").encode("UTF-8") usingcaid.append(long(read_caid,16)) for service in slot.findall("service"): read_service_ref = service.get("ref").encode("UTF-8") read_services.append (read_service_ref) for provider in slot.findall("provider"): read_provider_name = provider.get("name").encode("UTF-8") read_provider_dvbname = provider.get("dvbnamespace").encode("UTF-8") read_providers.append((read_provider_name,long(read_provider_dvbname,16))) ci_config.append((int(read_slot), (read_services, read_providers, usingcaid))) except: print "[CI_Activate_Config_CI%d] error parsing xml..." %ci for item in ci_config: print "[CI_Activate] activate CI%d with following settings:" %item[0] print item[0] print item[1] try: eDVBCIInterfaces.getInstance().setDescrambleRules(item[0],item[1]) except: print "[CI_Activate_Config_CI%d] error setting DescrambleRules..." %item[0]
def activate_all(session, editcallback=False): NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Activate] FOUND %d CI Slots " % NUM_CI if NUM_CI and NUM_CI > 0: def getValue(definitions, default): # How many definitions are present Len = len(definitions) return Len > 0 and definitions[Len-1].text or default for ci in range(NUM_CI): filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(ci) + ".xml" if not os.path.exists(filename): print "[CI_Activate_Config_CI%d] no config file found" %ci continue try: tree = ci_parse(filename).getroot() read_services=[] read_providers=[] usingcaid=[] for slot in tree.findall("slot"): read_slot = getValue(slot.findall("id"), False).encode("UTF-8") for caid in slot.findall("caid"): read_caid = caid.get("id").encode("UTF-8") usingcaid.append(long(read_caid,16)) for service in slot.findall("service"): read_service_ref = service.get("ref").encode("UTF-8") read_services.append (read_service_ref) for provider in slot.findall("provider"): read_provider_name = provider.get("name").encode("UTF-8") read_provider_dvbname = provider.get("dvbnamespace").encode("UTF-8") read_providers.append((read_provider_name,long(read_provider_dvbname,16))) if editcallback or (read_slot is not False and (read_services or read_providers or usingcaid)): print "[CI_Activate] activate CI%d with following settings:" % int(read_slot) print read_services, read_providers, usingcaid try: eDVBCIInterfaces.getInstance().setDescrambleRules(int(read_slot), (read_services, read_providers, usingcaid)) except: print "[CI_Activate_Config_CI%d] error setting DescrambleRules..." % int(read_slot) except: print "[CI_Activate_Config_CI%d] error parsing xml..." % ci try: os.remove(filename) except: print "[CI_Activate_Config_CI%d] error remove damaged xml..." % ci
def __init__(self, session, ci_slot="9"): self.skin = CIconfigMenu.skin Screen.__init__(self, session) self.ci_slot=ci_slot self.filename="/etc/enigma2/ci"+str(self.ci_slot)+".xml" self["key_red"] = StaticText(_("delete")) self["key_green"] = StaticText(_("add Service")) self["key_yellow"] = StaticText(_("add Provider")) self["key_blue"] = StaticText(_("select CAId")) self["CAidList.desc"] = Label(_("assigned CAIds")) self["ServiceList.desc"] = Label(_("assigned Services/Provider")) self["actions"] = ActionMap(["ColorActions","SetupActions"], { "green": self.greenPressed, "red": self.redPressed, "yellow": self.yellowPressed, "blue": self.bluePressed, "ok": self.okPressed, "cancel": self.cancel }, -1) print "[CI_Wizzard_Config] Configuring CI Slots : %d " % self.ci_slot i=0 self.caidlist=[] print eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot) for caid in eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot): i+=1 self.caidlist.append((str(hex(int(caid))),str(caid),i)) print "[CI_Wizzard_Config_CI%d] read following CAIds from CI: %s" %(self.ci_slot, self.caidlist) self.selectedcaid =[] self.servicelist = [] self.caids=_("no CAId selected") self["CAidList"] = Label(self.caids) serviceList = ConfigList(self.servicelist) serviceList.list = self.servicelist serviceList.l.setList(self.servicelist) self["ServiceList"] = serviceList self.loadXML() # if config mode !=advanced autoselect any caid if config.usage.setup_level.index <= 1: # advanced self.selectedcaid=self.caidlist self.onShown.append(self.setWindowTitle)
def activate_all(session): NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() print '[CI_Activate] FOUND %d CI Slots ' % NUM_CI if NUM_CI > 0: ci_config = [] def getValue(definitions, default): ret = '' Len = len(definitions) return Len > 0 and definitions[Len - 1].text or default for ci in range(NUM_CI): filename = eEnv.resolve('${sysconfdir}/enigma2/ci') + str(ci) + '.xml' if not os_path.exists(filename): print '[CI_Activate_Config_CI%d] no config file found' % ci try: tree = ci_parse(filename).getroot() read_services = [] read_providers = [] usingcaid = [] for slot in tree.findall('slot'): read_slot = getValue(slot.findall('id'), False).encode('UTF-8') for caid in slot.findall('caid'): read_caid = caid.get('id').encode('UTF-8') usingcaid.append(long(read_caid, 16)) for service in slot.findall('service'): read_service_ref = service.get('ref').encode('UTF-8') read_services.append(read_service_ref) for provider in slot.findall('provider'): read_provider_name = provider.get('name').encode('UTF-8') read_provider_dvbname = provider.get('dvbnamespace').encode('UTF-8') read_providers.append((read_provider_name, long(read_provider_dvbname, 16))) ci_config.append((int(read_slot), (read_services, read_providers, usingcaid))) except: print '[CI_Activate_Config_CI%d] error parsing xml...' % ci for item in ci_config: print '[CI_Activate] activate CI%d with following settings:' % item[0] print item[0] print item[1] try: eDVBCIInterfaces.getInstance().setDescrambleRules(item[0], item[1]) except: print '[CI_Activate_Config_CI%d] error setting DescrambleRules...' % item[0]
def __init__(self, session, args = 0): Screen.__init__(self, session) self["actions"] = ActionMap(["ColorActions","SetupActions"], { "ok": self.greenPressed, "cancel": self.close }, -1) NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Wizzard] FOUND %d CI Slots " % NUM_CI self.dlg = None self.state = { } self.list = [ ] if NUM_CI > 0: for slot in range(NUM_CI): state = eDVBCI_UI.getInstance().getState(slot) if state != -1: if state == 1: appname = _("Slot %d") %(slot+1) + " - " + _("init modules") elif state == 2: appname = _("Slot %d") %(slot+1) + " - " + eDVBCI_UI.getInstance().getAppName(slot) self.list.append( (appname, ConfigNothing(), 0, slot) ) else: self.list.append( (_("no CI slots found") , ConfigNothing(), 1, -1) ) menuList = ConfigList(self.list) menuList.list = self.list menuList.l.setList(self.list) self["CiList"] = menuList self.onShown.append(self.setWindowTitle)
def canMultiDescramble(self, ref): if self.CI_MULTIDESCRAMBLE is None: no_ci = eDVBCIInterfaces.getInstance().getNumOfSlots() if no_ci > 0: self.CI_MULTIDESCRAMBLE = False for ci in range(no_ci): appname = eDVBCI_UI.getInstance().getAppName(ci) if appname in self.CI_MULTIDESCRAMBLE_MODULES: self.CI_MULTIDESCRAMBLE = True elif self.CI_MULTIDESCRAMBLE == False: return False if self.CI_ASSIGNMENT_LIST is not None and len(self.CI_ASSIGNMENT_LIST): for x in self.CI_ASSIGNMENT_LIST: if ref.toString() in x[1][0]: appname = eDVBCI_UI.getInstance().getAppName(x[0]) if appname in self.CI_MULTIDESCRAMBLE_MODULES: return True for x in self.CI_ASSIGNMENT_LIST: f_providers = x[1][1] if len(f_providers): providers = [] for prov in f_providers: providers.append(prov[0]) provider_services_refs = self.getProivderServices(providers) if ref in provider_services_refs: appname = eDVBCI_UI.getInstance().getAppName(x[0]) if appname in self.CI_MULTIDESCRAMBLE_MODULES: return True return False
def __init__(self): self.session = None self.ci = {} self.dlgs = {} self.auto_close = False eDVBCI_UI.getInstance().ciStateChanged.get().append( self.ciStateChanged) if BoxInfo.getItem("model") in ('vuzero', ): BoxInfo.setItem("CommonInterface", False) else: BoxInfo.setItem("CommonInterface", eDVBCIInterfaces.getInstance().getNumOfSlots() > 0) try: file = open("/proc/stb/tsmux/ci0_tsclk", "r") file.close() BoxInfo.setItem("CommonInterfaceSupportsHighBitrates", True) except: BoxInfo.setItem("CommonInterfaceSupportsHighBitrates", False) try: file = open("/proc/stb/tsmux/rmx_delay", "r") file.close() BoxInfo.setItem("CommonInterfaceCIDelay", True) except: BoxInfo.setItem("CommonInterfaceCIDelay", False) try: file = open("/proc/stb/tsmux/ci0_relevant_pids_routing", "r") file.close() BoxInfo.setItem("RelevantPidsRoutingSupport", True) except: BoxInfo.setItem("RelevantPidsRoutingSupport", False)
def __init__(self): self.session = None self.ci = { } self.dlgs = { } self.auto_close = False eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged) if getBoxType() in ('vuzero'): SystemInfo["CommonInterface"] = False else: SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() > 0 try: file = open("/proc/stb/tsmux/ci0_tsclk", "r") file.close() SystemInfo["CommonInterfaceSupportsHighBitrates"] = True except: SystemInfo["CommonInterfaceSupportsHighBitrates"] = False try: file = open("/proc/stb/tsmux/rmx_delay", "r") file.close() SystemInfo["CommonInterfaceCIDelay"] = True except: SystemInfo["CommonInterfaceCIDelay"] = False try: file = open("/proc/stb/tsmux/ci0_relevant_pids_routing", "r") file.close() SystemInfo["RelevantPidsRoutingSupport"] = True except: SystemInfo["RelevantPidsRoutingSupport"] = False
def canMultiDescramble(self, ref): if self.CI_MULTIDESCRAMBLE is None: no_ci = eDVBCIInterfaces.getInstance().getNumOfSlots() if no_ci > 0: self.CI_MULTIDESCRAMBLE = False for ci in range(no_ci): appname = eDVBCI_UI.getInstance().getAppName(ci) if appname in self.CI_MULTIDESCRAMBLE_MODULES: self.CI_MULTIDESCRAMBLE = True elif self.CI_MULTIDESCRAMBLE == False: return False if self.CI_ASSIGNMENT_LIST is not None and len( self.CI_ASSIGNMENT_LIST): for x in self.CI_ASSIGNMENT_LIST: if ref.toString() in x[1][0]: appname = eDVBCI_UI.getInstance().getAppName(x[0]) if appname in self.CI_MULTIDESCRAMBLE_MODULES: return True for x in self.CI_ASSIGNMENT_LIST: f_providers = x[1][1] if len(f_providers): providers = [] for prov in f_providers: providers.append(prov[0]) provider_services_refs = self.getProivderServices( providers) if ref in provider_services_refs: appname = eDVBCI_UI.getInstance().getAppName(x[0]) if appname in self.CI_MULTIDESCRAMBLE_MODULES: return True return False
def menu(menuid, **kwargs): if menuid == 'setup' and eDVBCIInterfaces.getInstance().getNumOfSlots(): return [(_('Common Interface assignment'), main, 'ci_assign', 11)] return []
def __init__(self): self.session = None self.ci = {} self.dlgs = {} self.auto_close = False eDVBCI_UI.getInstance().ciStateChanged.get().append( self.ciStateChanged) if getBoxType() in ('vuzero'): SystemInfo["CommonInterface"] = False else: SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance( ).getNumOfSlots() > 0 try: file = open("/proc/stb/tsmux/ci0_tsclk", "r") file.close() SystemInfo["CommonInterfaceSupportsHighBitrates"] = True except: SystemInfo["CommonInterfaceSupportsHighBitrates"] = False try: file = open("/proc/stb/tsmux/rmx_delay", "r") file.close() SystemInfo["CommonInterfaceCIDelay"] = True except: SystemInfo["CommonInterfaceCIDelay"] = False try: file = open("/proc/stb/tsmux/ci0_relevant_pids_routing", "r") file.close() SystemInfo["RelevantPidsRoutingSupport"] = True except: SystemInfo["RelevantPidsRoutingSupport"] = False
def changed(self, what): self.poll_interval = 1000 self.poll_enabled = True if self.instance: text = "nomodule" pngname = '' if what[0] != self.CHANGED_CLEAR: service = self.source.service if service: NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: state = eDVBCI_UI.getInstance().getState(self.slot) if state != -1: if state == 0: text = "nomodule" elif state == 1: text = "initmodule" elif state == 2: text = "ready" pngname = self.nameCache.get(text, "") if pngname == "": pngname = self.findPicon(text) if pngname != "": self.nameCache[text] = pngname else: return if self.pngname != pngname: self.instance.setPixmapFromFile(pngname) self.pngname = pngname
def __init__(self, session, args = 0): Screen.__init__(self, session) self["key_red"] = StaticText(_("Close")) self["key_green"] = StaticText(_("Edit")) self["actions"] = ActionMap(["ColorActions","SetupActions"], { "green": self.greenPressed, "red": self.close, "ok": self.greenPressed, "cancel": self.close }, -1) if getBoxType() in ('zgemmah9combo'): NUM_CI = 1 else: NUM_CI = eDVBCIInterfaces.getInstance() and eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Wizzard] FOUND %d CI Slots " % NUM_CI self.dlg = None self.state = { } self.list = [ ] if NUM_CI and NUM_CI > 0: for slot in range(NUM_CI): state = eDVBCI_UI.getInstance().getState(slot) if state != -1: appname = _("Slot %d") %(slot+1) + " - " + _("unknown error") if state == 0: appname = _("Slot %d") %(slot+1) + " - " + _("no module found") elif state == 1: appname = _("Slot %d") %(slot+1) + " - " + _("init modules") elif state == 2: appname = _("Slot %d") %(slot+1) + " - " + eDVBCI_UI.getInstance().getAppName(slot) self.list.append( (appname, ConfigNothing(), 0, slot) ) else: self.list.append( (_("no CI slots found") , ConfigNothing(), 1, -1) ) menuList = ConfigList(self.list) menuList.list = self.list menuList.l.setList(self.list) self["CiList"] = menuList self.onShown.append(self.setWindowTitle)
def __init__(self): self.session = None self.auto_close = False self.ci = { } self.dlgs = { } eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged) SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() > 0 SystemInfo["CommonInterfaceSupportsHighBitrates"] = fileCheck("/proc/stb/tsmux/ci0_tsclk") SystemInfo["CommonInterfaceCIDelay"] = fileCheck("/proc/stb/tsmux/rmx_delay")
def __init__(self): self.session = None self.ci = { } self.dlgs = { } eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged) 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 __init__(self): self.session = None self.ci = { } self.dlgs = { } eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged) SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() > 0 try: file = open(eEnv.resolve("${sysconfdir}/stb/tsmux/ci0_tsclk"), "r") file.close() SystemInfo["CommonInterfaceSupportsHighBitrates"] = True except: SystemInfo["CommonInterfaceSupportsHighBitrates"] = False
def __init__(self): self.session = None self.auto_close = False self.ci = {} self.dlgs = {} eDVBCI_UI.getInstance().ciStateChanged.get().append( self.ciStateChanged) SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance( ).getNumOfSlots() > 0 SystemInfo["CommonInterfaceSupportsHighBitrates"] = fileCheck( "/proc/stb/tsmux/ci0_tsclk") SystemInfo["CommonInterfaceCIDelay"] = fileCheck( "/proc/stb/tsmux/rmx_delay")
def __init__(self, session, args = 0): self.skin = CIselectMainMenu.skin Screen.__init__(self, session) #---> #---< #+++> appname = "" #+++< self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("Config")) self["actions"] = ActionMap(["ColorActions","SetupActions"], { "green": self.greenPressed, "red": self.redPressed, "yellow": self.yellowPressed, "ok": self.greenPressed, "cancel": self.cancel }, -1) NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Wizzard] FOUND %d CI Slots " % NUM_CI self.dlg = None self.state = { } self.list = [ ] if NUM_CI > 0: for slot in range(NUM_CI): state = eDVBCI_UI.getInstance().getState(slot) #---> #-if state == 0: #---< #+++> if state == 0 or state == -1: #+++< appname = _("Slot %d") %(slot+1) + " - " + _("no module found") elif state == 1: appname = _("Slot %d") %(slot+1) + " - " + _("init modules") elif state == 2: appname = _("Slot %d") %(slot+1) + " - " + eDVBCI_UI.getInstance().getAppName(slot) self.list.append( (appname, ConfigNothing(), 0, slot) ) else: self.list.append( (_("no CI slots found") , ConfigNothing(), 1, -1) ) menuList = ConfigList(self.list) menuList.list = self.list menuList.l.setList(self.list) self["CiList"] = menuList self.onShown.append(self.setWindowTitle)
def __init__(self, session, ci_slot = '9'): Screen.__init__(self, session) self.ci_slot = ci_slot self.filename = eEnv.resolve('${sysconfdir}/enigma2/ci') + str(self.ci_slot) + '.xml' self['key_red'] = StaticText(_('Delete')) self['key_green'] = StaticText(_('Add service')) self['key_yellow'] = StaticText(_('Add provider')) self['key_blue'] = StaticText(_('Select CAId')) self['CAidList_desc'] = StaticText(_('Assigned CAIds:')) self['CAidList'] = StaticText() self['ServiceList_desc'] = StaticText(_('Assigned services/provider:')) self['ServiceList_info'] = StaticText() self['actions'] = ActionMap(['ColorActions', 'SetupActions'], {'green': self.greenPressed, 'red': self.redPressed, 'yellow': self.yellowPressed, 'blue': self.bluePressed, 'cancel': self.cancel}, -1) print '[CI_Wizzard_Config] Configuring CI Slots : %d ' % self.ci_slot i = 0 self.caidlist = [] print eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot) for caid in eDVBCIInterfaces.getInstance().readCICaIds(self.ci_slot): i += 1 self.caidlist.append((str(hex(int(caid))), str(caid), i)) print '[CI_Wizzard_Config_CI%d] read following CAIds from CI: %s' % (self.ci_slot, self.caidlist) self.selectedcaid = [] self.servicelist = [] self.caids = '' serviceList = ConfigList(self.servicelist) serviceList.list = self.servicelist serviceList.l.setList(self.servicelist) self['ServiceList'] = serviceList self.loadXML() if config.usage.setup_level.index <= 1: self.selectedcaid = self.caidlist self.finishedCAidSelection(self.selectedcaid) self.onShown.append(self.setWindowTitle)
def __init__(self): self.session = None self.ci = {} self.dlgs = {} self.ciStateChanged_conn = eDVBCI_UI.getInstance( ).ciStateChanged.connect(self.ciStateChanged) 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 __init__(self): self.session = None self.ci = {} self.dlgs = {} eDVBCI_UI.getInstance().ciStateChanged.get().append( self.ciStateChanged) SystemInfo['CommonInterface'] = eDVBCIInterfaces.getInstance( ).getNumOfSlots() > 0 try: file = open('/proc/stb/tsmux/ci0_tsclk', 'r') file.close() SystemInfo['CommonInterfaceSupportsHighBitrates'] = True except: SystemInfo['CommonInterfaceSupportsHighBitrates'] = False return
def __init__(self): self.session = None self.ci = { } self.dlgs = { } self.auto_close = False eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged) if getBoxType() in ('dummy'): SystemInfo["CommonInterface"] = False else: 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 changed(self, what): self.poll_interval = 1000 self.poll_enabled = True if self.instance: pngname = '' if what[0] != self.CHANGED_CLEAR: service = self.source.service if service: NUM_CI = \ eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: state = \ eDVBCI_UI.getInstance().getState(self.slot) if state != -1: if state == 0: text = 'nomodule' elif state == 1: text = 'initmodule' elif state == 2: text = 'ready' else: text = 'nomodule' else: text = 'nomodule' pngname = self.nameCache.get(text, '') if pngname == '': pngname = self.findPicon(text) if pngname != '': self.nameCache[text] = pngname if pngname == '': # no picon for service found pngname = self.nameCache.get('default', '') if pngname == '': # no default yet in cache.. pngname = self.findPicon('picon_default') if pngname == '': tmp = resolveFilename(SCOPE_CURRENT_SKIN, 'picon_default.png') if fileExists(tmp): pngname = tmp else: pngname = resolveFilename( SCOPE_SKIN_IMAGE, 'skin_default/picon_default.png') self.nameCache['default'] = pngname if self.pngname != pngname: self.instance.setPixmapFromFile(pngname) self.pngname = pngname
def __init__(self): self.session = None self.ci = {} self.dlgs = {} self.auto_close = False eDVBCI_UI.getInstance().ciStateChanged.get().append(self.ciStateChanged) if getBoxType() in ('vuzero', 'mbmicro'): SystemInfo['CommonInterface'] = False else: SystemInfo['CommonInterface'] = eDVBCIInterfaces.getInstance().getNumOfSlots() > 0 try: file = open('/proc/stb/tsmux/ci0_tsclk', 'r') file.close() SystemInfo['CommonInterfaceSupportsHighBitrates'] = True except: SystemInfo['CommonInterfaceSupportsHighBitrates'] = False return
def changed(self, what): self.poll_interval = 1000 self.poll_enabled = True if self.instance: pngname = '' if what[0] != self.CHANGED_CLEAR: service = self.source.service if service: NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: state = eDVBCI_UI.getInstance().getState(self.slot) if state != -1: if state == 0: text = "nomodule" elif state == 1: text = "initmodule" elif state == 2: text = "ready" else: text = "nomodule" else: text = "nomodule" pngname = self.nameCache.get(text, "") if pngname == "": pngname = self.findPicon(text) if pngname != "": self.nameCache[text] = pngname if pngname == "": # no picon for service found pngname = self.nameCache.get("default", "") if pngname == "": # no default yet in cache.. pngname = self.findPicon("picon_default") if pngname == "": tmp = resolveFilename(SCOPE_CURRENT_SKIN, "picon_default.png") if fileExists(tmp): pngname = tmp else: pngname = resolveFilename( SCOPE_SKIN_IMAGE, "skin_default/picon_default.png") self.nameCache["default"] = pngname if self.pngname != pngname: self.instance.setPixmapFromFile(pngname) self.pngname = pngname
def __init__(self): self.session = None self.ci = {} self.dlgs = {} self.auto_close = False eDVBCI_UI.getInstance().ciStateChanged.get().append( self.ciStateChanged) # TODO move to systeminfo if BoxInfo.getItem("model") in ("vuzero", ): BoxInfo.setItem("CommonInterface", False) else: BoxInfo.setItem("CommonInterface", eDVBCIInterfaces.getInstance().getNumOfSlots() > 0) BoxInfo.setItem("CommonInterfaceSupportsHighBitrates", access("/proc/stb/tsmux/ci0_tsclk", R_OK)) BoxInfo.setItem("CommonInterfaceCIDelay", access("/proc/stb/tsmux/rmx_delay", R_OK)) BoxInfo.setItem( "RelevantPidsRoutingSupport", access("/proc/stb/tsmux/ci0_relevant_pids_routing", R_OK))
def __init__(self, session, args = 0): Screen.__init__(self, session) self['key_red'] = StaticText(_('Close')) self['key_green'] = StaticText(_('Edit')) self['actions'] = ActionMap(['ColorActions', 'SetupActions'], {'green': self.greenPressed, 'red': self.close, 'ok': self.greenPressed, 'cancel': self.close}, -1) NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() print '[CI_Wizzard] FOUND %d CI Slots ' % NUM_CI self.dlg = None self.state = {} self.list = [] if NUM_CI > 0: for slot in range(NUM_CI): state = eDVBCI_UI.getInstance().getState(slot) if state == 0: appname = _('Slot %d') % (slot + 1) + ' - ' + _('no module found') elif state == 1: appname = _('Slot %d') % (slot + 1) + ' - ' + _('init modules') elif state == 2: appname = _('Slot %d') % (slot + 1) + ' - ' + eDVBCI_UI.getInstance().getAppName(slot) else: appname = _('Slot %d') % (slot + 1) + ' - ' + 'Unknown state %d' % state self.list.append((appname, ConfigNothing(), 0, slot)) else: self.list.append((_('no CI slots found'), ConfigNothing(), 1, -1)) menuList = ConfigList(self.list) menuList.list = self.list menuList.l.setList(self.list) self['CiList'] = menuList self.onShown.append(self.setWindowTitle)
def onTimer(self): try: state = eDVBCI_UI.getInstance().getState(0) if state == 0: self.timer.stop() elif state == 1: self.timer.startLongTimer(2) elif state == 2: self.ciCaids = eDVBCIInterfaces.getInstance().readCICaIds(0) if not self.ciCaids: self.timer.startLongTimer(2) return service = self.session.nav.getCurrentService() info = service and service.info() if service is None: self.timer.startLongTimer(2) return info = service and service.info() if not info: self.timer.startLongTimer(2) return serviceCaids = info.getInfoObject(iServiceInformation.sCAIDs) for serviceCaid in serviceCaids: for ciCaid in self.ciCaids: if ciCaid == serviceCaid: eDVBCI_UI.getInstance().setClockRate( 0, eDVBCI_UI.rateHigh) self.timer.stop() return self.timer.startLongTimer(2) else: self.timer.startLongTimer(2) except: self.timer.startLongTimer(2) return
def getText(self): ecmline = '' if self.IsCrypted(): try: f = open('/tmp/ecm.info', 'r') flines = f.readlines() f.close() except: if CI: NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: channel_caid_list = self.get_system_caid() appname = 'unsupported Cam/Card' found_caid = False for slot in range(NUM_CI): appname = eDVBCI_UI.getInstance().getAppName(slot) self.ci_cam = appname i=0 caidlist=[] for caid in eDVBCIInterfaces.getInstance().readCICaIds(slot): i+=1 caidlist.append((str(hex(int(caid))))) for channel_caid in channel_caid_list: if channel_caid in caidlist: caidlist=[] caidlist.append((str(channel_caid))) appname = self.ci_cam found_caid = True break else: appname = 'unsupported Cam/Card' caid = str(channel_caid) found_caid = False if found_caid: for entrie in caidlist: caid = '0x' + str(entrie) try: caid = caid.lstrip('0x') caid = caid.upper() except: caid = str('unknow') system = 'System: unknow' if ((caid>='100') and (caid<='1FF')): system = 'System: SECA' if ((caid>='500') and (caid<='5FF')): system = 'System: VIACCESS' if ((caid>='600') and (caid<='6FF')): system = 'System: IRDETO' if ((caid>='900') and (caid<='9FF')): system = 'System: NDS' if ((caid>='B00') and (caid<='BFF')): system = 'System: CONAX' if ((caid>='D00') and (caid<='DFF')): system = 'System: CWORKS' if ((caid>='E00') and (caid<='EFF')): system = 'System: POWERVU' if ((caid>='1700') and (caid<='17FF')): system = 'System: BETA' if ((caid>='1800') and (caid<='18FF')): system = 'System: NAGRA' ecmline = 'Slot ' + str(i) + ': ' + str(appname) + ' Caid: ' + str(caid.lower()) + ' ' + str(system) else: ecmline = _('No CICam/Card/EMU available') else: ecmline = _('No CICam/Card/EMU available') else: camInfo = {} for line in flines: r = line.split(':', 1) if len(r) > 1 : camInfo[r[0].strip('\n\r\t ')] = r[1].strip('\n\r\t ') caid = camInfo.get('caid','') caid = caid.lstrip('0x') caid = caid.upper() caid = caid.zfill(4) if ((caid>='0100') and (caid<='01FF')): system = 'System: SECA' elif ((caid>='0500') and (caid<='05FF')): system = 'System: VIACCESS' elif ((caid>='0600') and (caid<='06FF')): system = 'System: IRDETO' elif ((caid>='0900') and (caid<='09FF')): system = 'System: NDS' elif ((caid>='0B00') and (caid<='0BFF')): system = 'System: CONAX' elif ((caid>='0D00') and (caid<='0DFF')): system = 'System: CWORKS' elif ((caid>='0E00') and (caid<='0EFF')): system = 'System: POWERVU' elif ((caid>='1700') and (caid<='17FF')): system = 'System: BETA' elif ((caid>='1800') and (caid<='18FF')): system = 'System: NAGRA' else: system = _('not available') caid = 'CAID: ' + caid prov = camInfo.get('prov','') prov = prov.lstrip("0x") prov = prov.upper() prov = prov.zfill(6) prov = 'Provider: ' + prov ecmtime = camInfo.get('ecm time','') if ecmtime: if "msec" in ecmtime: ecmtime = 'ECM: ' + ecmtime else: ecmtime = 'ECM: ' + ecmtime + ' s' hops = 'Hops: ' + str(camInfo.get('hops','')) address = 'Server: ' + str(camInfo.get('address','')) reader = 'Reader: ' + str(camInfo.get('reader','')) source = 'Source: ' + str(camInfo.get('source','')) using = str(camInfo.get('using','')) active = '' if source == 'emu': active = 'EMU' ecmline = active + ' - ' + caid elif using == 'emu': active = 'EMU' if self.type == self.VERYSHORT: ecmline = caid + ', ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + ecmtime elif 'system' in camInfo : active = 'CCCAM' if self.type == self.SATINFO: ecmline = caid + ', ' + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + ' - ' + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = address + ' - ' + ecmtime elif self.type == self.SHORTHOPS: ecmline = caid + ' - ' + hops + ' - ' + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + ' - ' + address + ' - ' + ecmtime elif self.type == self.NORMAL: ecmline = caid + ' - ' + address + ' - ' + hops + ' - ' + ecmtime elif self.type == self.LONG: ecmline = caid + ' - ' + system + ' - ' + address + ' - ' + hops + ' - ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + system + ' - ' + address + ' - ' + hops + ' - ' + ecmtime elif 'reader' in camInfo : active = 'OSCAM' if self.type == self.SATINFO: ecmline = caid + ', ' + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + ' - ' + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = reader + ' - ' + ecmtime elif self.type == self.SHORTHOPS: ecmline = caid + ' - ' + hops + ' - ' + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + ' - ' + reader + ' - ' + ecmtime elif self.type == self.NORMAL: ecmline = caid + ' - ' + reader + ' - ' + hops + ' - ' + ecmtime elif self.type == self.LONG: ecmline = caid + ' - ' + system + ' - ' + reader + ' - ' + hops + ' - ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + system + ' - ' + reader + ' - ' + hops + ' - ' + ecmtime elif 'prov' in camInfo : active = 'MGCAMD' if self.type == self.SATINFO: ecmline = caid + ', ' + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + ' - ' + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = source + ' - ' + ecmtime elif self.type == self.SHORTHOPS: ecmline = caid + ' - ' + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + ' - ' + source + ' - ' + ecmtime elif self.type == self.NORMAL: ecmline = caid + ' - ' + source + ' - ' + prov + ' - ' + ecmtime elif self.type == self.LONG: ecmline = caid + ' - ' + system + ' - ' + source + ' - ' + prov + ' - ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + system + ' - ' + source + ' - ' + prov + ' - ' + ecmtime else: active = 'Unknown' ecmline = _('not available') else: if self.invisible == self.FTAINVISIBLE: ecmline = '' else: ecmline = _('free to air') return ecmline
def getText(self): if self.IsCrypted(): try: f = open('/tmp/ecm.info', 'r') flines = f.readlines() f.close() except: if CI: NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: found_caid = False service_caids = [] service_caid_list = [] caid = '0x0' service = self.source.service info = service and service.info() if info: service_caids = info.getInfoObject(iServiceInformation.sCAIDs) if service_caids: for service_caid in service_caids: service_caid_list.append((str(hex(int(service_caid))))) for act_slot in range(NUM_CI): ci_caids = [] ci_caid_list = [] ci_caids = eDVBCIInterfaces.getInstance().readCICaIds(act_slot) if ci_caids: for ci_caid in ci_caids: ci_caid_list.append(str(hex(int(ci_caid)))) for service_caid in service_caid_list: if service_caid in ci_caid_list: if int(service_caid,16) > int(caid,16): found_caid = True caid = service_caid appname = eDVBCI_UI.getInstance().getAppName(act_slot) slot = act_slot if found_caid: caid = str(caid) caid = caid.lstrip('0x') caid = caid.upper() caid = caid.zfill(4) if ((caid>='1800') and (caid<='18FF')): system = 'System: NAGRA' elif ((caid>='1700') and (caid<='17FF')): system = 'System: BETA' elif ((caid>='0E00') and (caid<='0EFF')): system = 'System: POWERVU' elif ((caid>='0D00') and (caid<='0DFF')): system = 'System: CWORKS' elif ((caid>='0B00') and (caid<='0BFF')): system = 'System: CONAX' elif ((caid>='0900') and (caid<='09FF')): system = 'System: NDS' elif ((caid>='0600') and (caid<='06FF')): system = 'System: IRDETO' elif ((caid>='0500') and (caid<='05FF')): system = 'System: VIACCESS' elif ((caid>='0100') and (caid<='01FF')): system = 'System: SECA' else: system = _('System: unknown') caid = 'CAID: ' + str(caid) slot = 'Slot: ' + str(slot+1) appname = 'CI: ' + str(appname) else: system = _('System: unknown') caid = 'CAID: ' + _('unknown') slot = 'Slot: ' + _('unknown') appname = 'CI: ' + _('unknown') if self.type == self.SATINFO: ecmline = caid + ', ' + slot elif self.type == self.VERYSHORTCAID: ecmline = caid + ' - ' + slot elif self.type == self.VERYSHORTREADER: ecmline = slot + ' - ' + appname elif self.type == self.SHORTREADER: ecmline = caid + ' - ' + system + ' - ' + slot elif self.type == self.NORMAL: ecmline = caid + ' - ' + slot + ' - ' + appname elif self.type == self.LONG: ecmline = caid + ' - ' + system + ' - ' + slot + ' - ' + appname else: ecmline = 'CICAM' + ' - ' + caid + ' - ' + system + ' - ' + slot + ' - ' + appname else: ecmline = _('waiting for information ...') else: ecmline = _('no information available') else: camInfo = {} for line in flines: r = line.split(':', 1) if len(r) > 1 : camInfo[r[0].strip('\n\r\t ')] = r[1].strip('\n\r\t ') caid = camInfo.get('caid','') caid = caid.lstrip('0x') caid = caid.upper() caid = caid.zfill(4) if ((caid>='1800') and (caid<='18FF')): system = 'System: NAGRA' elif ((caid>='1700') and (caid<='17FF')): system = 'System: BETA' elif ((caid>='0E00') and (caid<='0EFF')): system = 'System: POWERVU' elif ((caid>='0D00') and (caid<='0DFF')): system = 'System: CWORKS' elif ((caid>='0B00') and (caid<='0BFF')): system = 'System: CONAX' elif ((caid>='0900') and (caid<='09FF')): system = 'System: NDS' elif ((caid>='0600') and (caid<='06FF')): system = 'System: IRDETO' elif ((caid>='0500') and (caid<='05FF')): system = 'System: VIACCESS' elif ((caid>='0100') and (caid<='01FF')): system = 'System: SECA' else: system = _('System: unknown') caid = 'CAID: ' + str(caid) prov = camInfo.get('prov','') prov = prov.lstrip("0x") prov = prov.upper() prov = prov.zfill(6) prov = 'Provider: ' + prov ecmtime = camInfo.get('ecm time','') if ecmtime: if "msec" in ecmtime: ecmtime = 'ECM: ' + ecmtime else: ecmtime = 'ECM: ' + ecmtime + ' s' hops = 'Hops: ' + str(camInfo.get('hops','')) address = 'Server: ' + str(camInfo.get('address','')) reader = 'Reader: ' + str(camInfo.get('reader','')) source = 'Source: ' + str(camInfo.get('source','')) using = str(camInfo.get('using','')) active = '' if source == 'emu': active = 'EMU' ecmline = active + ' - ' + caid elif using == 'emu': active = 'EMU' if self.type == self.VERYSHORT: ecmline = caid + ', ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + ecmtime elif 'system' in camInfo : active = 'CCCAM' if self.type == self.SATINFO: ecmline = caid + ', ' + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + ' - ' + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = address + ' - ' + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + ' - ' + address + ' - ' + ecmtime elif self.type == self.NORMAL: ecmline = caid + ' - ' + address + ' - ' + hops + ' - ' + ecmtime elif self.type == self.LONG: ecmline = caid + ' - ' + system + ' - ' + address + ' - ' + hops + ' - ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + system + ' - ' + address + ' - ' + hops + ' - ' + ecmtime elif 'reader' in camInfo : active = 'OSCAM' if self.type == self.SATINFO: ecmline = caid + ', ' + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + ' - ' + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = reader + ' - ' + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + ' - ' + reader + ' - ' + ecmtime elif self.type == self.NORMAL: ecmline = caid + ' - ' + reader + ' - ' + hops + ' - ' + ecmtime elif self.type == self.LONG: ecmline = caid + ' - ' + system + ' - ' + reader + ' - ' + hops + ' - ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + system + ' - ' + reader + ' - ' + hops + ' - ' + ecmtime elif 'prov' in camInfo : active = 'MGCAMD' if self.type == self.SATINFO: ecmline = caid + ', ' + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + ' - ' + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = source + ' - ' + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + ' - ' + source + ' - ' + ecmtime elif self.type == self.NORMAL: ecmline = caid + ' - ' + source + ' - ' + prov + ' - ' + ecmtime elif self.type == self.LONG: ecmline = caid + ' - ' + system + ' - ' + source + ' - ' + prov + ' - ' + ecmtime else: ecmline = active + ' - ' + caid + ' - ' + system + ' - ' + source + ' - ' + prov + ' - ' + ecmtime else: active = _('unknown') ecmline = _('no information available') else: if self.invisible == self.FTAINVISIBLE: ecmline = '' else: ecmline = _('free to air') return ecmline
#FIXMEE... def getNumVideoDecoders(): idx = 0 while fileExists("/dev/dvb/adapter0/video%d"% idx, 'f'): idx += 1 return idx def countFrontpanelLEDs(): leds = 0 if fileExists("/proc/stb/fp/led_set_pattern"): leds += 1 while fileExists("/proc/stb/fp/led%d_pattern" % leds): leds += 1 return leds SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() SystemInfo["CommonInterfaceCIDelay"] = fileCheck("/proc/stb/tsmux/rmx_delay") for cislot in range (0, SystemInfo["CommonInterface"]): SystemInfo["CI%dSupportsHighBitrates" % cislot] = fileCheck("/proc/stb/tsmux/ci%d_tsclk" % cislot) SystemInfo["CI%dRelevantPidsRoutingSupport" % cislot] = fileCheck("/proc/stb/tsmux/ci%d_relevant_pids_routing" % cislot) SystemInfo["NumVideoDecoders"] = getNumVideoDecoders() SystemInfo["PIPAvailable"] = SystemInfo["NumVideoDecoders"] > 1 SystemInfo["CanMeasureFrontendInputPower"] = eDVBResourceManager.getInstance().canMeasureFrontendInputPower() SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output() SystemInfo["FrontpanelDisplay"] = fileExists("/dev/dbox/oled0") or fileExists("/dev/dbox/lcd0") SystemInfo["7segment"] = getDisplayType() in ('7segment') SystemInfo["ConfigDisplay"] = SystemInfo["FrontpanelDisplay"] and getDisplayType() not in ('7segment') SystemInfo["LCDSKINSetup"] = pathExists("/usr/share/enigma2/display") and not SystemInfo["7segment"] SystemInfo["ZapMode"] = fileCheck("/proc/stb/video/zapmode") or fileCheck("/proc/stb/video/zapping_mode") SystemInfo["NumFrontpanelLEDs"] = countFrontpanelLEDs()
def getText(self): name = "" service = self.source.service if service: NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: self.control = True else: self.control = False else: self.control = False if self.type == self.NAME1: if self.control: state = eDVBCI_UI.getInstance().getState(0) if state != -1: name = self.getFilename(state, 0) else: name = _("no module found") else: name = _("no module found") return name elif self.type == self.NAME2: if self.control: state = eDVBCI_UI.getInstance().getState(1) if state != -1: name = self.getFilename(state, 1) else: name = _("no module found") else: name = _("no module found") return name elif self.type == self.SLOT1: if self.control: state = eDVBCI_UI.getInstance().getState(0) if state != -1: name = self.getSlotname(state, 0) else: name = _("Slot %d") % (1) + " - " + _("no module found") else: name = _("Slot %d") % (1) + " - " + _("no module found") return name elif self.type == self.SLOT2: if self.control: state = eDVBCI_UI.getInstance().getState(1) if state != -1: name = self.getSlotname(state, 1) else: name = _("Slot %d") % (2) + " - " + _("no module found") else: name = _("Slot %d") % (2) + " - " + _("no module found") return name elif self.type == self.PICON1: if self.control: state = eDVBCI_UI.getInstance().getState(0) if state != -1: name = self.getPiconname(state, 1) else: name = "NOMODULE_SLOT1" else: name = "NOMODULE_SLOT1" return name elif self.type == self.PICON2: if self.control: state = eDVBCI_UI.getInstance().getState(1) if state != -1: name = self.getPiconname(state, 2) else: name = "NOMODULE_SLOT2" else: name = "NOMODULE_SLOT2" return name return ""
def parse_ci_assignment(self): NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: self.CI_ASSIGNMENT_LIST = [] def getValue(definitions, default): ret = '' Len = len(definitions) return Len > 0 and definitions[Len - 1].text or default for ci in range(NUM_CI): filename = eEnv.resolve('${sysconfdir}/enigma2/ci') + str(ci) + '.xml' if not os.path.exists(filename): continue try: tree = parse(filename).getroot() read_services = [] read_providers = [] usingcaid = [] for slot in tree.findall('slot'): read_slot = getValue(slot.findall('id'), False).encode('UTF-8') for caid in slot.findall('caid'): read_caid = caid.get('id').encode('UTF-8') usingcaid.append(long(read_caid, 16)) for service in slot.findall('service'): read_service_ref = service.get('ref').encode('UTF-8') read_services.append(read_service_ref) for provider in slot.findall('provider'): read_provider_name = provider.get('name').encode('UTF-8') read_provider_dvbname = provider.get('dvbnamespace').encode('UTF-8') read_providers.append((read_provider_name, long(read_provider_dvbname, 16))) self.CI_ASSIGNMENT_LIST.append((int(read_slot), (read_services, read_providers, usingcaid))) except: print '[CI_ASSIGNMENT %d] error parsing xml...' % ci services = [] providers = [] for item in self.CI_ASSIGNMENT_LIST: print '[CI_Activate] activate CI%d with following settings:' % item[0] print item[1] try: eDVBCIInterfaces.getInstance().setDescrambleRules(item[0], item[1]) except: print '[CI_Activate_Config_CI%d] error setting DescrambleRules...' % item[0] for x in item[1][0]: services.append(x) for x in item[1][1]: providers.append(x[0]) service_refs = [] if len(services): for x in services: service_refs.append(eServiceReference(x)) provider_services_refs = [] if len(providers): provider_services_refs = self.getProivderServices(providers) self.CI_ASSIGNMENT_SERVICES_LIST = [service_refs, provider_services_refs]
def main(session, **kwargs): session.open(CIselectMainMenu) def isModule(): NUM_CI = eDVBCIInterfaces.getInstance() and eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI and NUM_CI > 0: for slot in range(NUM_CI): state = eDVBCI_UI.getInstance().getState(slot) if state > 0: return True return False def menu(menuid, **kwargs): <<<<<<< HEAD if menuid == "setup" and eDVBCIInterfaces.getInstance().getNumOfSlots(): return [(_("Common Interface Assignment"), main, "ci_assign", 11)] return [ ] ======= if menuid == "cam" and isModule(): return [(_("Common Interface assignment"), main, "ci_assign", 11)] return [] >>>>>>> f46f533458249aa3ad70f562fab18859c06e8197 def Plugins(**kwargs): description = _("a gui to assign services/providers to common interface modules") if config.usage.setup_level.index > 1: <<<<<<< HEAD return [PluginDescriptor( where = PluginDescriptor.WHERE_SESSIONSTART, needsRestart = False, fnc = sessionstart ), PluginDescriptor( where = PluginDescriptor.WHERE_AUTOSTART, needsRestart = False, fnc = autostart ), PluginDescriptor( name = "CommonInterfaceAssignment", description = _("a gui to assign services/providers/caids to common interface modules"), where = PluginDescriptor.WHERE_MENU, needsRestart = False, fnc = menu )]
def getText(self): name = "" service = self.source.service if service: NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: self.control = True else: self.control = False else: self.control = False if self.type == self.NAME1: if self.control: state = eDVBCI_UI.getInstance().getState(0) if state != -1: name = self.getFilename(state, 0) else: name = _("no module found") else: name = _("no module found") return name elif self.type == self.NAME2: if self.control: state = eDVBCI_UI.getInstance().getState(1) if state != -1: name = self.getFilename(state, 1) else: name = _("no module found") else: name = _("no module found") return name elif self.type == self.NAME3: if self.control: state = eDVBCI_UI.getInstance().getState(2) if state != -1: name = self.getFilename(state, 2) else: name = _("no module found") else: name = _("no module found") return name elif self.type == self.NAME4: if self.control: state = eDVBCI_UI.getInstance().getState(3) if state != -1: name = self.getFilename(state, 3) else: name = _("no module found") else: name = _("no module found") return name elif self.type == self.SLOT1: if self.control: state = eDVBCI_UI.getInstance().getState(0) if state != -1: name = self.getSlotname(state, 0) else: name = _("Slot %d") %(1) + " - " + _("no module found") else: name = _("Slot %d") %(1) + " - " + _("no module found") return name elif self.type == self.SLOT2: if self.control: state = eDVBCI_UI.getInstance().getState(1) if state != -1: name = self.getSlotname(state, 1) else: name = _("Slot %d") %(2) + " - " + _("no module found") else: name = _("Slot %d") %(2) + " - " + _("no module found") return name elif self.type == self.SLOT3: if self.control: state = eDVBCI_UI.getInstance().getState(2) if state != -1: name = self.getSlotname(state, 2) else: name = _("Slot %d") %(3) + " - " + _("no module found") else: name = _("Slot %d") %(3) + " - " + _("no module found") return name elif self.type == self.SLOT4: if self.control: state = eDVBCI_UI.getInstance().getState(3) if state != -1: name = self.getSlotname(state, 3) else: name = _("Slot %d") %(4) + " - " + _("no module found") else: name = _("Slot %d") %(4) + " - " + _("no module found") return name elif self.type == self.PICON1: if self.control: state = eDVBCI_UI.getInstance().getState(0) if state != -1: name = self.getPiconname(state, 1) else: name = "NOMODULE_SLOT1" else: name = "NOMODULE_SLOT1" return name elif self.type == self.PICON2: if self.control: state = eDVBCI_UI.getInstance().getState(1) if state != -1: name = self.getPiconname(state, 2) else: name = "NOMODULE_SLOT2" else: name = "NOMODULE_SLOT2" return name elif self.type == self.PICON3: if self.control: state = eDVBCI_UI.getInstance().getState(2) if state != -1: name = self.getPiconname(state, 3) else: name = "NOMODULE_SLOT3" else: name = "NOMODULE_SLOT3" return name elif self.type == self.PICON4: if self.control: state = eDVBCI_UI.getInstance().getState(3) if state != -1: name = self.getPiconname(state, 4) else: name = "NOMODULE_SLOT4" else: name = "NOMODULE_SLOT4" return name return ""
def parse_ci_assignment(self): NUM_CI = SystemInfo["CommonInterface"] if NUM_CI and NUM_CI > 0: self.CI_ASSIGNMENT_LIST = [] def getValue(definitions, default): Len = len(definitions) return Len > 0 and definitions[Len - 1].text or default for ci in range(NUM_CI): filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str( ci) + ".xml" if not os.path.exists(filename): continue try: tree = parse(filename).getroot() read_services = [] read_providers = [] usingcaid = [] for slot in tree.findall("slot"): read_slot = getValue(slot.findall("id"), False).encode("UTF-8") if read_slot is not False and self.CI_ASSIGNMENT_SERVICES_LIST is None: self.CI_ASSIGNMENT_SERVICES_LIST = {} for caid in slot.findall("caid"): read_caid = caid.get("id").encode("UTF-8") usingcaid.append(long(read_caid, 16)) for service in slot.findall("service"): read_service_ref = service.get("ref").encode( "UTF-8") read_services.append(read_service_ref) if read_slot is not False and not self.CI_ASSIGNMENT_SERVICES_LIST.get( read_service_ref, False): self.CI_ASSIGNMENT_SERVICES_LIST[ read_service_ref] = read_slot for provider in slot.findall("provider"): read_provider_name = provider.get("name").encode( "UTF-8") read_provider_dvbname = provider.get( "dvbnamespace").encode("UTF-8") read_providers.append( (read_provider_name, long(read_provider_dvbname, 16))) if read_slot is not False: provider_services_refs = self.getProivderServices( [read_provider_name]) if provider_services_refs: for ref in provider_services_refs: if not self.CI_ASSIGNMENT_SERVICES_LIST.get( ref, False): self.CI_ASSIGNMENT_SERVICES_LIST[ ref] = read_slot if read_slot is not False and (read_services or read_providers or usingcaid): self.CI_ASSIGNMENT_LIST.append( (int(read_slot), (read_services, read_providers, usingcaid))) except: print "[CI_ASSIGNMENT %d] ERROR parsing xml..." % ci try: os.remove(filename) except: print "[CI_ASSIGNMENT %d] ERROR remove damaged xml..." % ci if self.CI_ASSIGNMENT_LIST: for item in self.CI_ASSIGNMENT_LIST: try: eDVBCIInterfaces.getInstance().setDescrambleRules( item[0], item[1]) print "[CI_ASSIGNMENT %d] activate with following settings" % item[ 0] except: print "[CI_ASSIGNMENT %d] ERROR setting DescrambleRules" % item[ 0]
def menu(menuid, **kwargs): if menuid == "setup" and eDVBCIInterfaces.getInstance().getNumOfSlots(): return [(_("Common Interface Assignment"), main, "ci_assign", 11)] return [ ]
def parse_ci_assignment(self): NUM_CI = SystemInfo["CommonInterface"] if NUM_CI and NUM_CI > 0: self.CI_ASSIGNMENT_LIST = [] def getValue(definitions, default): Len = len(definitions) return Len > 0 and definitions[Len-1].text or default for ci in range(NUM_CI): filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(ci) + ".xml" if not os.path.exists(filename): continue try: tree = parse(filename).getroot() read_services = [] read_providers = [] usingcaid = [] for slot in tree.findall("slot"): read_slot = getValue(slot.findall("id"), False).encode("UTF-8") for caid in slot.findall("caid"): read_caid = caid.get("id").encode("UTF-8") usingcaid.append(long(read_caid,16)) for service in slot.findall("service"): read_service_ref = service.get("ref").encode("UTF-8") read_services.append (read_service_ref) for provider in slot.findall("provider"): read_provider_name = provider.get("name").encode("UTF-8") read_provider_dvbname = provider.get("dvbnamespace").encode("UTF-8") read_providers.append((read_provider_name,long(read_provider_dvbname,16))) if read_slot is not False and (read_services or read_providers or usingcaid): self.CI_ASSIGNMENT_LIST.append((int(read_slot), (read_services, read_providers, usingcaid))) except: print "[CI_ASSIGNMENT %d] error parsing xml..." % ci try: os.remove(filename) except: print "[CI_ASSIGNMENT %d] error remove damaged xml..." % ci services = [] providers = [] for item in self.CI_ASSIGNMENT_LIST: print "[CI_Activate] activate CI%d with following settings:" % item[0] try: eDVBCIInterfaces.getInstance().setDescrambleRules(item[0],item[1]) except: print "[CI_Activate_Config_CI%d] error setting DescrambleRules..." %item[0] for x in item[1][0]: services.append(x) for x in item[1][1]: providers.append(x[0]) service_refs = [] if len(services): for x in services: service_refs.append(eServiceReference(x)) provider_services_refs = [] if len(providers): provider_services_refs = self.getProivderServices(providers) self.CI_ASSIGNMENT_SERVICES_LIST = [service_refs, provider_services_refs]
def parse_ci_assignment(self): NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: self.CI_ASSIGNMENT_LIST = [] def getValue(definitions, default): ret = "" Len = len(definitions) return Len > 0 and definitions[Len - 1].text or default for ci in range(NUM_CI): filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str( ci) + ".xml" if not os.path.exists(filename): continue try: tree = parse(filename).getroot() read_services = [] read_providers = [] usingcaid = [] for slot in tree.findall("slot"): read_slot = getValue(slot.findall("id"), False).encode("UTF-8") for caid in slot.findall("caid"): read_caid = caid.get("id").encode("UTF-8") usingcaid.append(long(read_caid, 16)) for service in slot.findall("service"): read_service_ref = service.get("ref").encode( "UTF-8") read_services.append(read_service_ref) for provider in slot.findall("provider"): read_provider_name = provider.get("name").encode( "UTF-8") read_provider_dvbname = provider.get( "dvbnamespace").encode("UTF-8") read_providers.append( (read_provider_name, long(read_provider_dvbname, 16))) self.CI_ASSIGNMENT_LIST.append( (int(read_slot), (read_services, read_providers, usingcaid))) except: print "[CI_ASSIGNMENT %d] error parsing xml..." % ci services = [] providers = [] for item in self.CI_ASSIGNMENT_LIST: print "[CI_Activate] activate CI%d with following settings:" % item[ 0] print item[1] try: eDVBCIInterfaces.getInstance().setDescrambleRules( item[0], item[1]) except: print "[CI_Activate_Config_CI%d] error setting DescrambleRules..." % item[ 0] for x in item[1][0]: services.append(x) for x in item[1][1]: providers.append(x[0]) service_refs = [] if len(services): for x in services: service_refs.append(eServiceReference(x)) provider_services_refs = [] if len(providers): provider_services_refs = self.getProivderServices(providers) self.CI_ASSIGNMENT_SERVICES_LIST = [ service_refs, provider_services_refs ]
def yellowPressed(self): NUM_CI=eDVBCIInterfaces.getInstance().getNumOfSlots() print "[CI_Check] FOUND %d CI Slots " % NUM_CI if NUM_CI > 0: for ci in range(NUM_CI): print eDVBCIInterfaces.getInstance().getDescrambleRules(ci)
def getText(self): if self.IsCrypted(): try: f = open("/tmp/ecm.info", "r") flines = f.readlines() f.close() except: if CI: NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots() if NUM_CI > 0: found_caid = False service_caids = [] service_caid_list = [] caid = "0x0" service = self.source.service info = service and service.info() if info: service_caids = info.getInfoObject(iServiceInformation.sCAIDs) if service_caids: for service_caid in service_caids: service_caid_list.append((str(hex(int(service_caid))))) for act_slot in range(NUM_CI): ci_caids = [] ci_caid_list = [] ci_caids = eDVBCIInterfaces.getInstance().readCICaIds(act_slot) if ci_caids: for ci_caid in ci_caids: ci_caid_list.append(str(hex(int(ci_caid)))) for service_caid in service_caid_list: if service_caid in ci_caid_list: if int(service_caid, 16) > int(caid, 16): found_caid = True caid = service_caid appname = eDVBCI_UI.getInstance().getAppName(act_slot) slot = act_slot if found_caid: caid = str(caid) caid = caid.lstrip("0x") caid = caid.upper() caid = caid.zfill(4) if (caid >= "1800") and (caid <= "18FF"): system = "System: NAGRA" elif (caid >= "1700") and (caid <= "17FF"): system = "System: BETA" elif (caid >= "0E00") and (caid <= "0EFF"): system = "System: POWERVU" elif (caid >= "0D00") and (caid <= "0DFF"): system = "System: CWORKS" elif (caid >= "0B00") and (caid <= "0BFF"): system = "System: CONAX" elif (caid >= "0900") and (caid <= "09FF"): system = "System: NDS" elif (caid >= "0600") and (caid <= "06FF"): system = "System: IRDETO" elif (caid >= "0500") and (caid <= "05FF"): system = "System: VIACCESS" elif (caid >= "0100") and (caid <= "01FF"): system = "System: SECA" else: system = _("System: unknown") caid = "CAID: " + str(caid) slot = "Slot: " + str(slot + 1) appname = "CI: " + str(appname) else: system = _("System: unknown") caid = "CAID: " + _("unknown") slot = "Slot: " + _("unknown") appname = "CI: " + _("unknown") if self.type == self.SATINFO: ecmline = caid + ", " + slot elif self.type == self.VERYSHORTCAID: ecmline = caid + " - " + slot elif self.type == self.VERYSHORTREADER: ecmline = slot + " - " + appname elif self.type == self.SHORTREADER: ecmline = caid + " - " + system + " - " + slot elif self.type == self.NORMAL: ecmline = caid + " - " + slot + " - " + appname elif self.type == self.LONG: ecmline = caid + " - " + system + " - " + slot + " - " + appname else: ecmline = "CICAM" + " - " + caid + " - " + system + " - " + slot + " - " + appname else: ecmline = _("waiting for information ...") else: ecmline = _("no information available") else: camInfo = {} for line in flines: r = line.split(":", 1) if len(r) > 1: camInfo[r[0].strip("\n\r\t ")] = r[1].strip("\n\r\t ") caid = camInfo.get("caid", "") caid = caid.lstrip("0x") caid = caid.upper() caid = caid.zfill(4) if (caid >= "1800") and (caid <= "18FF"): system = "System: NAGRA" elif (caid >= "1700") and (caid <= "17FF"): system = "System: BETA" elif (caid >= "0E00") and (caid <= "0EFF"): system = "System: POWERVU" elif (caid >= "0D00") and (caid <= "0DFF"): system = "System: CWORKS" elif (caid >= "0B00") and (caid <= "0BFF"): system = "System: CONAX" elif (caid >= "0900") and (caid <= "09FF"): system = "System: NDS" elif (caid >= "0600") and (caid <= "06FF"): system = "System: IRDETO" elif (caid >= "0500") and (caid <= "05FF"): system = "System: VIACCESS" elif (caid >= "0100") and (caid <= "01FF"): system = "System: SECA" else: system = _("System: unknown") caid = "CAID: " + str(caid) prov = camInfo.get("prov", "") prov = prov.lstrip("0x") prov = prov.upper() prov = prov.zfill(6) prov = "Provider: " + prov ecmtime = camInfo.get("ecm time", "") if ecmtime: if "msec" in ecmtime: ecmtime = "ECM: " + ecmtime else: ecmtime = "ECM: " + ecmtime + " s" hops = "Hops: " + str(camInfo.get("hops", "")) address = "Server: " + str(camInfo.get("address", "")) reader = "Reader: " + str(camInfo.get("reader", "")) source = "Source: " + str(camInfo.get("source", "")) using = str(camInfo.get("using", "")) active = "" if source == "emu": active = "EMU" ecmline = active + " - " + caid elif using == "emu": active = "EMU" if self.type in (self.SATINFO, self.VERYSHORTCAID, self.VERYSHORTREADER): ecmline = caid + ", " + ecmtime else: ecmline = active + " - " + caid + " - " + ecmtime elif "system" in camInfo: active = "CCCAM" if self.type == self.SATINFO: ecmline = caid + ", " + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + " - " + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = address + " - " + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + " - " + address + " - " + ecmtime elif self.type == self.NORMAL: ecmline = caid + " - " + address + " - " + hops + " - " + ecmtime elif self.type == self.LONG: ecmline = caid + " - " + system + " - " + address + " - " + hops + " - " + ecmtime else: ecmline = ( active + " - " + caid + " - " + system + " - " + address + " - " + hops + " - " + ecmtime ) elif "reader" in camInfo: active = "OSCAM" if self.type == self.SATINFO: ecmline = caid + ", " + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + " - " + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = reader + " - " + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + " - " + reader + " - " + ecmtime elif self.type == self.NORMAL: ecmline = caid + " - " + reader + " - " + hops + " - " + ecmtime elif self.type == self.LONG: ecmline = caid + " - " + system + " - " + reader + " - " + hops + " - " + ecmtime else: ecmline = ( active + " - " + caid + " - " + system + " - " + reader + " - " + hops + " - " + ecmtime ) elif "prov" in camInfo: active = "MGCAMD" if self.type == self.SATINFO: ecmline = caid + ", " + ecmtime elif self.type == self.VERYSHORTCAID: ecmline = caid + " - " + ecmtime elif self.type == self.VERYSHORTREADER: ecmline = source + " - " + ecmtime elif self.type == self.SHORTREADER: ecmline = caid + " - " + source + " - " + ecmtime elif self.type == self.NORMAL: ecmline = caid + " - " + source + " - " + prov + " - " + ecmtime elif self.type == self.LONG: ecmline = caid + " - " + system + " - " + source + " - " + prov + " - " + ecmtime else: ecmline = ( active + " - " + caid + " - " + system + " - " + source + " - " + prov + " - " + ecmtime ) else: active = _("unknown") ecmline = _("no information available") else: if self.invisible == self.FTAINVISIBLE: ecmline = "" else: ecmline = _("free to air") return ecmline
def countFrontpanelLEDs(): number_of_leds = fileExists("/proc/stb/fp/led_set_pattern") and 1 or 0 while fileExists("/proc/stb/fp/led%d_pattern" % number_of_leds): number_of_leds += 1 return number_of_leds def getHasTuners(): if fileExists("/proc/bus/nim_sockets"): nimfile = open("/proc/bus/nim_sockets") data = nimfile.read().strip() nimfile.close() return len(data) > 0 return False SystemInfo["CommonInterface"] = eDVBCIInterfaces.getInstance().getNumOfSlots() SystemInfo["CommonInterfaceCIDelay"] = fileCheck("/proc/stb/tsmux/rmx_delay") for cislot in range (0, SystemInfo["CommonInterface"]): SystemInfo["CI%dSupportsHighBitrates" % cislot] = fileCheck("/proc/stb/tsmux/ci%d_tsclk" % cislot) SystemInfo["CI%dRelevantPidsRoutingSupport" % cislot] = fileCheck("/proc/stb/tsmux/ci%d_relevant_pids_routing" % cislot) SystemInfo["NumVideoDecoders"] = getNumVideoDecoders() SystemInfo["PIPAvailable"] = SystemInfo["NumVideoDecoders"] > 1 SystemInfo["CanMeasureFrontendInputPower"] = eDVBResourceManager.getInstance().canMeasureFrontendInputPower() SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output() SystemInfo["ZapMode"] = fileCheck("/proc/stb/video/zapmode") or fileCheck("/proc/stb/video/zapping_mode") SystemInfo["NumFrontpanelLEDs"] = countFrontpanelLEDs() SystemInfo["FrontpanelDisplay"] = fileExists("/dev/dbox/oled0") or fileExists("/dev/dbox/lcd0") SystemInfo["LCDsymbol_circle_recording"] = fileCheck("/proc/stb/lcd/symbol_circle") or getBoxType() in ("hd51", "vs1500") and fileCheck("/proc/stb/lcd/symbol_recording") SystemInfo["LCDsymbol_timeshift"] = fileCheck("/proc/stb/lcd/symbol_timeshift") SystemInfo["LCDshow_symbols"] = (getBoxType().startswith("et9") or getBoxType() in ("hd51", "vs1500")) and fileCheck("/proc/stb/lcd/show_symbols")
def getBootdevice(): dev = ("root" in cmdline and cmdline["root"].startswith("/dev/")) and cmdline["root"][5:] while dev and not fileExists("/sys/block/%s" % dev): dev = dev[:-1] return dev model = HardwareInfo().get_device_model() SystemInfo["RecoveryMode"] = fileCheck("/proc/stb/fp/boot_mode") SystemInfo["InDebugMode"] = eGetEnigmaDebugLvl() >= 4 SystemInfo["CommonInterface"] = model in ( "h9combo", "h9combose", "h10", "pulse4kmini") and 1 or eDVBCIInterfaces.getInstance().getNumOfSlots() SystemInfo["CommonInterfaceCIDelay"] = fileCheck("/proc/stb/tsmux/rmx_delay") for cislot in range(0, SystemInfo["CommonInterface"]): SystemInfo["CI%dSupportsHighBitrates" % cislot] = fileCheck( "/proc/stb/tsmux/ci%d_tsclk" % cislot) SystemInfo["CI%dRelevantPidsRoutingSupport" % cislot] = fileCheck( "/proc/stb/tsmux/ci%d_relevant_pids_routing" % cislot) SystemInfo["HasSoftcamInstalled"] = hassoftcaminstalled() SystemInfo["NumVideoDecoders"] = getNumVideoDecoders() SystemInfo["PIPAvailable"] = SystemInfo["NumVideoDecoders"] > 1 SystemInfo["CanMeasureFrontendInputPower"] = eDVBResourceManager.getInstance( ).canMeasureFrontendInputPower() SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output() SystemInfo["ZapMode"] = fileCheck("/proc/stb/video/zapmode") or fileCheck( "/proc/stb/video/zapping_mode") SystemInfo["ISDREAMBOX"] = getBoxBrand() in ("dreambox", )
def countFrontpanelLEDs(): leds = 0 if fileExists("/proc/stb/fp/led_set_pattern"): leds += 1 while fileExists("/proc/stb/fp/led%d_pattern" % leds): leds += 1 return leds SystemInfo["NumFrontpanelLEDs"] = countFrontpanelLEDs() # iq [ #SystemInfo["FrontpanelDisplay"] = fileExists("/dev/dbox/oled0") or fileExists("/dev/dbox/lcd0") SystemInfo["FrontpanelDisplay"] = HardwareInfo().has_micom() # ] SystemInfo["FrontpanelDisplayGrayscale"] = fileExists("/dev/dbox/oled0") # iq [ #SystemInfo["DeepstandbySupport"] = HardwareInfo().get_device_name() != "dm800" #def isSupportDeepStandby(): # if HardwareInfo().has_micom(): # FP_IOCTL_SUPPORT_DEEP_STANDBY = 0x429 # fp = open('/dev/dbox/fp0', 'w') # import fcntl # return fcntl.ioctl(fp.fileno(), FP_IOCTL_SUPPORT_DEEP_STANDBY) #SystemInfo["DeepstandbySupport"] = isSupportDeepStandby() from enigma import eDVBCIInterfaces SystemInfo["NumCiSlots"] = eDVBCIInterfaces.getInstance().getNumOfSlots() # ]