This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Kévin Redon gerrit-no-reply at lists.osmocom.orgKévin Redon has uploaded this change for review. ( https://gerrit.osmocom.org/9867 Change subject: sniff: add WT timeout detection using USART timeout (TC is not required) ...................................................................... sniff: add WT timeout detection using USART timeout (TC is not required) Change-Id: I4ec6e812e7e1eb91005027d2e864fc315550d79c --- M firmware/libcommon/source/sniffer.c 1 file changed, 28 insertions(+), 4 deletions(-) git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/67/9867/1 diff --git a/firmware/libcommon/source/sniffer.c b/firmware/libcommon/source/sniffer.c index 0a813e3..9d88c3d 100644 --- a/firmware/libcommon/source/sniffer.c +++ b/firmware/libcommon/source/sniffer.c @@ -193,11 +193,9 @@ switch (iso_state_new) { case ISO7816_S_RESET: update_fidi(sniff_usart.base, 0x11); /* reset baud rate to default Di/Fi values */ - // TODO disable USART and TC break; case ISO7816_S_WAIT_ATR: rbuf_reset(&sniff_buffer); /* reset buffer for new communication */ - // TODO enable USART and TC break; case ISO7816_S_IN_ATR: atr_i = 0; @@ -613,6 +611,30 @@ /* Store sniffed data into buffer (also clear interrupt */ rbuf_write(&sniff_buffer, byte); } + /* Verify it WT timeout occurred, to detect unresponsive card */ + if (csr & US_CSR_TIMEOUT) { + /* Stop timeout until next character is received */ + sniff_usart.base->US_CR |= US_CR_STTTO; + /* Use timeout to detect end of ATR/PPS/TPDU */ + switch (iso_state) { + case ISO7816_S_RESET: + case ISO7816_S_WAIT_ATR: + break; + case ISO7816_S_IN_ATR: + change_state(ISO7816_S_WAIT_ATR); + break; + case ISO7816_S_WAIT_TPDU: + break; + case ISO7816_S_WAIT_PPS_RSP: + case ISO7816_S_IN_TPDU: + case ISO7816_S_IN_PPS_REQ: + case ISO7816_S_IN_PPS_RSP: + change_state(ISO7816_S_WAIT_TPDU); + break; + default: + break; + } + } } /** PIO interrupt service routine to checks if the card reset line has changed @@ -699,8 +721,10 @@ ISO7816_Init(&sniff_usart, CLK_SLAVE); /* Only receive data when sniffing */ USART_SetReceiverEnabled(sniff_usart.base, 1); - /* Enable interrupt to indicate when data has been received */ - USART_EnableIt(sniff_usart.base, US_IER_RXRDY); + /* Enable Receiver time-out WT to detect unresponsive cards */ + sniff_usart.base->US_RTOR = 9600-12; /* -12 because the timer starts at the end of the 12 ETU frame */ + /* Enable interrupt to indicate when data has been received or timeout occurred */ + USART_EnableIt(sniff_usart.base, US_IER_RXRDY | US_IER_TIMEOUT); /* Enable interrupt requests for the USART peripheral */ NVIC_EnableIRQ(IRQ_USART_SIM); -- To view, visit https://gerrit.osmocom.org/9867 To unsubscribe, or for help writing mail filters, visit https://gerrit.osmocom.org/settings Gerrit-Project: simtrace2 Gerrit-Branch: master Gerrit-MessageType: newchange Gerrit-Change-Id: I4ec6e812e7e1eb91005027d2e864fc315550d79c Gerrit-Change-Number: 9867 Gerrit-PatchSet: 1 Gerrit-Owner: Kévin Redon <kredon at sysmocom.de> -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20180704/062aff33/attachment.htm>