<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/23721">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Move reader related argument parser to transport module<br><br>Ideally that shared definition would be used by all programs,<br>rather than copy+pasting it.  Unfortunately pySim-{read,prog}<br>are still using optparse and first need to be converted to<br>argparse.<br><br>Change-Id: If77f53850e1ca65f42cf1dca3e0f460dac1b0d1a<br>---<br>M pySim-shell.py<br>M pySim/transport/__init__.py<br>2 files changed, 29 insertions(+), 24 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/21/23721/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pySim-shell.py b/pySim-shell.py</span><br><span>index 2a7c377..e228038 100755</span><br><span>--- a/pySim-shell.py</span><br><span>+++ b/pySim-shell.py</span><br><span>@@ -36,7 +36,7 @@</span><br><span> </span><br><span> from pySim.exceptions import *</span><br><span> from pySim.commands import SimCardCommands</span><br><span style="color: hsl(0, 100%, 40%);">-from pySim.transport import init_reader, ApduTracer</span><br><span style="color: hsl(120, 100%, 40%);">+from pySim.transport import init_reader, ApduTracer, argparse_add_reader_args</span><br><span> from pySim.cards import card_detect, Card</span><br><span> from pySim.utils import h2b, swap_nibbles, rpad, h2s, JsonEncoder</span><br><span> from pySim.utils import dec_st, sanitize_pin_adm, tabulate_str_list, is_hex</span><br><span>@@ -431,32 +431,12 @@</span><br><span> </span><br><span> option_parser = argparse.ArgumentParser(prog='pySim-shell', description='interactive SIM card shell',</span><br><span>                                         formatter_class=argparse.ArgumentDefaultsHelpFormatter)</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-serial_group = option_parser.add_argument_group('Serial Reader')</span><br><span style="color: hsl(0, 100%, 40%);">-serial_group.add_argument('-d', '--device', metavar='DEV', default='/dev/ttyUSB0',</span><br><span style="color: hsl(0, 100%, 40%);">-                          help='Serial Device for SIM access')</span><br><span style="color: hsl(0, 100%, 40%);">-serial_group.add_argument('-b', '--baud', dest='baudrate', type=int, metavar='BAUD', default=9600,</span><br><span style="color: hsl(0, 100%, 40%);">-                          help='Baud rate used for SIM access')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-pcsc_group = option_parser.add_argument_group('PC/SC Reader')</span><br><span style="color: hsl(0, 100%, 40%);">-pcsc_group.add_argument('-p', '--pcsc-device', type=int, dest='pcsc_dev', metavar='PCSC', default=None,</span><br><span style="color: hsl(0, 100%, 40%);">-                        help='PC/SC reader number to use for SIM access')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-modem_group = option_parser.add_argument_group('AT Command Modem Reader')</span><br><span style="color: hsl(0, 100%, 40%);">-modem_group.add_argument('--modem-device', dest='modem_dev', metavar='DEV', default=None,</span><br><span style="color: hsl(0, 100%, 40%);">-                         help='Serial port of modem for Generic SIM Access (3GPP TS 27.007)')</span><br><span style="color: hsl(0, 100%, 40%);">-modem_group.add_argument('--modem-baud', type=int, metavar='BAUD', default=115200,</span><br><span style="color: hsl(0, 100%, 40%);">-                         help='Baud rate used for modem port')</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-osmobb_group = option_parser.add_argument_group('OsmocomBB Reader')</span><br><span style="color: hsl(0, 100%, 40%);">-osmobb_group.add_argument('--osmocon', dest='osmocon_sock', metavar='PATH', default=None,</span><br><span style="color: hsl(0, 100%, 40%);">-                           help='Socket path for Calypso (e.g. Motorola C1XX) based reader (via OsmocomBB)')</span><br><span style="color: hsl(120, 100%, 40%);">+argparse_add_reader_args(option_parser)</span><br><span> </span><br><span> global_group = option_parser.add_argument_group('General Options')</span><br><span> global_group.add_argument('--script', metavar='PATH', default=None,</span><br><span style="color: hsl(0, 100%, 40%);">-                           help='script with pySim-shell commands to be executed automatically at start-up')</span><br><span style="color: hsl(0, 100%, 40%);">-global_group.add_argument('--csv', metavar='FILE', default=None,</span><br><span style="color: hsl(0, 100%, 40%);">-                           help='Read card data from CSV file')</span><br><span style="color: hsl(120, 100%, 40%);">+                          help='script with pySim-shell commands to be executed automatically at start-up')</span><br><span style="color: hsl(120, 100%, 40%);">+global_group.add_argument('--csv', metavar='FILE', default=None, help='Read card data from CSV file')</span><br><span> </span><br><span> adm_group = global_group.add_mutually_exclusive_group()</span><br><span> adm_group.add_argument('-a', '--pin-adm', metavar='PIN_ADM1', dest='pin_adm', default=None,</span><br><span>diff --git a/pySim/transport/__init__.py b/pySim/transport/__init__.py</span><br><span>index 64a06a5..14f5aaf 100644</span><br><span>--- a/pySim/transport/__init__.py</span><br><span>+++ b/pySim/transport/__init__.py</span><br><span>@@ -3,6 +3,7 @@</span><br><span> """ pySim: PCSC reader transport link base</span><br><span> """</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+import argparse</span><br><span> from typing import Optional</span><br><span> </span><br><span> from pySim.exceptions import *</span><br><span>@@ -175,6 +176,30 @@</span><br><span>                     raise SwMatchError(sw, sw_exp.lower(), self.sw_interpreter)</span><br><span>          return (rsp, sw)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+def argparse_add_reader_args(arg_parser):</span><br><span style="color: hsl(120, 100%, 40%);">+       """Add all reader related arguments to the given argparse.Argumentparser instance."""</span><br><span style="color: hsl(120, 100%, 40%);">+   serial_group = arg_parser.add_argument_group('Serial Reader')</span><br><span style="color: hsl(120, 100%, 40%);">+ serial_group.add_argument('-d', '--device', metavar='DEV', default='/dev/ttyUSB0',</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      help='Serial Device for SIM access')</span><br><span style="color: hsl(120, 100%, 40%);">+        serial_group.add_argument('-b', '--baud', dest='baudrate', type=int, metavar='BAUD', default=9600,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      help='Baud rate used for SIM access')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+     pcsc_group = arg_parser.add_argument_group('PC/SC Reader')</span><br><span style="color: hsl(120, 100%, 40%);">+    pcsc_group.add_argument('-p', '--pcsc-device', type=int, dest='pcsc_dev', metavar='PCSC', default=None,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       help='PC/SC reader number to use for SIM access')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   modem_group = arg_parser.add_argument_group('AT Command Modem Reader')</span><br><span style="color: hsl(120, 100%, 40%);">+        modem_group.add_argument('--modem-device', dest='modem_dev', metavar='DEV', default=None,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                      help='Serial port of modem for Generic SIM Access (3GPP TS 27.007)')</span><br><span style="color: hsl(120, 100%, 40%);">+ modem_group.add_argument('--modem-baud', type=int, metavar='BAUD', default=115200,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                     help='Baud rate used for modem port')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      osmobb_group = arg_parser.add_argument_group('OsmocomBB Reader')</span><br><span style="color: hsl(120, 100%, 40%);">+      osmobb_group.add_argument('--osmocon', dest='osmocon_sock', metavar='PATH', default=None,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                       help='Socket path for Calypso (e.g. Motorola C1XX) based reader (via OsmocomBB)')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ return arg_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> def init_reader(opts, **kwargs) -> Optional[LinkBase]:</span><br><span>     """</span><br><span>   Init card reader driver</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/23721">change 23721</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/pysim/+/23721"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: pysim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: If77f53850e1ca65f42cf1dca3e0f460dac1b0d1a </div>
<div style="display:none"> Gerrit-Change-Number: 23721 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>