aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Wild <ewild@sysmocom.de>2019-11-27 18:33:09 +0100
committerEric Wild <ewild@sysmocom.de>2019-11-28 13:42:16 +0100
commitfd0baceb95b6dbfad2094dc165e03dffb4acfd19 (patch)
treec3557e37592db74d4e0cb6647a9a934e2c4283ce
parent9a2279cf63d6d7feef26711f2dc3d0a1c27e4e86 (diff)
add a "no rx or tx" state
-rw-r--r--ccid_common/cuart.h1
-rw-r--r--ccid_common/iso7816_fsm.c2
-rw-r--r--sysmoOCTSIM/cuart_driver_asf4_usart_async.c2
3 files changed, 4 insertions, 1 deletions
diff --git a/ccid_common/cuart.h b/ccid_common/cuart.h
index 6c53481..32a8daa 100644
--- a/ccid_common/cuart.h
+++ b/ccid_common/cuart.h
@@ -23,6 +23,7 @@ extern const struct value_string card_uart_event_vals[];
enum card_uart_ctl {
CUART_CTL_RX, /* enable/disable receiver */
+ CUART_CTL_NO_RXTX, /* enable/disable receiver */
CUART_CTL_POWER, /* enable/disable ICC power */
CUART_CTL_CLOCK, /* enable/disable ICC clock */
CUART_CTL_CLOCK_FREQ, /* set ICC clock frequency (hz)*/
diff --git a/ccid_common/iso7816_fsm.c b/ccid_common/iso7816_fsm.c
index 031f6b0..623193f 100644
--- a/ccid_common/iso7816_fsm.c
+++ b/ccid_common/iso7816_fsm.c
@@ -305,7 +305,7 @@ static void iso7816_3_wait_tpdu_onenter(struct osmo_fsm_inst *fi, uint32_t prev_
{
struct iso7816_3_priv *ip = get_iso7816_3_priv(fi);
OSMO_ASSERT(fi->fsm == &iso7816_3_fsm);
- card_uart_ctrl(ip->uart, CUART_CTL_RX, false);
+ card_uart_ctrl(ip->uart, CUART_CTL_NO_RXTX, true);
/* reset the TPDU state machine */
osmo_fsm_inst_dispatch(ip->tpdu_fi, ISO7816_E_TPDU_CLEAR_REQ, NULL);
}
diff --git a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c
index a8f8044..21ab5a4 100644
--- a/sysmoOCTSIM/cuart_driver_asf4_usart_async.c
+++ b/sysmoOCTSIM/cuart_driver_asf4_usart_async.c
@@ -348,6 +348,8 @@ static int asf4_usart_ctrl(struct card_uart *cuart, enum card_uart_ctl ctl, int
Sercom *sercom = cuart->u.asf4.usa_pd->device.hw;
switch (ctl) {
+ case CUART_CTL_NO_RXTX:
+ break;
case CUART_CTL_RX:
if (arg){
sercom->USART.CTRLB.bit.RXEN = 1;