-#use this class to synchronize all ci to/from user communications
-class CiWait(Screen):
- def cancel(self):
- #stop pending requests
- self.Timer.stop()
- self.close()
-
- def Keycancel(self):
- if self.lastQuery >= 2:
- eDVBCI_UI.getInstance().stopMMI(self.slot)
- self.parent.mmistate = 0
- self.cancel()
-
- def TimerCheck(self):
- #special cases to prevent to fast resets/inits
- if self.lastQuery == 0: #reset requested
- self.Keycancel()
- elif self.lastQuery == 1: #init requested
- self.Keycancel()
- elif self.lastQuery == 4: #close requested
- self.Keycancel()
- else:
- if eDVBCI_UI.getInstance().getState(self.slot) != 2: #module removed
- self.Keycancel()
- else:
- if eDVBCI_UI.getInstance().availableMMI(self.slot) == 1: #data?
- self.parent.mmistate = 2 #request screen
- self.cancel()
-
- def __init__(self, session, parent, slot, query):
- Screen.__init__(self, session)
-
- self["message"] = Label(_("waiting for CI..."))
-
- self["actions"] = ActionMap(["OkCancelActions"],
- {
- "cancel": self.Keycancel
- })
-
- self.parent = parent
- self.lastQuery = query
- self.slot = slot
-
- self.Timer = eTimer()
- self.Timer.timeout.get().append(self.TimerCheck)
- self.Timer.start(1000) #check and block 1 second
-
- if query == 0: #reset
- #print "reset"
- eDVBCI_UI.getInstance().setReset(slot)
- if query == 1: #init
- #print "init"
- eDVBCI_UI.getInstance().initialize(slot)
- if query == 2: #mmi-open
- #print "mmi open"
- eDVBCI_UI.getInstance().startMMI(slot)
- if query == 3: #mmi-answer
- #print "mmi answer"
- if self.parent.answertype == 0: #ENQ
- eDVBCI_UI.getInstance().answerEnq(slot, self.parent.answertype, self.parent.answer)
- elif self.parent.answertype == 1: #ENQ cancel
- eDVBCI_UI.getInstance().answerEnq(slot, self.parent.answertype, "")
- elif self.parent.answertype == 2: #Menu
- eDVBCI_UI.getInstance().answerMenu(slot, self.parent.answer)
- elif self.parent.answertype == 3: #List
- eDVBCI_UI.getInstance().answerMenu(slot, self.parent.answer)
- if query == 4: #mmi-close
- #print "mmi close"
- pass
-
-
-class CiEntryList(HTMLComponent, GUIComponent):