<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/simtrace2/+/16584">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved; Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">cardem: RST resets all state (including release of buffers)<br><br>When the Modem is asserting RST, the emulated card should set all<br>of its state back to default/initial values and release any buffers<br>it may still hold in its state.<br><br>Change-Id: I66eca6afe4ff7d900c5b75df1e3ec6d52f6ef214<br>Related: OS#4251<br>---<br>M firmware/libcommon/source/card_emu.c<br>1 file changed, 19 insertions(+), 2 deletions(-)<br><br></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 7ce10a8..63bf0d3 100644</span><br><span>--- a/firmware/libcommon/source/card_emu.c</span><br><span>+++ b/firmware/libcommon/source/card_emu.c</span><br><span>@@ -236,8 +236,25 @@</span><br><span> /* reset all the 'dynamic' state of the card handle to the initial/default values */</span><br><span> static void card_handle_reset(struct card_handle *ch)</span><br><span> {</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%);">+   tc_etu_disable(ch->tc_chan);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    ch->pts.state = PTS_S_WAIT_REQ_PTSS;</span><br><span>      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> }</span><br><span> </span><br><span> struct llist_head *card_emu_get_uart_tx_queue(struct card_handle *ch)</span><br><span>@@ -1062,7 +1079,7 @@</span><br><span>  case CARD_IO_VCC:</span><br><span>            if (active == 0 && ch->vcc_active == 1) {</span><br><span>                         TRACE_INFO("%u: VCC deactivated\r\n", ch->num);</span><br><span style="color: hsl(0, 100%, 40%);">-                    tc_etu_disable(ch->tc_chan);</span><br><span style="color: hsl(120, 100%, 40%);">+                       card_handle_reset(ch);</span><br><span>                       card_set_state(ch, ISO_S_WAIT_POWER);</span><br><span>                } else if (active == 1 && ch->vcc_active == 0) {</span><br><span>                  TRACE_INFO("%u: VCC activated\r\n", ch->num);</span><br><span>@@ -1091,7 +1108,7 @@</span><br><span>                   }</span><br><span>            } else if (active && !ch->in_reset) {</span><br><span>                     TRACE_INFO("%u: RST asserted\r\n", ch->num);</span><br><span style="color: hsl(0, 100%, 40%);">-                       tc_etu_disable(ch->tc_chan);</span><br><span style="color: hsl(120, 100%, 40%);">+                       card_handle_reset(ch);</span><br><span>               }</span><br><span>            ch->in_reset = active;</span><br><span>            break;</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/simtrace2/+/16584">change 16584</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/+/16584"/><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: I66eca6afe4ff7d900c5b75df1e3ec6d52f6ef214 </div>
<div style="display:none"> Gerrit-Change-Number: 16584 </div>
<div style="display:none"> Gerrit-PatchSet: 5 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>