<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-remsim/+/16625">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">remsim-client: Avoid using 'ci' global variable<br><br>Rather, pass it around between functions and attach it to other state.<br><br>Also, make it a talloc contxt so other objects can be allocated off it.<br><br>Change-Id: I25f592581382238d5640c1f6326dec745f8d1d40<br>---<br>M src/client/client.h<br>M src/client/simtrace2-remsim_client.c<br>2 files changed, 16 insertions(+), 12 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/25/16625/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/client/client.h b/src/client/client.h</span><br><span>index 96a454f..f36e2e3 100644</span><br><span>--- a/src/client/client.h</span><br><span>+++ b/src/client/client.h</span><br><span>@@ -11,6 +11,8 @@</span><br><span> </span><br><span> /* main.c */</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+struct cardem_inst;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct bankd_client {</span><br><span>   /* connection to the remsim-server (control) */</span><br><span>      struct rspro_server_conn srv_conn;</span><br><span>@@ -21,4 +23,6 @@</span><br><span>       struct app_comp_id peer_comp_id;</span><br><span> </span><br><span>         struct bank_slot bankd_slot;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        struct cardem_inst *cardem;</span><br><span> };</span><br><span>diff --git a/src/client/simtrace2-remsim_client.c b/src/client/simtrace2-remsim_client.c</span><br><span>index 1af3274..190eb90 100644</span><br><span>--- a/src/client/simtrace2-remsim_client.c</span><br><span>+++ b/src/client/simtrace2-remsim_client.c</span><br><span>@@ -679,17 +679,13 @@</span><br><span>       .slot_nr = 0,</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-struct cardem_inst _ci = {</span><br><span style="color: hsl(0, 100%, 40%);">-       .slot = &_slot,</span><br><span style="color: hsl(0, 100%, 40%);">-};</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-struct cardem_inst *ci = &_ci;</span><br><span style="color: hsl(120, 100%, 40%);">+static struct cardem_inst *g_ci;</span><br><span> </span><br><span> static void signal_handler(int signal)</span><br><span> {</span><br><span>         switch (signal) {</span><br><span>    case SIGINT:</span><br><span style="color: hsl(0, 100%, 40%);">-            cardem_request_card_insert(ci, false);</span><br><span style="color: hsl(120, 100%, 40%);">+                cardem_request_card_insert(g_ci, false);</span><br><span>             exit(0);</span><br><span>             break;</span><br><span>       default:</span><br><span>@@ -714,9 +710,9 @@</span><br><span>       ac.sw[1] = card2modem->data.buf[card2modem->data.size - 1];</span><br><span>    printf("SIMtrace <= SW=0x%02x%02x, len_rx=%d\n", ac.sw[0], ac.sw[1], card2modem->data.size - 2);</span><br><span>     if (card2modem->data.size > 2) { // send PB and data to modem</span><br><span style="color: hsl(0, 100%, 40%);">-             cardem_request_pb_and_tx(ci, ac.hdr.ins, card2modem->data.buf, card2modem->data.size - 2);</span><br><span style="color: hsl(120, 100%, 40%);">+              cardem_request_pb_and_tx(bc->cardem, ac.hdr.ins, card2modem->data.buf, card2modem->data.size - 2);</span><br><span>  }</span><br><span style="color: hsl(0, 100%, 40%);">-       cardem_request_sw_tx(ci, ac.sw); // send SW to modem</span><br><span style="color: hsl(120, 100%, 40%);">+  cardem_request_sw_tx(bc->cardem, ac.sw); // send SW to modem</span><br><span> </span><br><span>  return 0;</span><br><span> }</span><br><span>@@ -730,7 +726,7 @@</span><br><span>         OSMO_ASSERT(RsproPDUchoice_PR_setAtrReq == pdu->msg.present);</span><br><span> </span><br><span>         /* FIXME: is this permitted at any time by the SIMtrace2 cardemfirmware? */</span><br><span style="color: hsl(0, 100%, 40%);">-     rc = cardem_request_set_atr(ci, pdu->msg.choice.setAtrReq.atr.buf,</span><br><span style="color: hsl(120, 100%, 40%);">+ rc = cardem_request_set_atr(bc->cardem, pdu->msg.choice.setAtrReq.atr.buf,</span><br><span>                                 pdu->msg.choice.setAtrReq.atr.size);</span><br><span>  if (rc == 0)</span><br><span>                 resp = rspro_gen_SetAtrRes(ResultCode_ok);</span><br><span>@@ -998,7 +994,7 @@</span><br><span> }</span><br><span> </span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void main_body(struct client_config *cfg)</span><br><span style="color: hsl(120, 100%, 40%);">+static void main_body(struct cardem_inst *ci, struct client_config *cfg)</span><br><span> {</span><br><span>         struct st_transport *transp = ci->slot->transp;</span><br><span>        struct usb_interface_match _ifm, *ifm = &_ifm;</span><br><span>@@ -1125,7 +1121,10 @@</span><br><span>  msgb_talloc_ctx_init(g_tall_ctx, 0);</span><br><span>         osmo_init_logging2(g_tall_ctx, &log_info);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-      cfg = client_config_init(g_tall_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+ g_ci = talloc_zero(g_tall_ctx, struct cardem_inst);</span><br><span style="color: hsl(120, 100%, 40%);">+   g_ci->slot = &_slot;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ cfg = client_config_init(g_ci);</span><br><span>      handle_options(cfg, argc, argv);</span><br><span> </span><br><span>         if (cfg->usb.vendor_id < 0 || cfg->usb.product_id < 0) {</span><br><span>@@ -1153,6 +1152,7 @@</span><br><span>         // initialize remote SIM client</span><br><span> </span><br><span>  g_client = talloc_zero(g_tall_ctx, struct bankd_client);</span><br><span style="color: hsl(120, 100%, 40%);">+      g_client->cardem = g_ci;</span><br><span> </span><br><span>      if (cfg->client_id != -1) {</span><br><span>               g_client->srv_conn.clslot = talloc_zero(g_client, ClientSlot_t);</span><br><span>@@ -1199,7 +1199,7 @@</span><br><span> </span><br><span>      // connect to SIMtrace2 cardem</span><br><span>       do {</span><br><span style="color: hsl(0, 100%, 40%);">-            main_body(cfg);</span><br><span style="color: hsl(120, 100%, 40%);">+               main_body(g_ci, cfg);</span><br><span>                sleep(1);</span><br><span>    } while (cfg->keep_running);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-remsim/+/16625">change 16625</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/osmo-remsim/+/16625"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-remsim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I25f592581382238d5640c1f6326dec745f8d1d40 </div>
<div style="display:none"> Gerrit-Change-Number: 16625 </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>