From 35b099146ac004758560d6c6ea42a78d56671e79 Mon Sep 17 00:00:00 2001 From: Vadim Yanitskiy Date: Sun, 1 Sep 2019 22:28:28 +0200 Subject: [PATCH] shadysim.py: refactor reader interface selection --- shadysim/shadysim.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/shadysim/shadysim.py b/shadysim/shadysim.py index bab254c..b691125 100755 --- a/shadysim/shadysim.py +++ b/shadysim/shadysim.py @@ -370,8 +370,10 @@ class AppLoaderCommands(object): #------ parser = argparse.ArgumentParser(description='Tool for Toorcamp SIMs.') -parser.add_argument('-s', '--serialport') -parser.add_argument('-p', '--pcsc', nargs='?', const=0, type=int) +parser.add_argument('-I', '--interface', default='pcsc', + choices = ['pcsc', 'serial', 'dummy']) +parser.add_argument('-s', '--serialport', default='/dev/ttyUSB0') +parser.add_argument('-p', '--pcsc', nargs='?', const=0, type=int, default=0) parser.add_argument('-d', '--delete-app') parser.add_argument('-l', '--load-app') parser.add_argument('-i', '--install') @@ -401,18 +403,22 @@ parser.add_argument('--smpp', action='store_true') args = parser.parse_args() -if args.pcsc is not None: +if args.interface == "pcsc": + if args.pcsc is None: + raise argparse.ArgumentTypeError("You need to specify PC/SC reader using -p") from pySim.transport.pcsc import PcscSimLink sl = PcscSimLink(args.pcsc) -elif args.serialport is not None: +elif args.interface == "serial": + if args.serialport is None: + raise argparse.ArgumentTypeError("You need to specify serial port using -s") from pySim.transport.serial import SerialSimLink sl = SerialSimLink(device=args.serialport, baudrate=9600) -elif args.smpp is not None: +elif args.interface == "dummy": class DummySL: pass sl = DummySL() pass -else: +else: # Shall not happen in general, parser.parse_args() would fail raise RuntimeError("Need to specify either --serialport, --pcsc or --smpp") sc = SimCardCommands(sl)