diff options
author | Philipp Maier <pmaier@sysmocom.de> | 2021-02-22 16:07:53 +0100 |
---|---|---|
committer | Philipp Maier <pmaier@sysmocom.de> | 2021-02-25 15:16:07 +0100 |
commit | c8caec293333c7cfd93f29e9e7fa88f9cc78aa8b (patch) | |
tree | aa224fa623c3fe69f468736d1ea743e5a983e222 | |
parent | bdf3d3597b5d8e4260f80a00ada78e9ad612b00b (diff) |
utils: catch exceptions during reader initalitation
Failed reader initializations happen frome time to time, mostly because
of messed up commandline arguments. This results in ugly crashes very
often. Lets control this a bit by catching the exception string and
print it.
Change-Id: I313017355da01bbef7c3d3f1899555aadb509319
-rwxr-xr-x | pySim-prog.py | 2 | ||||
-rwxr-xr-x | pySim-read.py | 2 | ||||
-rw-r--r-- | pySim/utils.py | 40 |
3 files changed, 26 insertions, 18 deletions
diff --git a/pySim-prog.py b/pySim-prog.py index cf503d0..fbf2b73 100755 --- a/pySim-prog.py +++ b/pySim-prog.py @@ -720,6 +720,8 @@ if __name__ == '__main__': # Init card reader driver sl = init_reader(opts) + if sl is None: + exit(1) # Create command layer scc = SimCardCommands(transport=sl) diff --git a/pySim-read.py b/pySim-read.py index f901260..7906685 100755 --- a/pySim-read.py +++ b/pySim-read.py @@ -82,6 +82,8 @@ if __name__ == '__main__': # Init card reader driver sl = init_reader(opts) + if sl is None: + exit(1) # Create command layer scc = SimCardCommands(transport=sl) diff --git a/pySim/utils.py b/pySim/utils.py index c150184..67bfa74 100644 --- a/pySim/utils.py +++ b/pySim/utils.py @@ -607,24 +607,28 @@ def init_reader(opts): """ Init card reader driver """ - if opts.pcsc_dev is not None: - print("Using PC/SC reader interface") - from pySim.transport.pcsc import PcscSimLink - sl = PcscSimLink(opts.pcsc_dev) - elif opts.osmocon_sock is not None: - print("Using Calypso-based (OsmocomBB) reader interface") - from pySim.transport.calypso import CalypsoSimLink - sl = CalypsoSimLink(sock_path=opts.osmocon_sock) - elif opts.modem_dev is not None: - print("Using modem for Generic SIM Access (3GPP TS 27.007)") - from pySim.transport.modem_atcmd import ModemATCommandLink - sl = ModemATCommandLink(device=opts.modem_dev, baudrate=opts.modem_baud) - else: # Serial reader is default - print("Using serial reader interface") - from pySim.transport.serial import SerialSimLink - sl = SerialSimLink(device=opts.device, baudrate=opts.baudrate) - - return sl + try: + if opts.pcsc_dev is not None: + print("Using PC/SC reader interface") + from pySim.transport.pcsc import PcscSimLink + sl = PcscSimLink(opts.pcsc_dev) + elif opts.osmocon_sock is not None: + print("Using Calypso-based (OsmocomBB) reader interface") + from pySim.transport.calypso import CalypsoSimLink + sl = CalypsoSimLink(sock_path=opts.osmocon_sock) + elif opts.modem_dev is not None: + print("Using modem for Generic SIM Access (3GPP TS 27.007)") + from pySim.transport.modem_atcmd import ModemATCommandLink + sl = ModemATCommandLink(device=opts.modem_dev, baudrate=opts.modem_baud) + else: # Serial reader is default + print("Using serial reader interface") + from pySim.transport.serial import SerialSimLink + sl = SerialSimLink(device=opts.device, baudrate=opts.baudrate) + return sl + except Exception as e: + print("Card reader initialization failed with exception:\n" + str(e)) + return None + def enc_ePDGSelection(hexstr, mcc, mnc, epdg_priority='0001', epdg_fqdn_format='00'): """ |