mirror of
https://gitea.osmocom.org/sim-card/pysim.git
synced 2026-03-31 09:24:48 +03:00
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:
@@ -34,8 +34,9 @@ import traceback
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from pySim.commands import SimCardCommands
|
from pySim.commands import SimCardCommands
|
||||||
|
from pySim.transport import init_reader
|
||||||
from pySim.cards import _cards_classes, card_detect
|
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.ts_51_011 import EF
|
||||||
from pySim.card_handler import *
|
from pySim.card_handler import *
|
||||||
from pySim.utils 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.ts_31_103 import EF_IST_map, EF_ISIM_ADF_map
|
||||||
|
|
||||||
from pySim.commands import SimCardCommands
|
from pySim.commands import SimCardCommands
|
||||||
|
from pySim.transport import init_reader
|
||||||
from pySim.cards import card_detect, Card, UsimCard, IsimCard
|
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 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
|
from pySim.utils import h2s, format_ePDGSelection
|
||||||
|
|
||||||
def parse_options():
|
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.exceptions import *
|
||||||
from pySim.commands import SimCardCommands
|
from pySim.commands import SimCardCommands
|
||||||
|
from pySim.transport import init_reader
|
||||||
from pySim.cards import card_detect, Card
|
from pySim.cards import card_detect, Card
|
||||||
from pySim.utils import h2b, swap_nibbles, rpad, h2s
|
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.card_handler import card_handler
|
||||||
|
|
||||||
from pySim.filesystem import CardMF, RuntimeState, CardDF, CardADF
|
from pySim.filesystem import CardMF, RuntimeState, CardDF, CardADF
|
||||||
|
|||||||
@@ -3,6 +3,8 @@
|
|||||||
""" pySim: PCSC reader transport link base
|
""" pySim: PCSC reader transport link base
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from pySim.exceptions import *
|
from pySim.exceptions import *
|
||||||
from pySim.utils import sw_match
|
from pySim.utils import sw_match
|
||||||
|
|
||||||
@@ -103,3 +105,30 @@ class LinkBase(object):
|
|||||||
if not sw_match(rv[1], sw):
|
if not sw_match(rv[1], sw):
|
||||||
raise SwMatchError(rv[1], sw.lower())
|
raise SwMatchError(rv[1], sw.lower())
|
||||||
return rv
|
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
|
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'):
|
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.
|
Encode ePDGSelection so it can be stored at EF.ePDGSelection or EF.ePDGSelectionEm.
|
||||||
|
|||||||
Reference in New Issue
Block a user