diff options
Diffstat (limited to 'pySim/transport/pcsc.py')
-rw-r--r-- | pySim/transport/pcsc.py | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/pySim/transport/pcsc.py b/pySim/transport/pcsc.py index 5d92009..dc040c5 100644 --- a/pySim/transport/pcsc.py +++ b/pySim/transport/pcsc.py @@ -22,7 +22,8 @@ # along with this program. If not, see <http://www.gnu.org/licenses/>. # -from smartcard.Exceptions import NoCardException +from smartcard.CardRequest import CardRequest +from smartcard.Exceptions import NoCardException, CardRequestTimeoutException from smartcard.System import readers from pySim.exceptions import NoCardError @@ -34,15 +35,29 @@ class PcscSimLink(LinkBase): def __init__(self, reader_number=0): r = readers(); + self._reader = r[reader_number] + self._con = self._reader.createConnection() + + def __del__(self): + self._con.disconnect() + return + + def wait_for_card(self, timeout=None, newcardonly=False): + cr = CardRequest(readers=[self._reader], timeout=timeout, newcardonly=newcardonly) + try: + cr.waitforcard() + except CardRequestTimeoutException: + raise NoCardError() + self.connect() + + def connect(self): try: - self._con = r[reader_number].createConnection() self._con.connect() except NoCardException: raise NoCardError() - def __del__(self): + def disconnect(self): self._con.disconnect() - return def reset_card(self): self._con.disconnect() |