aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2019-12-15 13:19:24 +0100
committerHarald Welte <laforge@osmocom.org>2019-12-16 00:08:46 +0100
commit02d0d73cf18505b69bfa1700968fd4bd78c6ac30 (patch)
treeff10fd0800c537b753ee999c7df7bf81a8c87927
parent5b136021d8c9fe7af4fe5f6be0b1c7edfc55dce2 (diff)
card_emu: Initialize PTSS state every time we start PTS
Let's shift the responsibility from the caller side to the calee side. Change-Id: I39661ca93c87b2e2071765f69578eec5aaf90ce4
-rw-r--r--firmware/libcommon/source/card_emu.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/firmware/libcommon/source/card_emu.c b/firmware/libcommon/source/card_emu.c
index 63bf0d3..c3299de 100644
--- a/firmware/libcommon/source/card_emu.c
+++ b/firmware/libcommon/source/card_emu.c
@@ -240,7 +240,6 @@ static void card_handle_reset(struct card_handle *ch)
tc_etu_disable(ch->tc_chan);
- ch->pts.state = PTS_S_WAIT_REQ_PTSS;
ch->tpdu.state = TPDU_S_WAIT_CLA;
/* release any buffers we may still own */
@@ -534,8 +533,6 @@ static int tx_byte_atr(struct card_handle *ch)
/* update waiting time (see ISO 7816-3 10.2) */
ch->waiting_time = ch->wi * 960 * ch->fi;
tc_etu_set_wtime(ch->tc_chan, ch->waiting_time);
- /* reset PTS to initial state */
- set_pts_state(ch, PTS_S_WAIT_REQ_PTSS);
/* go to next state */
card_set_state(ch, ISO_S_WAIT_TPDU);
return 0;
@@ -701,7 +698,6 @@ static int tx_byte_pts(struct card_handle *ch)
emu_update_fidi(ch);
/* Wait for the next TPDU */
card_set_state(ch, ISO_S_WAIT_TPDU);
- set_pts_state(ch, PTS_S_WAIT_REQ_PTSS);
break;
default:
/* calculate the next state and set it */
@@ -979,6 +975,8 @@ void card_emu_process_rx_byte(struct card_handle *ch, uint8_t byte)
switch (ch->state) {
case ISO_S_WAIT_TPDU:
if (byte == 0xff) {
+ /* reset PTS to initial state */
+ set_pts_state(ch, PTS_S_WAIT_REQ_PTSS);
new_state = process_byte_pts(ch, byte);
ch->stats.pps++;
goto out_silent;