[Pcsclite-cvs-commit] r4649 - /website/short_apdu_readers.py

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Sun Jan 10 16:02:01 UTC 2010


Author: rousseau
Date: Sun Jan 10 16:02:00 2010
New Revision: 4649

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4649
Log:
sort the output by manufacturer

Modified:
    website/short_apdu_readers.py

Modified: website/short_apdu_readers.py
URL: http://svn.debian.org/wsvn/pcsclite/website/short_apdu_readers.py?rev=4649&op=diff
==============================================================================
--- website/short_apdu_readers.py (original)
+++ website/short_apdu_readers.py Sun Jan 10 16:02:00 2010
@@ -26,6 +26,7 @@
 CCID_CLASS_AUTO_PPS_PROP	= 0x00000040
 CCID_CLASS_AUTO_PPS_CUR		= 0x00000080
 CCID_CLASS_AUTO_IFSD		= 0x00000400
+CCID_CLASS_ICCD     		= 0x00000800
 CCID_CLASS_CHARACTER		= 0x00000000
 CCID_CLASS_TPDU				= 0x00010000
 CCID_CLASS_SHORT_APDU		= 0x00020000
@@ -34,28 +35,46 @@
 
 def get_extended_apdu_readers(readers):
     """ return the list of readers supporting extended APDU """
-    l = []
+    d = {}
     for r in readers.keys():
         dwFeatures = int(readers[r]['dwFeatures'],16)
         # TPDU level exchanges with CCID
         if (dwFeatures & CCID_CLASS_EXCHANGE_MASK) == CCID_CLASS_TPDU:
-            l.append(r)
+            d[r] = readers[r]
         # Extended APDU level exchange with CCID
         if (dwFeatures & CCID_CLASS_EXCHANGE_MASK) == CCID_CLASS_EXTENDED_APDU:
-            l.append(r)
+            d[r] = readers[r]
 
-    return l
+    return d
 
 def get_short_apdu_readers(readers):
     """ return the list of readers NOT supporting extended APDU """
-    l = []
+    d = {}
     for r in readers.keys():
         dwFeatures = int(readers[r]['dwFeatures'],16)
         # Short APDU level exchange with CCID
         if (dwFeatures & CCID_CLASS_EXCHANGE_MASK) == CCID_CLASS_SHORT_APDU:
-            l.append(r)
+            d[r] = readers[r]
 
-    return l
+    return d
+
+def apdu_no_ifsd(readers):
+    for r in readers.keys():
+        dwFeatures = int(readers[r]['dwFeatures'],16)
+        # Short APDU level exchange with CCID
+        if ((dwFeatures & CCID_CLASS_EXCHANGE_MASK) == CCID_CLASS_SHORT_APDU and not(dwFeatures & CCID_CLASS_ICCD)):
+            print r,
+            if (dwFeatures & CCID_CLASS_AUTO_IFSD):
+                print "CCID_CLASS_AUTO_IFSD"
+            else:
+                print "NON"
+
+def extended_apdu(readers):
+    for r in readers.keys():
+        dwFeatures = int(readers[r]['dwFeatures'],16)
+        # Short APDU level exchange with CCID
+        if ((dwFeatures & CCID_CLASS_EXCHANGE_MASK) == CCID_CLASS_EXTENDED_APDU):
+            print r
 
 def get_all_readers():
     """ returns the list of all readers """
@@ -76,9 +95,23 @@
     all_readers = get_all_readers()
 
     if len(sys.argv) > 1:
-        l = get_extended_apdu_readers(all_readers)
+        readers = get_extended_apdu_readers(all_readers)
     else:
-        l = get_short_apdu_readers(all_readers)
-    l.sort()
-    for r in l:
-        print '<li>%s <a href="%s.html#%s%s">%s</a></li>' % (all_readers[r]['iManufacturer'], all_readers[r]['section'], all_readers[r]['idVendor'], all_readers[r]['idProduct'], all_readers[r]['iProduct'])
+        readers = get_short_apdu_readers(all_readers)
+
+    # sort the readers by manufacturers
+    manufacturer_readers = get_by_manufacturer(readers)
+    manufacturers = list(manufacturer_readers)
+    # sort the manufacturers list alphabetically
+    manufacturers.sort(key=str.lower)
+
+    # for each manufacturer
+    for m in manufacturers:
+        print "<li>%s<ul>" % m
+
+        # for each reader
+        for r in sorted(manufacturer_readers[m]):
+
+            print '<li>%s <a href="%s.html#%s%s">%s</a></li>' % (all_readers[r]['iManufacturer'], all_readers[r]['section'], all_readers[r]['idVendor'], all_readers[r]['idProduct'], all_readers[r]['iProduct'])
+
+        print "</ul></li>"




More information about the Pcsclite-cvs-commit mailing list