mirror of https://gerrit.osmocom.org/pysim
shell: Add 'reset' command to reset the card
At some points during an interactive session or a script one may want to reset the card. Change-Id: I992eb3e0ed52f7941a5fb44f28a42e22ebd49301
This commit is contained in:
parent
917d98c1a5
commit
daf2b392f0
|
@ -193,6 +193,12 @@ verify_adm
|
||||||
FIXME
|
FIXME
|
||||||
|
|
||||||
|
|
||||||
|
reset
|
||||||
|
~~~~~
|
||||||
|
|
||||||
|
Perform card reset and display the card ATR.
|
||||||
|
|
||||||
|
|
||||||
Linear Fixed EF commands
|
Linear Fixed EF commands
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
|
|
@ -313,6 +313,12 @@ class PySimCommands(CommandSet):
|
||||||
elif context['DF_SKIP']:
|
elif context['DF_SKIP']:
|
||||||
raise RuntimeError("unable to export %i dedicated files(s)" % context['ERR'])
|
raise RuntimeError("unable to export %i dedicated files(s)" % context['ERR'])
|
||||||
|
|
||||||
|
def do_reset(self, opts):
|
||||||
|
"""Reset the Card."""
|
||||||
|
atr = self._cmd.rs.reset(self._cmd)
|
||||||
|
self._cmd.poutput('Card ATR: %s' % atr)
|
||||||
|
self._cmd.update_prompt()
|
||||||
|
|
||||||
|
|
||||||
@with_default_category('ISO7816 Commands')
|
@with_default_category('ISO7816 Commands')
|
||||||
class Iso7816Commands(CommandSet):
|
class Iso7816Commands(CommandSet):
|
||||||
|
|
|
@ -34,7 +34,7 @@ import argparse
|
||||||
|
|
||||||
from typing import cast, Optional, Iterable, List, Any, Dict, Tuple
|
from typing import cast, Optional, Iterable, List, Any, Dict, Tuple
|
||||||
|
|
||||||
from pySim.utils import sw_match, h2b, b2h, is_hex, auto_int, bertlv_parse_one
|
from pySim.utils import sw_match, h2b, b2h, i2h, is_hex, auto_int, bertlv_parse_one, Hexstr
|
||||||
from pySim.construct import filter_dict
|
from pySim.construct import filter_dict
|
||||||
from pySim.exceptions import *
|
from pySim.exceptions import *
|
||||||
from pySim.jsonpath import js_path_find, js_path_modify
|
from pySim.jsonpath import js_path_find, js_path_modify
|
||||||
|
@ -1020,6 +1020,17 @@ class RuntimeState(object):
|
||||||
print("error: could not determine card applications")
|
print("error: could not determine card applications")
|
||||||
return apps_taken
|
return apps_taken
|
||||||
|
|
||||||
|
def reset(self, cmd_app=None) -> Hexstr:
|
||||||
|
"""Perform physical card reset and obtain ATR.
|
||||||
|
Args:
|
||||||
|
cmd_app : Command Application State (for unregistering old file commands)
|
||||||
|
"""
|
||||||
|
self.card._scc._tp.reset_card()
|
||||||
|
atr = i2h(self.card._scc._tp.get_atr())
|
||||||
|
# select MF to reset internal state and to verify card really works
|
||||||
|
self.select('MF', cmd_app)
|
||||||
|
return atr
|
||||||
|
|
||||||
def get_cwd(self) -> CardDF:
|
def get_cwd(self) -> CardDF:
|
||||||
"""Obtain the current working directory.
|
"""Obtain the current working directory.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue