[Pcsclite-cvs-commit] r5946 - /trunk/PCSC/src/pcsc-spy.py

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Fri Sep 9 08:36:48 UTC 2011


Author: rousseau
Date: Fri Sep  9 08:36:46 2011
New Revision: 5946

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5946
Log:
Use a PCSCspy class

Modified:
    trunk/PCSC/src/pcsc-spy.py

Modified: trunk/PCSC/src/pcsc-spy.py
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/pcsc-spy.py?rev=5946&op=diff
==============================================================================
--- trunk/PCSC/src/pcsc-spy.py (original)
+++ trunk/PCSC/src/pcsc-spy.py Fri Sep  9 08:36:46 2011
@@ -21,307 +21,288 @@
 # $Id$
 
 import os
-import atexit
-
-fifo = os.path.expanduser('~/pcsc-spy')
-
-color_red = "\x1b[01;31m"
-color_green = "\x1b[32m"
-color_blue = "\x1b[34m"
-color_magenta = "\x1b[35m"
-color_normal = "\x1b[0m"
-
-
-def cleanup():
-    """ cleanup at exit """
-    os.unlink(fifo)
-
-
-def parse_rv(line):
-    """ parse the return value line """
-    (function, rv) = line.split(':')
-    if function[0] != '<':
-        raise Exception("Wrong line:", line)
-
-    return rv
-
-
-def log_rv(f):
-    """ log the return value """
-    line = f.readline().strip()
-    rv = parse_rv(line)
-    if not "0x00000000" in rv:
-        print color_red + " =>" + rv + color_normal
-    else:
-        print " =>", rv
-
-
-def log_in(line):
-    """ generic log for IN line """
-    print color_green + " i " + line + color_normal
-
-
-def log_out(line):
-    """ generic log for OUT line """
-    print color_magenta + " o " + line + color_normal
-
-
-def log_in_hCard(f):
-    """ log hCard IN parameter """
-    hContext = f.readline().strip()
-    log_in("hCard: %s" % hContext)
-
-
-def log_in_hContext(f):
-    """ log hContext IN parameter """
-    hContext = f.readline().strip()
-    log_in("hContext: %s" % hContext)
-
-
-def log_out_hContext(f):
-    """ log hContext OUT parameter """
-    hContext = f.readline().strip()
-    log_out("hContext: %s" % hContext)
-
-
-def log_in2(header, f):
-    """ generic log IN parameter """
-    data = f.readline().strip()
-    log_in("%s %s" % (header, data))
-
-
-def log_out2(header, f):
-    """ generic log OUT parameter """
-    data = f.readline().strip()
-    log_out("%s %s" % (header, data))
-
-
-def log_out_n_str(size_name, field_name, f):
-    """ log multi-lines entries """
-    data = f.readline().strip()
-    log_out("%s %s" % (size_name, data))
-    size = int(data, 16)
-    data_read = 0
-    while data_read < size:
-        data = f.readline().strip()
-        log_out("%s %s" % (field_name, data))
-        if data == 'NULL':
-            break
-        data_read += len(data) + 1
-
-
-def log_name(name):
-    """ log function name """
-    print color_blue + name + color_normal
-
-
-def SCardEstablishContext(f):
-    """ SCardEstablishContext """
-    log_name("SCardEstablishContext")
-    dwScope = f.readline().strip()
-    scopes = {0: 'SCARD_SCOPE_USER',
-            1: 'SCARD_SCOPE_TERMINAL',
-            2: 'SCARD_SCOPE_SYSTEM'}
-    log_in("dwScope: %s (%s)" % (scopes[int(dwScope, 16)], dwScope))
-    log_out_hContext(f)
-    log_rv(f)
-
-
-def SCardIsValidContext(f):
-    """ SCardIsValidContext """
-    log_name("SCardIsValidContext")
-    log_in_hContext(f)
-    log_rv(f)
-
-
-def SCardReleaseContext(f):
-    """ SCardReleaseContext """
-    log_name("SCardReleaseContext")
-    log_in_hContext(f)
-    log_rv(f)
-
-
-def SCardListReaders(f):
-    """ SCardListReaders """
-    log_name("SCardListReaders")
-    log_in_hContext(f)
-    log_in2("mszGroups:", f)
-    log_out_n_str("pcchReaders:", "mszReaders:", f)
-    log_rv(f)
-
-
-def SCardListReaderGroups(f):
-    """ SCardListReaderGroups """
-    log_name("SCardListReaderGroups")
-    log_in_hContext(f)
-    log_in2("pcchGroups:", f)
-    log_out_n_str("pcchGroups:", "mszGroups:", f)
-    log_rv(f)
-
-
-def SCardGetStatusChange(f):
-    """ SCardGetStatusChange """
-    log_name("SCardGetStatusChange")
-    log_in_hContext(f)
-    log_in2("dwTimeout:", f)
-    log_in2("cReaders:", f)
-    log_rv(f)
-
-
-def SCardFreeMemory(f):
-    """ SCardFreeMemory """
-    log_name("SCardFreeMemory")
-    log_in_hContext(f)
-    log_in2("pvMem:", f)
-    log_rv(f)
-
-
-def SCardConnect(f):
-    """ SCardConnect """
-    log_name("SCardConnect")
-    log_in_hContext(f)
-    log_in2("szReader", f)
-    log_in2("dwShareMode", f)
-    log_in2("dwPreferredProtocols", f)
-    log_in2("phCard", f)
-    log_in2("pdwActiveProtocol", f)
-    log_out2("phCard", f)
-    log_out2("pdwActiveProtocol", f)
-    log_rv(f)
-
-
-def SCardTransmit(f):
-    """ SCardTransmit """
-    log_name("SCardTransmit")
-    log_in_hCard(f)
-    log_in2("bSendBuffer", f)
-    log_out2("bRecvBuffer", f)
-    log_rv(f)
-
-
-def SCardControl(f):
-    """ SCardControl """
-    log_name("SCarControl")
-    log_in_hCard(f)
-    log_in2("dwControlCode", f)
-    log_in2("bSendBuffer", f)
-    log_out2("bRecvBuffer", f)
-    log_rv(f)
-
-
-def SCardGetAttrib(f):
-    """ SCardGetAttrib """
-    log_name("SCardGetAttrib")
-    log_in_hCard(f)
-    log_in2("dwAttrId", f)
-    log_out2("bAttr", f)
-    log_rv(f)
-
-
-def SCardSetAttrib(f):
-    """ SCardSetAttrib """
-    log_name("SCardSetAttrib")
-    log_in_hCard(f)
-    log_in2("dwAttrId", f)
-    log_in2("bAttr", f)
-    log_rv(f)
-
-
-def SCardStatus(f):
-    """ SCardStatus """
-    log_name("SCardStatus")
-    log_in_hCard(f)
-    log_in2("pcchReaderLen", f)
-    log_in2("pcbAtrLen", f)
-    log_out2("cchReaderLen", f)
-    log_out2("mszReaderName", f)
-    log_out2("dwState", f)
-    log_out2("dwProtocol", f)
-    log_out2("bAtr", f)
-    log_rv(f)
-
-
-def SCardReconnect(f):
-    """ SCardReconnect """
-    log_name("SCardReconnect")
-    log_in_hCard(f)
-    log_in2("dwShareMode", f)
-    log_in2("dwPreferredProtocols", f)
-    log_in2("dwInitialization", f)
-    log_out2("dwActiveProtocol", f)
-    log_rv(f)
-
-
-def SCardDisconnect(f):
-    """" SCardDisconnect """
-    log_name("SCardDisconnect")
-    log_in_hCard(f)
-    log_in2("dwDisposition", f)
-    log_rv(f)
+
+
+class PCSCspy(object):
+    """ PC/SC spy """
+
+    color_red = "\x1b[01;31m"
+    color_green = "\x1b[32m"
+    color_blue = "\x1b[34m"
+    color_magenta = "\x1b[35m"
+    color_normal = "\x1b[0m"
+
+    def _parse_rv(self, line):
+        """ parse the return value line """
+        (function, rv) = line.split(':')
+        if function[0] != '<':
+            raise Exception("Wrong line:", line)
+
+        return rv
+
+    def _log_rv(self):
+        """ log the return value """
+        line = self.filedesc.readline().strip()
+        rv = self._parse_rv(line)
+        if not "0x00000000" in rv:
+            print PCSCspy.color_red + " =>" + rv + PCSCspy.color_normal
+        else:
+            print " =>", rv
+
+    def log_in(self, line):
+        """ generic log for IN line """
+        print PCSCspy.color_green + " i " + line + PCSCspy.color_normal
+
+    def log_out(self, line):
+        """ generic log for OUT line """
+        print PCSCspy.color_magenta + " o " + line + PCSCspy.color_normal
+
+    def log_in_hCard(self):
+        """ log hCard IN parameter """
+        hContext = self.filedesc.readline().strip()
+        self.log_in("hCard: %s" % hContext)
+
+    def log_in_hContext(self):
+        """ log hContext IN parameter """
+        hContext = self.filedesc.readline().strip()
+        self.log_in("hContext: %s" % hContext)
+
+    def log_out_hContext(self):
+        """ log hContext OUT parameter """
+        hContext = self.filedesc.readline().strip()
+        self.log_out("hContext: %s" % hContext)
+
+    def log_in2(self, header):
+        """ generic log IN parameter """
+        data = self.filedesc.readline().strip()
+        self.log_in("%s %s" % (header, data))
+
+    def log_out2(self, header):
+        """ generic log OUT parameter """
+        data = self.filedesc.readline().strip()
+        self.log_out("%s %s" % (header, data))
+
+    def log_out_n_str(self, size_name, field_name):
+        """ log multi-lines entries """
+        data = self.filedesc.readline().strip()
+        self.log_out("%s %s" % (size_name, data))
+        size = int(data, 16)
+        data_read = 0
+        while data_read < size:
+            data = self.filedesc.readline().strip()
+            self.log_out("%s %s" % (field_name, data))
+            if data == 'NULL':
+                break
+            data_read += len(data) + 1
+
+    def log_name(self, name):
+        """ log function name """
+        print PCSCspy.color_blue + name + PCSCspy.color_normal
+
+    def _SCardEstablishContext(self):
+        """ SCardEstablishContext """
+        self.log_name("SCardEstablishContext")
+        dwScope = self.filedesc.readline().strip()
+        scopes = {0: 'SCARD_SCOPE_USER',
+                1: 'SCARD_SCOPE_TERMINAL',
+                2: 'SCARD_SCOPE_SYSTEM'}
+        self.log_in("dwScope: %s (%s)" % (scopes[int(dwScope, 16)], dwScope))
+        self.log_out_hContext()
+        self._log_rv()
+
+    def _SCardIsValidContext(self):
+        """ SCardIsValidContext """
+        self.log_name("SCardIsValidContext")
+        self.log_in_hContext()
+        self._log_rv()
+
+    def _SCardReleaseContext(self):
+        """ SCardReleaseContext """
+        self.log_name("SCardReleaseContext")
+        self.log_in_hContext()
+        self._log_rv()
+
+    def _SCardListReaders(self):
+        """ SCardListReaders """
+        self.log_name("SCardListReaders")
+        self.log_in_hContext()
+        self.log_in2("mszGroups:")
+        self.log_out_n_str("pcchReaders:", "mszReaders:")
+        self._log_rv()
+
+    def _SCardListReaderGroups(self):
+        """ SCardListReaderGroups """
+        self.log_name("SCardListReaderGroups")
+        self.log_in_hContext()
+        self.log_in2("pcchGroups:")
+        self.log_out_n_str("pcchGroups:", "mszGroups:")
+        self._log_rv()
+
+    def _SCardGetStatusChange(self):
+        """ SCardGetStatusChange """
+        self.log_name("SCardGetStatusChange")
+        self.log_in_hContext()
+        self.log_in2("dwTimeout:")
+        self.log_in2("cReaders:")
+        self._log_rv()
+
+    def _SCardFreeMemory(self):
+        """ SCardFreeMemory """
+        self.log_name("SCardFreeMemory")
+        self.log_in_hContext()
+        self.log_in2("pvMem:")
+        self._log_rv()
+
+    def _SCardConnect(self):
+        """ SCardConnect """
+        self.log_name("SCardConnect")
+        self.log_in_hContext()
+        self.log_in2("szReader")
+        self.log_in2("dwShareMode")
+        self.log_in2("dwPreferredProtocols")
+        self.log_in2("phCard")
+        self.log_in2("pdwActiveProtocol")
+        self.log_out2("phCard")
+        self.log_out2("pdwActiveProtocol")
+        self._log_rv()
+
+    def _SCardTransmit(self):
+        """ SCardTransmit """
+        self.log_name("SCardTransmit")
+        self.log_in_hCard()
+        self.log_in2("bSendBuffer")
+        self.log_out2("bRecvBuffer")
+        self._log_rv()
+
+    def _SCardControl(self):
+        """ SCardControl """
+        self.log_name("SCarControl")
+        self.log_in_hCard()
+        self.log_in2("dwControlCode")
+        self.log_in2("bSendBuffer")
+        self.log_out2("bRecvBuffer")
+        self._log_rv()
+
+    def _SCardGetAttrib(self):
+        """ SCardGetAttrib """
+        self.log_name("SCardGetAttrib")
+        self.log_in_hCard()
+        self.log_in2("dwAttrId")
+        self.log_out2("bAttr")
+        self._log_rv()
+
+    def _SCardSetAttrib(self):
+        """ SCardSetAttrib """
+        self.log_name("SCardSetAttrib")
+        self.log_in_hCard()
+        self.log_in2("dwAttrId")
+        self.log_in2("bAttr")
+        self._log_rv()
+
+    def _SCardStatus(self):
+        """ SCardStatus """
+        self.log_name("SCardStatus")
+        self.log_in_hCard()
+        self.log_in2("pcchReaderLen")
+        self.log_in2("pcbAtrLen")
+        self.log_out2("cchReaderLen")
+        self.log_out2("mszReaderName")
+        self.log_out2("dwState")
+        self.log_out2("dwProtocol")
+        self.log_out2("bAtr")
+        self._log_rv()
+
+    def _SCardReconnect(self):
+        """ SCardReconnect """
+        self.log_name("SCardReconnect")
+        self.log_in_hCard()
+        self.log_in2("dwShareMode")
+        self.log_in2("dwPreferredProtocols")
+        self.log_in2("dwInitialization")
+        self.log_out2("dwActiveProtocol")
+        self._log_rv()
+
+    def _SCardDisconnect(self):
+        """" SCardDisconnect """
+        self.log_name("SCardDisconnect")
+        self.log_in_hCard()
+        self.log_in2("dwDisposition")
+        self._log_rv()
+
+    def __del__(self):
+        """ cleanup """
+        os.unlink(self.fifo)
+
+    def __init__(self):
+        self.fifo = os.path.expanduser('~/pcsc-spy')
+
+        # create the FIFO file
+        try:
+            os.mkfifo(self.fifo)
+        except (OSError):
+            print "fifo %s already present. Reusing it." % self.fifo
+
+        self.filedesc = open(self.fifo, 'r')
+        #import sys
+        #self.filedesc = sys.stdin
+
+    def loop(self):
+        """ loop reading logs """
+
+        # check version
+        version = self.filedesc.readline().strip()
+        if version != "PCSC SPY VERSION: 1":
+            print "Wrong version:", version
+            return
+
+        line = self.filedesc.readline()
+        while line != '':
+            # Enter function?
+            if line[0] != '>':
+                print "Garbage: ", line
+            else:
+                # dispatch
+                fct = line[2:-1]
+                if fct == 'SCardEstablishContext':
+                    self._SCardEstablishContext()
+                elif fct == 'SCardReleaseContext':
+                    self._SCardReleaseContext()
+                elif fct == 'SCardIsValidContext':
+                    self._SCardIsValidContext()
+                elif fct == 'SCardListReaderGroups':
+                    self._SCardListReaderGroups()
+                elif fct == 'SCardFreeMemory':
+                    self._SCardFreeMemory()
+                elif fct == 'SCardListReaders':
+                    self._SCardListReaders()
+                elif fct == 'SCardGetStatusChange':
+                    self._SCardGetStatusChange()
+                elif fct == 'SCardConnect':
+                    self._SCardConnect()
+                elif fct == 'SCardTransmit':
+                    self._SCardTransmit()
+                elif fct == 'SCardControl':
+                    self._SCardControl()
+                elif fct == 'SCardGetAttrib':
+                    self._SCardGetAttrib()
+                elif fct == 'SCardSetAttrib':
+                    self._SCardSetAttrib()
+                elif fct == 'SCardStatus':
+                    self._SCardStatus()
+                elif fct == 'SCardReconnect':
+                    self._SCardReconnect()
+                elif fct == 'SCardDisconnect':
+                    self._SCardDisconnect()
+                else:
+                    print "Unknown function:", fct
+
+            line = self.filedesc.readline()
 
 
 def main():
-    # register clean up function
-    atexit.register(cleanup)
-
-    # create the FIFO file
-    try:
-        os.mkfifo(fifo)
-    except (OSError):
-        print "fifo %s already present. Reusing it." % fifo
-
-    f = open(fifo, 'r')
-    #import sys
-    #f = sys.stdin
-
-    # check version
-    version = f.readline().strip()
-    if version != "PCSC SPY VERSION: 1":
-        print "Wrong version:", version
-        return
-
-    line = f.readline()
-    while line != '':
-        # Enter function?
-        if line[0] != '>':
-            print "Garbage: ", line
-        else:
-            # dispatch
-            fct = line[2:-1]
-            if fct == 'SCardEstablishContext':
-                SCardEstablishContext(f)
-            elif fct == 'SCardReleaseContext':
-                SCardReleaseContext(f)
-            elif fct == 'SCardIsValidContext':
-                SCardIsValidContext(f)
-            elif fct == 'SCardListReaderGroups':
-                SCardListReaderGroups(f)
-            elif fct == 'SCardFreeMemory':
-                SCardFreeMemory(f)
-            elif fct == 'SCardListReaders':
-                SCardListReaders(f)
-            elif fct == 'SCardGetStatusChange':
-                SCardGetStatusChange(f)
-            elif fct == 'SCardConnect':
-                SCardConnect(f)
-            elif fct == 'SCardTransmit':
-                SCardTransmit(f)
-            elif fct == 'SCardControl':
-                SCardControl(f)
-            elif fct == 'SCardGetAttrib':
-                SCardGetAttrib(f)
-            elif fct == 'SCardSetAttrib':
-                SCardSetAttrib(f)
-            elif fct == 'SCardStatus':
-                SCardStatus(f)
-            elif fct == 'SCardReconnect':
-                SCardReconnect(f)
-            elif fct == 'SCardDisconnect':
-                SCardDisconnect(f)
-            else:
-                print "Unknown function:", fct
-
-        line = f.readline()
+    """ main """
+    spy = PCSCspy()
+    spy.loop()
 
 
 if __name__ == "__main__":




More information about the Pcsclite-cvs-commit mailing list