transport: move argument parser setup into concrete classes

The argument parser is set up globally for all LinkBase objects in
__init__.py. Since we tend to have only platform independed code in
__init__.py, we should move the argument parser setup into the
specific LinkBase classes.

Related: OS#6210
Change-Id: I22c32aa81ca0588e3314c3ff4546f6e5092c11df
This commit is contained in:
Philipp Maier
2023-10-23 10:44:44 +02:00
committed by laforge
parent 3077343739
commit 8c82378bfd
5 changed files with 41 additions and 20 deletions

View File

@@ -267,27 +267,17 @@ class LinkBase(abc.ABC):
return (rsp, sw) return (rsp, sw)
def argparse_add_reader_args(arg_parser): def argparse_add_reader_args(arg_parser: argparse.ArgumentParser):
"""Add all reader related arguments to the given argparse.Argumentparser instance.""" """Add all reader related arguments to the given argparse.Argumentparser instance."""
serial_group = arg_parser.add_argument_group('Serial Reader') from pySim.transport.serial import SerialSimLink
serial_group.add_argument('-d', '--device', metavar='DEV', default='/dev/ttyUSB0', from pySim.transport.pcsc import PcscSimLink
help='Serial Device for SIM access') from pySim.transport.modem_atcmd import ModemATCommandLink
serial_group.add_argument('-b', '--baud', dest='baudrate', type=int, metavar='BAUD', default=9600, from pySim.transport.calypso import CalypsoSimLink
help='Baud rate used for SIM access')
pcsc_group = arg_parser.add_argument_group('PC/SC Reader') SerialSimLink.argparse_add_reader_args(arg_parser)
pcsc_group.add_argument('-p', '--pcsc-device', type=int, dest='pcsc_dev', metavar='PCSC', default=None, PcscSimLink.argparse_add_reader_args(arg_parser)
help='PC/SC reader number to use for SIM access') ModemATCommandLink.argparse_add_reader_args(arg_parser)
CalypsoSimLink.argparse_add_reader_args(arg_parser)
modem_group = arg_parser.add_argument_group('AT Command Modem Reader')
modem_group.add_argument('--modem-device', dest='modem_dev', metavar='DEV', default=None,
help='Serial port of modem for Generic SIM Access (3GPP TS 27.007)')
modem_group.add_argument('--modem-baud', type=int, metavar='BAUD', default=115200,
help='Baud rate used for modem port')
osmobb_group = arg_parser.add_argument_group('OsmocomBB Reader')
osmobb_group.add_argument('--osmocon', dest='osmocon_sock', metavar='PATH', default=None,
help='Socket path for Calypso (e.g. Motorola C1XX) based reader (via OsmocomBB)')
return arg_parser return arg_parser

View File

@@ -20,7 +20,7 @@ import select
import struct import struct
import socket import socket
import os import os
import argparse
from typing import Optional from typing import Optional
from pySim.transport import LinkBase from pySim.transport import LinkBase
@@ -164,3 +164,9 @@ class CalypsoSimLink(LinkBase):
def __str__(self) -> str: def __str__(self) -> str:
return "osmocon:%s" % (self._sock_path) return "osmocon:%s" % (self._sock_path)
@staticmethod
def argparse_add_reader_args(arg_parser: argparse.ArgumentParser):
osmobb_group = arg_parser.add_argument_group('OsmocomBB Reader')
osmobb_group.add_argument('--osmocon', dest='osmocon_sock', metavar='PATH', default=None,
help='Socket path for Calypso (e.g. Motorola C1XX) based reader (via OsmocomBB)')

View File

@@ -20,6 +20,7 @@ import logging as log
import serial import serial
import time import time
import re import re
import argparse
from typing import Optional from typing import Optional
from pySim.utils import Hexstr, ResTuple from pySim.utils import Hexstr, ResTuple
@@ -173,3 +174,11 @@ class ModemATCommandLink(LinkBase):
def __str__(self) -> str: def __str__(self) -> str:
return "modem:%s" % self._device return "modem:%s" % self._device
@staticmethod
def argparse_add_reader_args(arg_parser: argparse.ArgumentParser):
modem_group = arg_parser.add_argument_group('AT Command Modem Reader')
modem_group.add_argument('--modem-device', dest='modem_dev', metavar='DEV', default=None,
help='Serial port of modem for Generic SIM Access (3GPP TS 27.007)')
modem_group.add_argument('--modem-baud', type=int, metavar='BAUD', default=115200,
help='Baud rate used for modem port')

View File

@@ -17,6 +17,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>. # along with this program. If not, see <http://www.gnu.org/licenses/>.
# #
import argparse
from typing import Optional from typing import Optional
from smartcard.CardConnection import CardConnection from smartcard.CardConnection import CardConnection
@@ -96,3 +97,9 @@ class PcscSimLink(LinkBase):
def __str__(self) -> str: def __str__(self) -> str:
return "PCSC:%u[%s]" % (self._reader_number, self._reader) return "PCSC:%u[%s]" % (self._reader_number, self._reader)
@staticmethod
def argparse_add_reader_args(arg_parser: argparse.ArgumentParser):
pcsc_group = arg_parser.add_argument_group('PC/SC Reader')
pcsc_group.add_argument('-p', '--pcsc-device', type=int, dest='pcsc_dev', metavar='PCSC', default=None,
help='PC/SC reader number to use for SIM access')

View File

@@ -19,6 +19,7 @@
import serial import serial
import time import time
import os.path import os.path
import argparse
from typing import Optional from typing import Optional
from pySim.exceptions import NoCardError, ProtocolError from pySim.exceptions import NoCardError, ProtocolError
@@ -240,3 +241,11 @@ class SerialSimLink(LinkBase):
def __str__(self) -> str: def __str__(self) -> str:
return "serial:%s" % (self._sl.name) return "serial:%s" % (self._sl.name)
@staticmethod
def argparse_add_reader_args(arg_parser: argparse.ArgumentParser):
serial_group = arg_parser.add_argument_group('Serial Reader')
serial_group.add_argument('-d', '--device', metavar='DEV', default='/dev/ttyUSB0',
help='Serial Device for SIM access')
serial_group.add_argument('-b', '--baud', dest='baudrate', type=int, metavar='BAUD', default=9600,
help='Baud rate used for SIM access')