Beispiel #1
0
	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
Beispiel #3
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:
                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]
Beispiel #4
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]);
Beispiel #5
0
    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)
Beispiel #6
0
    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)
Beispiel #7
0
    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)
Beispiel #8
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=[]
				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]
Beispiel #9
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
Beispiel #10
0
	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)
Beispiel #11
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):
            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]
Beispiel #12
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)
Beispiel #13
0
	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
Beispiel #14
0
 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)
Beispiel #15
0
	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
Beispiel #16
0
    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
Beispiel #17
0
def menu(menuid, **kwargs):
    if menuid == 'setup' and eDVBCIInterfaces.getInstance().getNumOfSlots():
        return [(_('Common Interface assignment'),
          main,
          'ci_assign',
          11)]
    return []
Beispiel #18
0
 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
Beispiel #19
0
    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
Beispiel #20
0
	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)
Beispiel #21
0
	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")
Beispiel #22
0
	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
Beispiel #23
0
	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
Beispiel #24
0
 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")
Beispiel #25
0
	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)
Beispiel #26
0
    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)
Beispiel #27
0
 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
Beispiel #28
0
    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
Beispiel #29
0
	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
Beispiel #30
0
 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
Beispiel #31
0
    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
Beispiel #32
0
 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
Beispiel #33
0
    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))
Beispiel #34
0
    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
Beispiel #36
0
	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
Beispiel #37
0
	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
Beispiel #38
0
#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 ""
Beispiel #40
0
    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 ""
Beispiel #43
0
    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 [ ]
Beispiel #45
0
	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]
Beispiel #46
0
    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
            ]
Beispiel #47
0
	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)
Beispiel #48
0
    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
Beispiel #49
0
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")
Beispiel #50
0

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", )
Beispiel #51
0

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()
# ]
Beispiel #52
0
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()
# ]