iso7816_fsm: ignore RX_SINGLE events during transmit

When logging is enabled, we get a lot of LOGL_ERROR events
about RX_SINGLE events not being permitted.  This is not very
useful in debugging, so suppress those error messages.

Change-Id: I7aec5fb2eaa76076e1bd0c6b8e8d09dc840c3630
diff --git a/ccid_common/iso7816_fsm.c b/ccid_common/iso7816_fsm.c
index 059950f..3e78fc8 100644
--- a/ccid_common/iso7816_fsm.c
+++ b/ccid_common/iso7816_fsm.c
@@ -417,6 +417,8 @@
 	struct iso7816_3_priv *ip = get_iso7816_3_priv(fi);
 	OSMO_ASSERT(fi->fsm == &iso7816_3_fsm);
 	switch (event) {
+	case ISO7816_E_RX_SINGLE:
+		return;
 	case ISO7816_E_TX_COMPL:
 		/* Rx of single byte is already enabled by previous card_uart_tx() call */
 		osmo_fsm_inst_state_chg(fi, ISO7816_S_IN_PPS_RSP, 0, 0);
@@ -517,7 +519,8 @@
 		.name = "WAIT_PPS_RESP",
 		.in_event_mask =	S(ISO7816_E_TX_COMPL) |
 					S(ISO7816_E_TX_ERR_IND) |
-					S(ISO7816_E_WTIME_EXP),
+					S(ISO7816_E_WTIME_EXP) |
+					S(ISO7816_E_RX_SINGLE),
 		.out_state_mask =	S(ISO7816_S_RESET) |
 					S(ISO7816_S_WAIT_TPDU) |
 					S(ISO7816_S_WAIT_PPS_RSP) |
@@ -1218,6 +1221,8 @@
 	struct iso7816_3_priv *ip = get_iso7816_3_priv(parent_fi);
 	OSMO_ASSERT(fi->fsm == &tpdu_fsm);
 	switch (event) {
+	case ISO7816_E_RX_SINGLE:
+		return;
 	case ISO7816_E_TX_COMPL:
 
 		card_uart_set_rx_threshold(ip->uart, 1);
@@ -1307,6 +1312,8 @@
 	struct iso7816_3_priv *ip = get_iso7816_3_priv(parent_fi);
 
 	switch (event) {
+	case ISO7816_E_RX_SINGLE:
+		return;
 	case ISO7816_E_TX_COMPL:
 		card_uart_set_rx_threshold(ip->uart, 1);
 		card_uart_ctrl(ip->uart, CUART_CTL_RX_TIMER_HINT, 1);
@@ -1325,6 +1332,8 @@
 	struct iso7816_3_priv *ip = get_iso7816_3_priv(parent_fi);
 
 	switch (event) {
+	case ISO7816_E_RX_SINGLE:
+		return;
 	case ISO7816_E_TX_COMPL:
 		tfp->tpdu->l3h += 1;
 		card_uart_set_rx_threshold(ip->uart, 1);
@@ -1484,7 +1493,8 @@
 	},
 	[TPDU_S_TX_HDR] = {
 		.name = "TX_HDR",
-		.in_event_mask = S(ISO7816_E_TX_COMPL),
+		.in_event_mask = S(ISO7816_E_TX_COMPL) |
+				 S(ISO7816_E_RX_SINGLE),
 		.out_state_mask = S(TPDU_S_INIT) |
 				  S(TPDU_S_PROCEDURE),
 		.action = tpdu_s_tx_hdr_action,
@@ -1503,14 +1513,16 @@
 	},
 	[TPDU_S_TX_REMAINING] = {
 		.name = "TX_REMAINING",
-		.in_event_mask = S(ISO7816_E_TX_COMPL),
+		.in_event_mask = S(ISO7816_E_TX_COMPL) |
+				 S(ISO7816_E_RX_SINGLE),
 		.out_state_mask = S(TPDU_S_INIT) |
 				  S(TPDU_S_SW1),
 		.action = tpdu_s_tx_remaining_action,
 	},
 	[TPDU_S_TX_SINGLE] = {
 		.name = "TX_SINGLE",
-		.in_event_mask = S(ISO7816_E_TX_COMPL),
+		.in_event_mask = S(ISO7816_E_TX_COMPL) |
+				 S(ISO7816_E_RX_SINGLE),
 		.out_state_mask = S(TPDU_S_INIT) |
 				  S(TPDU_S_PROCEDURE),
 		.action = tpdu_s_tx_single_action,