diff options
author | Harald Welte <laforge@osmocom.org> | 2019-12-15 13:19:24 +0100 |
---|---|---|
committer | Harald Welte <laforge@osmocom.org> | 2019-12-16 00:08:46 +0100 |
commit | 02d0d73cf18505b69bfa1700968fd4bd78c6ac30 (patch) | |
tree | ff10fd0800c537b753ee999c7df7bf81a8c87927 | |
parent | 5b136021d8c9fe7af4fe5f6be0b1c7edfc55dce2 (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.c | 6 |
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; |