class pyResManController(object): """The controller of reResManDialog;""" def __init__(self, handler): """""Constructor""" self.__readername = None self.__reader = pyResManReader() self.__handler = handler self.__reader.addReaderMonitorHandler(self) self.__reader.monitorReaders() self.__runScriptThread = None self.__gpInterface = GPInterface() self.__scDebugger = R502SpyLibrary(self.__gpInterface) gp.enableTraceMode(1) self.__debuggerVariables = {} def getReaderList(self): return self.__reader.getReaderList() def getReaderName(self): return self.__readername def connect(self, readername, protocol, mode): """ Connect to the reader;""" self.__readername = readername self.__handler.handleLog('Connect to %s.' %(readername)) self.__gpInterface.connect(str(readername), protocol) self.__scDebugger.init() def handleCardEvent(self, eventType, args): readername = args[0] if eventType == ICardMonitorEventHandler.MONITOR_EVENT_INSERT: self.__handler.handleCardInserted(readername) elif eventType == ICardMonitorEventHandler.MONITOR_EVENT_REMOVE: self.__handler.handleCardRemoved(readername) self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() def handleReaderEvent(self, eventType, args): if eventType == IReaderMonitorEventHandler.MONITOR_EVENT_ADDED: for readername in args: self.__handler.handleReaderAdded(readername) elif eventType == IReaderMonitorEventHandler.MONITOR_EVENT_REMOVED: for readername in args: self.__handler.handleReaderRemoved(readername) def monitorCard(self): self.__reader.addCardMonitorHandler(self) self.__reader.monitorCard(self.__readername) def disconnect(self): self.__gpInterface.disconnect() try: self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() except: pass def __transmit_impl(self, cmd, t0AutoGetResponse, handlerArgs): commandValue = Util.s2vs(cmd) self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in commandValue), handlerArgs) timeStart = timeit.default_timer() rsp = self.__gpInterface.transmit(Util.s2vs(cmd)) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime, handlerArgs) if t0AutoGetResponse and (rsp[0] == '\x61') and (len(handlerArgs) == 0): cmd = '\x00\xC0\x00\x00' + rsp[1] self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in cmd)) timeStart = timeit.default_timer() rsp = gp.sendApdu(cmd) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime) def __transmit(self, cmd, t0AutoGetResponse, handlerArgs): """Thread method to transmit an apdu;""" try: self.__transmit_impl(cmd, t0AutoGetResponse, handlerArgs) except Exception, e: self.__handler.handleException(e)
class pyResManController(object): """The controller of reResManDialog;""" def __init__(self, handler): """""Constructor""" self.__readername = None self.__reader = pyResManReader() self.__handler = handler self.__reader.addReaderMonitorHandler(self) self.__reader.monitorReaders() self.__runScriptThread = None self.__gpInterface = GPInterface() self.__scDebugger = R502SpyLibrary(self.__gpInterface) gp.enableTraceMode(1) self.__debuggerVariables = {} def getReaderList(self): return self.__reader.getReaderList() def getReaderName(self): return self.__readername def connect(self, readername, protocol, mode): """ Connect to the reader;""" self.__readername = readername self.__handler.handleLog('Connect to %s.' %(readername)) self.__gpInterface.connect(str(readername), protocol) self.__scDebugger.init() def handleCardEvent(self, eventType, args): readername = args[0] if eventType == ICardMonitorEventHandler.MONITOR_EVENT_INSERT: self.__handler.handleCardInserted(readername) elif eventType == ICardMonitorEventHandler.MONITOR_EVENT_REMOVE: self.__handler.handleCardRemoved(readername) self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() def handleReaderEvent(self, eventType, args): if eventType == IReaderMonitorEventHandler.MONITOR_EVENT_ADDED: for readername in args: self.__handler.handleReaderAdded(readername) elif eventType == IReaderMonitorEventHandler.MONITOR_EVENT_REMOVED: for readername in args: self.__handler.handleReaderRemoved(readername) def monitorCard(self): self.__reader.addCardMonitorHandler(self) self.__reader.monitorCard(self.__readername) def disconnect(self): self.__gpInterface.disconnect() self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() def __transmit_impl(self, cmd, t0AutoGetResponse, handlerArgs): commandValue = Util.s2vs(cmd) self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in commandValue), handlerArgs) timeStart = timeit.default_timer() rsp = self.__gpInterface.transmit(Util.s2vs(cmd)) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime, handlerArgs) if t0AutoGetResponse and (rsp[0] == '\x61') and (len(handlerArgs) == 0): cmd = '\x00\xC0\x00\x00' + rsp[1] self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in cmd)) timeStart = timeit.default_timer() rsp = gp.sendApdu(cmd) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime) def __transmit(self, cmd, t0AutoGetResponse, handlerArgs): """Thread method to transmit an apdu;""" try: self.__transmit_impl(cmd, t0AutoGetResponse, handlerArgs) except Exception, e: self.__handler.handleException(e)