<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/16582">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">card_emu: Factor out card_handle_reset() from card_emu_init()<br><br>Let's move all initialization of state that may change at runtime<br>to a separate function: card_handle_reset().<br><br>This has the advantage that the related function may also be called<br>at later/other instances, not just during initialization of card_emu.<br><br>Change-Id: I0954d192d001a3af5592010cc84a3a22aaf4b030<br>Related: OS#4251<br>---<br>M firmware/libcommon/source/card_emu.c<br>1 file changed, 30 insertions(+), 10 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/82/16582/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/firmware/libcommon/source/card_emu.c b/firmware/libcommon/source/card_emu.c</span><br><span>index f95f5d1..3f2cb7b 100644</span><br><span>--- a/firmware/libcommon/source/card_emu.c</span><br><span>+++ b/firmware/libcommon/source/card_emu.c</span><br><span>@@ -1,6 +1,6 @@</span><br><span> /* ISO7816-3 state machine for the card side</span><br><span>  *</span><br><span style="color: hsl(0, 100%, 40%);">- * (C) 2010-2017 by Harald Welte <laforge@gnumonks.org></span><br><span style="color: hsl(120, 100%, 40%);">+ * (C) 2010-2019 by Harald Welte <laforge@gnumonks.org></span><br><span>  * (C) 2018 by sysmocom -s.f.m.c. GmbH, Author: Kevin Redon <kredon@sysmocom.de></span><br><span>  *</span><br><span>  * This program is free software; you can redistribute it and/or modify</span><br><span>@@ -233,6 +233,33 @@</span><br><span>         } stats;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+/* reset all the 'dynamic' state of the card handle to the initial/default values */</span><br><span style="color: hsl(120, 100%, 40%);">+static void card_handle_reset(struct card_handle *ch)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    struct msgb *msg;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   ch->fi = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+        ch->di = 1;</span><br><span style="color: hsl(120, 100%, 40%);">+        ch->wi = ISO7816_3_DEFAULT_WI;</span><br><span style="color: hsl(120, 100%, 40%);">+     ch->waiting_time = ISO7816_3_INIT_WTIME;</span><br><span style="color: hsl(120, 100%, 40%);">+   ch->atr.idx = 0;</span><br><span style="color: hsl(120, 100%, 40%);">+   ch->pts.state = PTS_S_WAIT_REQ_PTSS;</span><br><span style="color: hsl(120, 100%, 40%);">+       ch->tpdu.state = TPDU_S_WAIT_CLA;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+        /* release any buffers we may still own */</span><br><span style="color: hsl(120, 100%, 40%);">+    if (ch->uart_tx_msg) {</span><br><span style="color: hsl(120, 100%, 40%);">+             usb_buf_free(ch->uart_tx_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+             ch->uart_tx_msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     if (ch->uart_rx_msg) {</span><br><span style="color: hsl(120, 100%, 40%);">+             usb_buf_free(ch->uart_rx_msg);</span><br><span style="color: hsl(120, 100%, 40%);">+             ch->uart_rx_msg = NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+     while ((msg = msgb_dequeue(&ch->uart_tx_queue))) {</span><br><span style="color: hsl(120, 100%, 40%);">+             usb_buf_free(msg);</span><br><span style="color: hsl(120, 100%, 40%);">+    }</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> struct llist_head *card_emu_get_uart_tx_queue(struct card_handle *ch)</span><br><span> {</span><br><span>         return &ch->uart_tx_queue;</span><br><span>@@ -1177,22 +1204,15 @@</span><br><span>  ch->in_reset = in_reset;</span><br><span>  ch->clocked = clocked;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   ch->fi = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-  ch->di = 1;</span><br><span style="color: hsl(0, 100%, 40%);">-  ch->wi = ISO7816_3_DEFAULT_WI;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>    ch->tc_chan = tc_chan;</span><br><span>    ch->uart_chan = uart_chan;</span><br><span style="color: hsl(0, 100%, 40%);">-   ch->waiting_time = ISO7816_3_INIT_WTIME;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">- ch->atr.idx = 0;</span><br><span>  ch->atr.len = sizeof(default_atr);</span><br><span>        memcpy(ch->atr.atr, default_atr, ch->atr.len);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-        ch->pts.state = PTS_S_WAIT_REQ_PTSS;</span><br><span style="color: hsl(0, 100%, 40%);">- ch->tpdu.state = TPDU_S_WAIT_CLA;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>         tc_etu_init(ch->tc_chan, ch);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  card_handle_reset(ch);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>     return ch;</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/16582">change 16582</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/+/16582"/><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: I0954d192d001a3af5592010cc84a3a22aaf4b030 </div>
<div style="display:none"> Gerrit-Change-Number: 16582 </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>