<p>dexter has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/pysim/+/23473">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">pySim-shell: add ADF.ISIM / ADF.USIM dynamically<br><br>currently ADF.ISIM and ADF.USIM are always added regardless if there is<br>a matching application on the card or not. Lets check what applications<br>are actually installed and add ADF.ISIM and ADF.USIM dynamically.<br><br>Change-Id: I42ee23375f98e6322708c1c4db6d65e1425feecd<br>Related: OS#4963<br>---<br>M pySim-shell.py<br>M pySim/cards.py<br>2 files changed, 18 insertions(+), 5 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/pysim refs/changes/73/23473/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/pySim-shell.py b/pySim-shell.py</span><br><span>index 946b3e5..2978380 100755</span><br><span>--- a/pySim-shell.py</span><br><span>+++ b/pySim-shell.py</span><br><span>@@ -58,8 +58,6 @@</span><br><span>           self.card = card</span><br><span>             self.rs = rs</span><br><span>                 self.py_locals = { 'card': self.card, 'rs' : self.rs }</span><br><span style="color: hsl(0, 100%, 40%);">-          self.card.read_aids()</span><br><span style="color: hsl(0, 100%, 40%);">-           self.poutput('AIDs on card: %s' % (self.card._aids))</span><br><span>                 self.numeric_path = False</span><br><span>            self.add_settable(cmd2.Settable('numeric_path', bool, 'Print File IDs instead of names',</span><br><span>                                               onchange_cb=self._onchange_numeric_path))</span><br><span>@@ -254,14 +252,26 @@</span><br><span>          sys.exit(2)</span><br><span> </span><br><span>      profile = CardProfileUICC()</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        rs = RuntimeState(card, profile)</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    # FIXME: do this dynamically</span><br><span>         rs.mf.add_file(DF_TELECOM())</span><br><span>         rs.mf.add_file(DF_GSM())</span><br><span style="color: hsl(0, 100%, 40%);">-        rs.mf.add_application(ADF_USIM())</span><br><span style="color: hsl(0, 100%, 40%);">-       rs.mf.add_application(ADF_ISIM())</span><br><span> </span><br><span>        app = PysimApp(card, rs)</span><br><span style="color: hsl(120, 100%, 40%);">+      aids = card.read_aids()</span><br><span style="color: hsl(120, 100%, 40%);">+       if aids:</span><br><span style="color: hsl(120, 100%, 40%);">+              app.poutput("AIDs on card:")</span><br><span style="color: hsl(120, 100%, 40%);">+                for a in aids:</span><br><span style="color: hsl(120, 100%, 40%);">+                        if "a0000000871002" in a:</span><br><span style="color: hsl(120, 100%, 40%);">+                           app.poutput(" USIM: %s" % a)</span><br><span style="color: hsl(120, 100%, 40%);">+                                rs.mf.add_application(ADF_USIM())</span><br><span style="color: hsl(120, 100%, 40%);">+                     elif "a0000000871004" in a:</span><br><span style="color: hsl(120, 100%, 40%);">+                         app.poutput(" ISIM: %s" % a)</span><br><span style="color: hsl(120, 100%, 40%);">+                                rs.mf.add_application(ADF_ISIM())</span><br><span style="color: hsl(120, 100%, 40%);">+                     else:</span><br><span style="color: hsl(120, 100%, 40%);">+                         app.poutput(" unknown application: %s" % a)</span><br><span style="color: hsl(120, 100%, 40%);">+ else:</span><br><span style="color: hsl(120, 100%, 40%);">+         app.poutput("error: could not determine card applications")</span><br><span>        rs.select('MF', app)</span><br><span>         app.cmdloop()</span><br><span>diff --git a/pySim/cards.py b/pySim/cards.py</span><br><span>index c640591..857d0b6 100644</span><br><span>--- a/pySim/cards.py</span><br><span>+++ b/pySim/cards.py</span><br><span>@@ -207,6 +207,7 @@</span><br><span> </span><br><span>         # Fetch all the AIDs present on UICC</span><br><span>         def read_aids(self):</span><br><span style="color: hsl(120, 100%, 40%);">+          self._aids = []</span><br><span>              try:</span><br><span>                         # Find out how many records the EF.DIR has</span><br><span>                   # and store all the AIDs in the UICC</span><br><span>@@ -218,6 +219,8 @@</span><br><span>                                   self._aids.append(rec[0][8:8 + int(rec[0][6:8], 16) * 2])</span><br><span>            except Exception as e:</span><br><span>                       print("Can't read AIDs from SIM -- %s" % (str(e),))</span><br><span style="color: hsl(120, 100%, 40%);">+                     self._aids = []</span><br><span style="color: hsl(120, 100%, 40%);">+               return self._aids</span><br><span> </span><br><span>        # Select ADF.U/ISIM in the Card using its full AID</span><br><span>   def select_adf_by_aid(self, adf="usim"):</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/pysim/+/23473">change 23473</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/+/23473"/><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: I42ee23375f98e6322708c1c4db6d65e1425feecd </div>
<div style="display:none"> Gerrit-Change-Number: 23473 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: dexter <pmaier@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>