<p>laforge would like Leonard Hübner to <strong>review</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/20931">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">remsim: adding cli argument to set the atr<br><br>Change-Id: I554b515e7954148f9ca5ba29417699da70b0945b<br>---<br>M host/src/simtrace2-remsim.c<br>1 file changed, 19 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/31/20931/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/host/src/simtrace2-remsim.c b/host/src/simtrace2-remsim.c</span><br><span>index 201ff71..48186d8 100644</span><br><span>--- a/host/src/simtrace2-remsim.c</span><br><span>+++ b/host/src/simtrace2-remsim.c</span><br><span>@@ -50,6 +50,8 @@</span><br><span> #include <osmocom/sim/class_tables.h></span><br><span> #include <osmocom/sim/sim.h></span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+#define ATR_MAX_LEN 33</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> static void atr_update_csum(uint8_t *atr, unsigned int atr_len)</span><br><span> {</span><br><span>   uint8_t csum = 0;</span><br><span>@@ -181,6 +183,7 @@</span><br><span>              "\t-h\t--help\n"</span><br><span>           "\t-i\t--gsmtap-ip\tA.B.C.D\n"</span><br><span>             "\t-a\t--skip-atr\n"</span><br><span style="color: hsl(120, 100%, 40%);">+                "\t-t\t--set-atr\tATR-STRING in HEX\n"</span><br><span>             "\t-k\t--keep-running\n"</span><br><span>           "\t-n\t--pcsc-reader-num\n"</span><br><span>                "\t-V\t--usb-vendor\tVENDOR_ID\n"</span><br><span>@@ -199,6 +202,7 @@</span><br><span>    { "remote-udp-port", 1, 0, 'p' },</span><br><span>  { "gsmtap-ip", 1, 0, 'i' },</span><br><span>        { "skip-atr", 0, 0, 'a' },</span><br><span style="color: hsl(120, 100%, 40%);">+  { "set-atr", 1, 0, 't' },</span><br><span>  { "help", 0, 0, 'h' },</span><br><span>     { "keep-running", 0, 0, 'k' },</span><br><span>     { "pcsc-reader-num", 1, 0, 'n' },</span><br><span>@@ -283,6 +287,9 @@</span><br><span>    int rc;</span><br><span>      int c, ret = 1;</span><br><span>      int skip_atr = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+     char *atr = "3b00";</span><br><span style="color: hsl(120, 100%, 40%);">+ uint8_t real_atr[ATR_MAX_LEN];</span><br><span style="color: hsl(120, 100%, 40%);">+        int atr_len;</span><br><span>         int keep_running = 0;</span><br><span>        int remote_udp_port = 52342;</span><br><span>         int if_num = 0, vendor_id = -1, product_id = -1;</span><br><span>@@ -298,7 +305,7 @@</span><br><span>       while (1) {</span><br><span>          int option_index = 0;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-               c = getopt_long(argc, argv, "r:p:hi:V:P:C:I:S:A:H:akn:", opts, &option_index);</span><br><span style="color: hsl(120, 100%, 40%);">+          c = getopt_long(argc, argv, "r:p:hi:V:P:C:I:S:A:H:akn:t:", opts, &option_index);</span><br><span>               if (c == -1)</span><br><span>                         break;</span><br><span>               switch (c) {</span><br><span>@@ -318,6 +325,9 @@</span><br><span>           case 'a':</span><br><span>                    skip_atr = 1;</span><br><span>                        break;</span><br><span style="color: hsl(120, 100%, 40%);">+                case 't':</span><br><span style="color: hsl(120, 100%, 40%);">+                     atr = optarg;</span><br><span style="color: hsl(120, 100%, 40%);">+                 break;</span><br><span>               case 'k':</span><br><span>                    keep_running = 1;</span><br><span>                    break;</span><br><span>@@ -348,6 +358,12 @@</span><br><span>                }</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ atr_len = osmo_hexparse(atr,real_atr,ATR_MAX_LEN);</span><br><span style="color: hsl(120, 100%, 40%);">+    if(atr_len < 2) {</span><br><span style="color: hsl(120, 100%, 40%);">+    fprintf(stderr, "Invalid ATR - please omit a leading 0x and only use valid hex digits and whitespace. ATRs need to be between 2 and 33 bytes long.\n");</span><br><span style="color: hsl(120, 100%, 40%);">+     goto do_exit;</span><br><span style="color: hsl(120, 100%, 40%);">+       }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  if (!remote_udp_host && (vendor_id < 0 || product_id < 0)) {</span><br><span>           fprintf(stderr, "You have to specify the vendor and product ID\n");</span><br><span>                goto do_exit;</span><br><span>@@ -438,9 +454,8 @@</span><br><span> </span><br><span>              if (!skip_atr) {</span><br><span>                     /* set the ATR */</span><br><span style="color: hsl(0, 100%, 40%);">-                       uint8_t real_atr[] = {  0x3B, 0x00 }; // the simplest ATR</span><br><span style="color: hsl(0, 100%, 40%);">-                       atr_update_csum(real_atr, sizeof(real_atr));</span><br><span style="color: hsl(0, 100%, 40%);">-                    osmo_st2_cardem_request_set_atr(ci, real_atr, sizeof(real_atr));</span><br><span style="color: hsl(120, 100%, 40%);">+                      atr_update_csum(real_atr, atr_len);</span><br><span style="color: hsl(120, 100%, 40%);">+                   osmo_st2_cardem_request_set_atr(ci, real_atr, atr_len);</span><br><span>              }</span><br><span> </span><br><span>                /* select remote (forwarded) SIM */</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/20931">change 20931</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/simtrace2/+/20931"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: simtrace2 </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I554b515e7954148f9ca5ba29417699da70b0945b </div>
<div style="display:none"> Gerrit-Change-Number: 20931 </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-Reviewer: Leonard Hübner <leonard.huebner@commsolid.com> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>