mirror of
https://gitea.osmocom.org/sim-card/simtrace2.git
synced 2026-03-16 21:28:33 +03:00
card_emu: Fix computation of waiting time
As we store the waiting time (WT) in 'etu', we must adjust the formula from ISO 7816-3. The 'Fi' component in the formula only exists to compute clock cycles from the etu, which we don't need here. Without this patch, the waiting time would be way too large (by a factor of 372 in the default case). Change-Id: Ia21bc7303f9b38834b5b1753983ed2a99bfc7d95
This commit is contained in:
@@ -505,8 +505,11 @@ static int tx_byte_atr(struct card_handle *ch)
|
||||
}
|
||||
}
|
||||
}
|
||||
/* update waiting time (see ISO 7816-3 10.2) */
|
||||
ch->waiting_time = ch->wi * 960 * iso7816_3_fi_table[ch->F_index];
|
||||
/* update waiting time (see ISO 7816-3 10.2). We can drop the Fi
|
||||
* multiplier as we store the waiting time in units of 'etu', and
|
||||
* don't really care what the number of clock cycles or the absolute
|
||||
* wall clock time is */
|
||||
ch->waiting_time = ch->wi * 960;
|
||||
/* go to next state */
|
||||
card_set_state(ch, ISO_S_WAIT_TPDU);
|
||||
return 0;
|
||||
|
||||
@@ -225,7 +225,6 @@ static uint16_t compute_next_timeout(struct cardem_inst *ci)
|
||||
want_to_expire = ci->wt.remaining - (ci->wt.total / 2);
|
||||
} else
|
||||
want_to_expire = ci->wt.remaining;
|
||||
TRACE_INFO("want_to_expire=%u (total=%u, remaining=%u)\r\n", want_to_expire, ci->wt.total, ci->wt.remaining);
|
||||
/* if value exceeds the USART TO range, use the maximum possible value for one round */
|
||||
return OSMO_MIN(want_to_expire, 0xffff);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user