mirror of https://gerrit.osmocom.org/pysim
pySim-shell: Add open_channel + close_channel commands
Change-Id: I53d9d7f7720eb5f10956bff74ea7ba9fd3b3bd19
This commit is contained in:
parent
a463161ae2
commit
703f933b40
|
@ -129,6 +129,18 @@ activate_file
|
|||
~~~~~~~~~~~~~
|
||||
Activate the currently selected file. This used to be called REHABILITATE in TS 11.11.
|
||||
|
||||
open_channel
|
||||
~~~~~~~~~~~~
|
||||
.. argparse::
|
||||
:module: pySim-shell
|
||||
:func: Iso7816Commands.open_chan_parser
|
||||
|
||||
close_channel
|
||||
~~~~~~~~~~~~~
|
||||
.. argparse::
|
||||
:module: pySim-shell
|
||||
:func: Iso7816Commands.close_chan_parser
|
||||
|
||||
|
||||
pySim commands
|
||||
--------------
|
||||
|
|
|
@ -413,6 +413,23 @@ class Iso7816Commands(CommandSet):
|
|||
fid = self._cmd.rs.selected_file.fid
|
||||
(data, sw) = self._cmd.card._scc.activate_file(fid)
|
||||
|
||||
open_chan_parser = argparse.ArgumentParser()
|
||||
open_chan_parser.add_argument('chan_nr', type=int, default=0, help='Channel Number')
|
||||
|
||||
@cmd2.with_argparser(open_chan_parser)
|
||||
def do_open_channel(self, opts):
|
||||
"""Open a logical channel."""
|
||||
(data, sw) = self._cmd.card._scc.manage_channel(mode='open', lchan_nr=opts.chan_nr)
|
||||
|
||||
close_chan_parser = argparse.ArgumentParser()
|
||||
close_chan_parser.add_argument('chan_nr', type=int, default=0, help='Channel Number')
|
||||
|
||||
@cmd2.with_argparser(close_chan_parser)
|
||||
def do_close_channel(self, opts):
|
||||
"""Close a logical channel."""
|
||||
(data, sw) = self._cmd.card._scc.manage_channel(mode='close', lchan_nr=opts.chan_nr)
|
||||
|
||||
|
||||
def parse_options():
|
||||
|
||||
parser = OptionParser(usage="usage: %prog [options]")
|
||||
|
|
|
@ -304,6 +304,15 @@ class SimCardCommands(object):
|
|||
"""Execute ACTIVATE FILE command as per TS 102 221 Section 11.1.15."""
|
||||
return self._tp.send_apdu_constr_checksw(self.cla_byte, '44', '00', '00', None, None, None)
|
||||
|
||||
def manage_channel(self, mode='open', lchan_nr=0):
|
||||
"""Execute MANAGE CHANNEL command as per TS 102 221 Section 11.1.17."""
|
||||
if mode == 'close':
|
||||
p1 = 0x80
|
||||
else:
|
||||
p1 = 0x00
|
||||
pdu = self.cla_byte + '70%02x%02x00' % (p1, lchan_nr)
|
||||
return self._tp.send_apdu_checksw(pdu)
|
||||
|
||||
def reset_card(self):
|
||||
"""Physically reset the card"""
|
||||
return self._tp.reset_card()
|
||||
|
|
Loading…
Reference in New Issue