<p>laforge <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/15743">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">card_uart_tx: Allow caller to specify if Rx should be active after Tx<br><br>This reverts commit 02dd9111635a8adbcd804671695de88f22ffa5ae.<br><br>Change-Id: Ibe02d283701dbfff5ab47e1b8195369c134cde03<br>---<br>M ccid_common/cuart.c<br>M ccid_common/cuart.h<br>M ccid_common/iso7816_fsm.c<br>M ccid_host/cuart_test.c<br>4 files changed, 11 insertions(+), 7 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/ccid_common/cuart.c b/ccid_common/cuart.c</span><br><span>index 4ea82ba..9a68167 100644</span><br><span>--- a/ccid_common/cuart.c</span><br><span>+++ b/ccid_common/cuart.c</span><br><span>@@ -112,7 +112,7 @@</span><br><span>  return rc;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-int card_uart_tx(struct card_uart *cuart, const uint8_t *data, size_t len)</span><br><span style="color: hsl(120, 100%, 40%);">+int card_uart_tx(struct card_uart *cuart, const uint8_t *data, size_t len, bool rx_after_complete)</span><br><span> {</span><br><span>       OSMO_ASSERT(cuart);</span><br><span>  OSMO_ASSERT(cuart->driver);</span><br><span>@@ -121,6 +121,7 @@</span><br><span> </span><br><span>     OSMO_ASSERT(!cuart->tx_busy);</span><br><span>     cuart->tx_busy = true;</span><br><span style="color: hsl(120, 100%, 40%);">+     cuart->rx_after_tx_compl = rx_after_complete;</span><br><span>     /* disable receiver to avoid receiving what we transmit */</span><br><span>   card_uart_ctrl(cuart, CUART_CTL_RX, false);</span><br><span> </span><br><span>@@ -150,7 +151,8 @@</span><br><span>        case CUART_E_TX_COMPLETE:</span><br><span>            cuart->tx_busy = false;</span><br><span>           /* re-enable receiver if we're done with transmit */</span><br><span style="color: hsl(0, 100%, 40%);">-                card_uart_ctrl(cuart, CUART_CTL_RX, true);</span><br><span style="color: hsl(120, 100%, 40%);">+            if (cuart->rx_after_tx_compl)</span><br><span style="color: hsl(120, 100%, 40%);">+                      card_uart_ctrl(cuart, CUART_CTL_RX, true);</span><br><span>           break;</span><br><span>       default:</span><br><span>             break;</span><br><span>diff --git a/ccid_common/cuart.h b/ccid_common/cuart.h</span><br><span>index 9d56035..b94eb2c 100644</span><br><span>--- a/ccid_common/cuart.h</span><br><span>+++ b/ccid_common/cuart.h</span><br><span>@@ -62,6 +62,8 @@</span><br><span>  bool tx_busy;</span><br><span>        /* is the receiver currently enabled or not? */</span><br><span>      bool rx_enabled;</span><br><span style="color: hsl(120, 100%, 40%);">+      /* should the receiver automatically be nabled after TX completion? */</span><br><span style="color: hsl(120, 100%, 40%);">+        bool rx_after_tx_compl;</span><br><span> </span><br><span>  /*! after how many bytes should we notify the user? If this is '1', we will</span><br><span>   *  issue CUART_E_RX_SINGLE; if it is > 1, we will issue CUART_E_RX_COMPLETE */</span><br><span>@@ -98,7 +100,7 @@</span><br><span> int card_uart_close(struct card_uart *cuart);</span><br><span> </span><br><span> /*! Schedule (asynchronous) transmit data via UART; optionally enable Rx after completion */</span><br><span style="color: hsl(0, 100%, 40%);">-int card_uart_tx(struct card_uart *cuart, const uint8_t *data, size_t len);</span><br><span style="color: hsl(120, 100%, 40%);">+int card_uart_tx(struct card_uart *cuart, const uint8_t *data, size_t len, bool rx_after_complete);</span><br><span> </span><br><span> /*! Schedule (asynchronous) receive data via UART (after CUART_E_RX_COMPLETE) */</span><br><span> int card_uart_rx(struct card_uart *cuart, uint8_t *data, size_t len);</span><br><span>diff --git a/ccid_common/iso7816_fsm.c b/ccid_common/iso7816_fsm.c</span><br><span>index e173030..b98e2bb 100644</span><br><span>--- a/ccid_common/iso7816_fsm.c</span><br><span>+++ b/ccid_common/iso7816_fsm.c</span><br><span>@@ -829,7 +829,7 @@</span><br><span>                          tfp->is_command ? "COMMAND" : "RESPONSE",</span><br><span>                     osmo_hexdump_nospc((uint8_t *) tpduh, sizeof(*tpduh)));</span><br><span>             osmo_fsm_inst_state_chg(fi, TPDU_S_TX_HDR, 0, 0);</span><br><span style="color: hsl(0, 100%, 40%);">-               card_uart_tx(ip->uart, (uint8_t *) tpduh, sizeof(*tpduh));</span><br><span style="color: hsl(120, 100%, 40%);">+         card_uart_tx(ip->uart, (uint8_t *) tpduh, sizeof(*tpduh), true);</span><br><span>          break;</span><br><span>       default:</span><br><span>             OSMO_ASSERT(0);</span><br><span>@@ -875,7 +875,7 @@</span><br><span>                } else if (byte == tpduh->ins) {</span><br><span>                  if (tfp->is_command) {</span><br><span>                            /* transmit all remaining bytes */</span><br><span style="color: hsl(0, 100%, 40%);">-                              card_uart_tx(ip->uart, msgb_l2(tfp->tpdu), msgb_l2len(tfp->tpdu));</span><br><span style="color: hsl(120, 100%, 40%);">+                           card_uart_tx(ip->uart, msgb_l2(tfp->tpdu), msgb_l2len(tfp->tpdu), true);</span><br><span>                            osmo_fsm_inst_state_chg(fi, TPDU_S_TX_REMAINING, 0, 0);</span><br><span>                      } else {</span><br><span>                             card_uart_set_rx_threshold(ip->uart, tpduh->p3);</span><br><span>@@ -886,7 +886,7 @@</span><br><span>                         if (tfp->is_command) {</span><br><span>                            /* transmit *next*, not first byte */</span><br><span>                                OSMO_ASSERT(msgb_l3len(tfp->tpdu) >= 0);</span><br><span style="color: hsl(0, 100%, 40%);">-                          card_uart_tx(ip->uart, msgb_l3(tfp->tpdu), 1);</span><br><span style="color: hsl(120, 100%, 40%);">+                          card_uart_tx(ip->uart, msgb_l3(tfp->tpdu), 1, false);</span><br><span>                          osmo_fsm_inst_state_chg(fi, TPDU_S_TX_SINGLE, 0, 0);</span><br><span>                         } else {</span><br><span>                             osmo_fsm_inst_state_chg(fi, TPDU_S_RX_SINGLE, 0, 0);</span><br><span>diff --git a/ccid_host/cuart_test.c b/ccid_host/cuart_test.c</span><br><span>index d4d8faf..0ed6614 100644</span><br><span>--- a/ccid_host/cuart_test.c</span><br><span>+++ b/ccid_host/cuart_test.c</span><br><span>@@ -44,7 +44,7 @@</span><br><span> static void test_apdu(void)</span><br><span> {</span><br><span>    const uint8_t select_mf[] = "\xa0\xa4\x04\x00\x02\x3f\x00";</span><br><span style="color: hsl(0, 100%, 40%);">-   card_uart_tx(&g_cuart, select_mf, 5);</span><br><span style="color: hsl(120, 100%, 40%);">+     card_uart_tx(&g_cuart, select_mf, 5, true);</span><br><span> </span><br><span>  osmo_select_main(true);</span><br><span>      sleep(1);</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-ccid-firmware/+/15743">change 15743</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-ccid-firmware/+/15743"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-ccid-firmware </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ibe02d283701dbfff5ab47e1b8195369c134cde03 </div>
<div style="display:none"> Gerrit-Change-Number: 15743 </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: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>