aboutsummaryrefslogtreecommitdiffstats
path: root/cyberflex-shell.py
diff options
context:
space:
mode:
authorhploetz <hploetz@f711b948-2313-0410-aaa9-d29f33439f0b>2006-05-25 14:13:10 +0000
committerhploetz <hploetz@f711b948-2313-0410-aaa9-d29f33439f0b>2006-05-25 14:13:10 +0000
commitf75a882699520b99ed09ad2d7439e3a892f35dc8 (patch)
tree969ba21becca8372d55d2843c3d9cb6843c15e5e /cyberflex-shell.py
parent1c971aa745ca15361686ae259df5cea8f4ae2661 (diff)
a first stab at dynamically loading and unloading drivers. doesn't work properly yet
git-svn-id: svn+ssh://localhost/home/henryk/svn/cyberflex-shell/trunk@79 f711b948-2313-0410-aaa9-d29f33439f0b
Diffstat (limited to 'cyberflex-shell.py')
-rwxr-xr-xcyberflex-shell.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/cyberflex-shell.py b/cyberflex-shell.py
index bf527f3..6c42534 100755
--- a/cyberflex-shell.py
+++ b/cyberflex-shell.py
@@ -63,6 +63,33 @@ class Cyberflex_Shell(Shell):
if self.card.sw_changed:
print self.card.decode_statusword()
+ def _find_driver_class(driver_name):
+ for i in dir(cards):
+ _obj = getattr(cards, i)
+ if driver_name.lower() == i.lower():
+ return _obj
+ if hasattr(_obj, "DRIVER_NAME") and driver_name.lower() == getattr(_obj, "DRIVER_NAME").lower():
+ return _obj
+ raise NameError, "Class not found"
+
+ _find_driver_class = staticmethod(_find_driver_class)
+
+ def cmd_unloaddriver(self, driver_name):
+ "Remove a driver from the current connection"
+ self.unregister_commands(self.card)
+ try:
+ self.card.remove_classes( [self._find_driver_class(driver_name)] )
+ finally:
+ self.register_commands(self.card)
+
+ def cmd_loaddriver(self, driver_name):
+ "Add a driver to the current connection"
+ self.unregister_commands(self.card)
+ try:
+ self.card.add_classes( [self._find_driver_class(driver_name)] )
+ finally:
+ self.register_commands(self.card)
+
def cmd_connect(self, reader = None):
"Open the connection to a card"
if reader is None:
@@ -134,6 +161,8 @@ class Cyberflex_Shell(Shell):
"atr": cmd_atr,
"disconnect": cmd_disconnect,
"reconnect": cmd_reconnect,
+ "driver_load": cmd_loaddriver,
+ "driver_unload": cmd_unloaddriver,
}
NOCARD_COMMANDS = {