Change in osmo-ccid-firmware[master]: Add 'check_ccid_config.py' to test for USB VID/PID in libccid_Info.plist

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Tue Nov 12 14:26:13 UTC 2019


laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16050 )


Change subject: Add 'check_ccid_config.py' to test for USB VID/PID in libccid_Info.plist
......................................................................

Add 'check_ccid_config.py' to test for USB VID/PID in libccid_Info.plist

Change-Id: I0399f03400b49d814825ca156ddb4824ec76ce0a
---
A sysmoOCTSIM/check_libccid_config.py
1 file changed, 60 insertions(+), 0 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/osmo-ccid-firmware refs/changes/50/16050/1

diff --git a/sysmoOCTSIM/check_libccid_config.py b/sysmoOCTSIM/check_libccid_config.py
new file mode 100755
index 0000000..93cd202
--- /dev/null
+++ b/sysmoOCTSIM/check_libccid_config.py
@@ -0,0 +1,60 @@
+#!/usr/bin/python3
+
+# This script checks your libccid configuration file if it contains a matching entry
+# for the sysmoOCTSIM reader.  If not, it will generate a modified config file
+
+import plistlib, sys
+
+INFILE="/etc/libccid_Info.plist"
+OUTFILE="/tmp/libccid_Info.plist"
+
+VENDOR_ID=0x1d50
+PRODUCT_ID=0x6141
+NAME='sysmocom sysmoOCTSIM'
+
+def gen_reader_dictlist(prod_id, vend_id, names):
+    readers = []
+    for i in range(0,len(prod_id)):
+        reader = {'vendor_id': vend_id[i], 'product_id': prod_id[i], 'name': names[i]}
+        readers.append(reader)
+    return readers
+
+def find_reader(readers, vend_id, prod_id):
+    for r in readers:
+        if int(r['vendor_id'], 16) == vend_id and int(r['product_id'], 16) == prod_id:
+            return r
+    return None
+
+def plist_add_reader(pl, vend_id, prod_id, name):
+    pl['ifdVendorID'].append(hex(vend_id))
+    pl['ifdProductID'].append(hex(prod_id))
+    pl['ifdFriendlyName'].append(name)
+
+
+if len(sys.argv) > 1:
+    INFILE = sys.argv[1]
+if len(sys.argv) > 2:
+    OUTFILE = sys.argv[2]
+
+# read the property list
+print("Reading libccid config file at '%s'" % (INFILE))
+with open(INFILE, 'rb') as fp:
+    pl = plistlib.load(fp)
+
+# consistency check
+if len(pl['ifdProductID']) != len(pl['ifdVendorID']) or len(pl['ifdProductID']) != len(pl['ifdFriendlyName']):
+    print("input file is corrupt", file=sys.stderr)
+    sys.exit(2)
+
+# convert into a better sorted form (one list of dicts; each dict one reader)
+readers = gen_reader_dictlist(pl['ifdProductID'], pl['ifdVendorID'], pl['ifdFriendlyName'])
+
+if find_reader(readers, VENDOR_ID, PRODUCT_ID):
+    print("Matching reader already in libccid_Info.plist; no action required", file=sys.stderr)
+else:
+    print("Reader not found in config file, it needs to be updated...")
+    plist_add_reader(pl, VENDOR_ID, PRODUCT_ID, NAME)
+    with open(OUTFILE, 'wb') as fp:
+        plistlib.dump(pl, fp)
+    print("Generated new config file stored as '%s'" % (OUTFILE))
+    print("\tWARNING: The generated file doesn't preserve comments!")

-- 
To view, visit https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/16050
To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-ccid-firmware
Gerrit-Branch: master
Gerrit-Change-Id: I0399f03400b49d814825ca156ddb4824ec76ce0a
Gerrit-Change-Number: 16050
Gerrit-PatchSet: 1
Gerrit-Owner: laforge <laforge at osmocom.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20191112/bddfc791/attachment.htm>


More information about the gerrit-log mailing list