|
| | T1Session (TransportT &transport) noexcept |
| |
| void | SetInterFrameDelayMs (std::uint32_t ms) noexcept |
| | Delay between a completed Write and the first Read of the response.
|
| |
| std::uint32_t | InterFrameDelayMs () const noexcept |
| |
| void | SetReadRetries (std::uint8_t retries) noexcept |
| | Number of retry attempts for retryable I²C read errors while waiting response blocks.
|
| |
| std::uint8_t | ReadRetries () const noexcept |
| |
| void | SetReadRetryDelayMs (std::uint32_t ms) noexcept |
| | Delay between retryable read attempts (transport polling interval).
|
| |
| std::uint32_t | ReadRetryDelayMs () const noexcept |
| |
| void | SetMaxWtxRequests (std::uint8_t max_wtx_requests) noexcept |
| | Upper bound of tolerated WTX request/response cycles within a single exchange.
|
| |
| std::uint8_t | MaxWtxRequests () const noexcept |
| |
| void | SetIfsc (std::size_t ifsc) noexcept |
| | Information field size of the SE (IFSC): the largest INF the host puts in one I-block.
|
| |
| std::size_t | Ifsc () const noexcept |
| |
| void | SetMaxRetransmissions (std::uint8_t n) noexcept |
| | How many times one block is requested or sent again within an exchange before it fails (ISO/IEC 7816-3 11.6.3). Default t1::kDefaultMaxRetransmissions.
|
| |
| std::uint8_t | MaxRetransmissions () const noexcept |
| |
| TransportT & | Transport () noexcept |
| |
| const TransportT & | Transport () const noexcept |
| |
| Error | ChipWarmReset (std::uint32_t timeout_ms) noexcept |
| | Send an S-block warm-reset style request (PCB = t1::kPcbSWarmReset, empty INF).
|
| |
| Error | GetAnswerToReset (std::uint8_t *buf, std::size_t cap, std::size_t *len_out, std::uint32_t timeout_ms) noexcept |
| | Retrieve the SE050 T=1oI2C profile / ATR-like byte string (S-block GET ATR).
|
| |
| Error | RecoverAfterHostReset (std::uint32_t timeout_ms) noexcept |
| | Start-up sequence for SE050 erratum I2C.1, then resynchronise the block numbers.
|
| |
| Error | ExchangeInformation (const std::uint8_t *cmd, std::size_t cmd_len, std::uint8_t *rsp, std::size_t rsp_cap, std::size_t *rsp_len, std::uint32_t timeout_ms) noexcept |
| | Exchange a raw information field payload (APDU bytes) with the SE using I-blocks.
|
| |
| void | ResetSequenceState () noexcept |
| | Reset sequence counters (call after electrical / protocol reset).
|
| |
template<typename TransportT>
class se050::T1Session< TransportT >
Stateful T=1 session bound to a concrete I²C transport.
- Template Parameters
-
template<typename TransportT >
Start-up sequence for SE050 erratum I2C.1, then resynchronise the block numbers.
Errata sheet Rev. 1.0, 3.1.3: if the host resets in the middle of an exchange, the SE050 may still hold an answer; writing the next command before it is read can make the SE050 stretch SCL until it is power-cycled. Call this once after the host starts, before the first command: it reads (and discards) any pending block, then sends S(RESYNCH request) and resets N(S)/N(R) on both sides. When nothing is pending the read is simply NACKed (it costs ReadRetries x ReadRetryDelayMs). It cannot clear a lock-up that has already happened: that needs a power cycle (HardwareReset()).