[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