laforge has uploaded this change for review. ( https://gerrit.osmocom.org/c/simtrace2/+/30093 )
Change subject: Fix missing generation of waiting-time-extension in some situations ......................................................................
Fix missing generation of waiting-time-extension in some situations
In the function set_tpdu_state(), there is a missing transition to WAIT_TX state. This is fine if you are coming from the WAIT_PB state, which has already restarted the waiting timer via card_emu_uart_update_wt(), but if you are coming from the WAIT_RX state, then card_emu_uart_update_wt() is never called and the USART timer is never restarted. (Because the transmitter is left enabled in WAIT_RX, the response is still sent to the modem; it is just the half-wait timeouts that are missing).
Change-Id: Ib4eb964c073192e8f067004625af818ba2caf003 --- M firmware/libcommon/source/card_emu.c 1 file changed, 9 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/simtrace2 refs/changes/93/30093/1
diff --git a/firmware/libcommon/source/card_emu.c b/firmware/libcommon/source/card_emu.c index c85b08c..e6907e6 100644 --- a/firmware/libcommon/source/card_emu.c +++ b/firmware/libcommon/source/card_emu.c @@ -775,6 +775,15 @@ /* prepare to extend the waiting time once half of it is reached */ card_emu_uart_update_wt(ch->uart_chan, ch->waiting_time); break; + case TPDU_S_WAIT_TX: + /* If we came from WAIT_RX, disable the receiver and + * enable the transmitter. If we came from WAIT_RX or + * WAIT_PB, reset the waiting time so that we can extend + * waiting time if needed. */ + card_emu_uart_enable(ch->uart_chan, ENABLE_TX); + /* prepare to extend the waiting time once half of it is reached */ + card_emu_uart_update_wt(ch->uart_chan, ch->waiting_time); + break; default: break; }