mirror of https://gerrit.osmocom.org/pysim
Move init_reader() from utils.py to transport/__init__.py
This avoids a circular dependency when introducing type annotations. Change-Id: I168597ac14497fb188a15cb632f32452128bc1c6
This commit is contained in:
parent
9d0f1f0cd5
commit
6e0458dda6
|
@ -34,8 +34,9 @@ import traceback
|
|||
import json
|
||||
|
||||
from pySim.commands import SimCardCommands
|
||||
from pySim.transport import init_reader
|
||||
from pySim.cards import _cards_classes, card_detect
|
||||
from pySim.utils import h2b, swap_nibbles, rpad, derive_milenage_opc, calculate_luhn, dec_iccid, init_reader
|
||||
from pySim.utils import h2b, swap_nibbles, rpad, derive_milenage_opc, calculate_luhn, dec_iccid
|
||||
from pySim.ts_51_011 import EF
|
||||
from pySim.card_handler import *
|
||||
from pySim.utils import *
|
||||
|
|
|
@ -33,9 +33,10 @@ from pySim.ts_31_102 import EF_UST_map, EF_USIM_ADF_map
|
|||
from pySim.ts_31_103 import EF_IST_map, EF_ISIM_ADF_map
|
||||
|
||||
from pySim.commands import SimCardCommands
|
||||
from pySim.transport import init_reader
|
||||
from pySim.cards import card_detect, Card, UsimCard, IsimCard
|
||||
from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid, dec_msisdn
|
||||
from pySim.utils import format_xplmn_w_act, dec_spn, dec_st, init_reader, dec_addr_tlv
|
||||
from pySim.utils import format_xplmn_w_act, dec_spn, dec_st, dec_addr_tlv
|
||||
from pySim.utils import h2s, format_ePDGSelection
|
||||
|
||||
def parse_options():
|
||||
|
|
|
@ -37,9 +37,10 @@ from pySim.ts_31_103 import EF_IST_map, EF_ISIM_ADF_map
|
|||
|
||||
from pySim.exceptions import *
|
||||
from pySim.commands import SimCardCommands
|
||||
from pySim.transport import init_reader
|
||||
from pySim.cards import card_detect, Card
|
||||
from pySim.utils import h2b, swap_nibbles, rpad, h2s
|
||||
from pySim.utils import dec_st, init_reader, sanitize_pin_adm, tabulate_str_list, is_hex
|
||||
from pySim.utils import dec_st, sanitize_pin_adm, tabulate_str_list, is_hex
|
||||
from pySim.card_handler import card_handler
|
||||
|
||||
from pySim.filesystem import CardMF, RuntimeState, CardDF, CardADF
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
""" pySim: PCSC reader transport link base
|
||||
"""
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from pySim.exceptions import *
|
||||
from pySim.utils import sw_match
|
||||
|
||||
|
@ -103,3 +105,30 @@ class LinkBase(object):
|
|||
if not sw_match(rv[1], sw):
|
||||
raise SwMatchError(rv[1], sw.lower())
|
||||
return rv
|
||||
|
||||
def init_reader(opts) -> Optional[LinkBase]:
|
||||
"""
|
||||
Init card reader driver
|
||||
"""
|
||||
sl = None # type : :Optional[LinkBase]
|
||||
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
|
||||
|
|
|
@ -650,33 +650,6 @@ def sanitize_pin_adm(pin_adm, pin_adm_hex = None):
|
|||
|
||||
return pin_adm
|
||||
|
||||
def init_reader(opts):
|
||||
"""
|
||||
Init card reader driver
|
||||
"""
|
||||
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'):
|
||||
"""
|
||||
Encode ePDGSelection so it can be stored at EF.ePDGSelection or EF.ePDGSelectionEm.
|
||||
|
|
Loading…
Reference in New Issue