<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>