diff options
author | hploetz <hploetz@f711b948-2313-0410-aaa9-d29f33439f0b> | 2006-05-25 14:13:10 +0000 |
---|---|---|
committer | hploetz <hploetz@f711b948-2313-0410-aaa9-d29f33439f0b> | 2006-05-25 14:13:10 +0000 |
commit | f75a882699520b99ed09ad2d7439e3a892f35dc8 (patch) | |
tree | 969ba21becca8372d55d2843c3d9cb6843c15e5e /cyberflex-shell.py | |
parent | 1c971aa745ca15361686ae259df5cea8f4ae2661 (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-x | cyberflex-shell.py | 29 |
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 = { |