<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/23708">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pySim-shell: Add open_channel + close_channel commands<br><br>Change-Id: I53d9d7f7720eb5f10956bff74ea7ba9fd3b3bd19<br>---<br>M docs/shell.rst<br>M pySim-shell.py<br>M pySim/commands.py<br>3 files changed, 38 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/08/23708/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/docs/shell.rst b/docs/shell.rst</span><br><span>index f2ddba1..30938fe 100644</span><br><span>--- a/docs/shell.rst</span><br><span>+++ b/docs/shell.rst</span><br><span>@@ -129,6 +129,18 @@</span><br><span> ~~~~~~~~~~~~~</span><br><span> Activate the currently selected file.  This used to be called REHABILITATE in TS 11.11.</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+open_channel</span><br><span style="color: hsl(120, 100%, 40%);">+~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: Iso7816Commands.open_chan_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+close_channel</span><br><span style="color: hsl(120, 100%, 40%);">+~~~~~~~~~~~~~</span><br><span style="color: hsl(120, 100%, 40%);">+.. argparse::</span><br><span style="color: hsl(120, 100%, 40%);">+   :module: pySim-shell</span><br><span style="color: hsl(120, 100%, 40%);">+   :func: Iso7816Commands.close_chan_parser</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> pySim commands</span><br><span> --------------</span><br><span>diff --git a/pySim-shell.py b/pySim-shell.py</span><br><span>index b2ccb9a..132733d 100755</span><br><span>--- a/pySim-shell.py</span><br><span>+++ b/pySim-shell.py</span><br><span>@@ -413,6 +413,23 @@</span><br><span>          fid = self._cmd.rs.selected_file.fid</span><br><span>                 (data, sw) = self._cmd.card._scc.activate_file(fid)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       open_chan_parser = argparse.ArgumentParser()</span><br><span style="color: hsl(120, 100%, 40%);">+  open_chan_parser.add_argument('chan_nr', type=int, default=0, help='Channel Number')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        @cmd2.with_argparser(open_chan_parser)</span><br><span style="color: hsl(120, 100%, 40%);">+        def do_open_channel(self, opts):</span><br><span style="color: hsl(120, 100%, 40%);">+              """Open a logical channel."""</span><br><span style="color: hsl(120, 100%, 40%);">+           (data, sw) = self._cmd.card._scc.manage_channel(mode='open', lchan_nr=opts.chan_nr)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ close_chan_parser = argparse.ArgumentParser()</span><br><span style="color: hsl(120, 100%, 40%);">+ close_chan_parser.add_argument('chan_nr', type=int, default=0, help='Channel Number')</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+       @cmd2.with_argparser(close_chan_parser)</span><br><span style="color: hsl(120, 100%, 40%);">+       def do_close_channel(self, opts):</span><br><span style="color: hsl(120, 100%, 40%);">+             """Close a logical channel."""</span><br><span style="color: hsl(120, 100%, 40%);">+          (data, sw) = self._cmd.card._scc.manage_channel(mode='close', lchan_nr=opts.chan_nr)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> def parse_options():</span><br><span> </span><br><span>         parser = OptionParser(usage="usage: %prog [options]")</span><br><span>diff --git a/pySim/commands.py b/pySim/commands.py</span><br><span>index 2894d31..33aec12 100644</span><br><span>--- a/pySim/commands.py</span><br><span>+++ b/pySim/commands.py</span><br><span>@@ -304,6 +304,15 @@</span><br><span>              """Execute ACTIVATE FILE command as per TS 102 221 Section 11.1.15."""</span><br><span>                 return self._tp.send_apdu_constr_checksw(self.cla_byte, '44', '00', '00', None, None, None)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+       def manage_channel(self, mode='open', lchan_nr=0):</span><br><span style="color: hsl(120, 100%, 40%);">+            """Execute MANAGE CHANNEL command as per TS 102 221 Section 11.1.17."""</span><br><span style="color: hsl(120, 100%, 40%);">+         if mode == 'close':</span><br><span style="color: hsl(120, 100%, 40%);">+                   p1 = 0x80</span><br><span style="color: hsl(120, 100%, 40%);">+             else:</span><br><span style="color: hsl(120, 100%, 40%);">+                 p1 = 0x00</span><br><span style="color: hsl(120, 100%, 40%);">+             pdu = self.cla_byte + '70%02x%02x00' % (p1, lchan_nr)</span><br><span style="color: hsl(120, 100%, 40%);">+         return self._tp.send_apdu_checksw(pdu)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     def reset_card(self):</span><br><span>                """Physically reset the card"""</span><br><span>                return self._tp.reset_card()</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/23708">change 23708</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/pysim/+/23708"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: pysim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I53d9d7f7720eb5f10956bff74ea7ba9fd3b3bd19 </div>
<div style="display:none"> Gerrit-Change-Number: 23708 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>