Lines Matching full:atr
365 * + 2 Automatic parameter configuration based on ATR data
825 static uint8_t atr_get_protocol_num(const uint8_t *atr, uint32_t len) in atr_get_protocol_num() argument
829 if (len < 2 || !(atr[1] & 0x80)) { in atr_get_protocol_num()
833 i = 1 + !!(atr[1] & 0x10) + !!(atr[1] & 0x20) + !!(atr[1] & 0x40); in atr_get_protocol_num()
834 i += !!(atr[1] & 0x80); in atr_get_protocol_num()
835 return atr[i] & 0x0f; in atr_get_protocol_num()
840 const uint8_t *atr = NULL; in ccid_write_data_block_atr() local
847 atr = ccid_card_get_atr(s->card, &len); in ccid_write_data_block_atr()
849 atr_protocol_num = atr_get_protocol_num(atr, len); in ccid_write_data_block_atr()
850 DPRINTF(s, D_VERBOSE, "%s: atr contains protocol=%d\n", __func__, in ccid_write_data_block_atr()
852 /* set parameters from ATR - see spec page 109 */ in ccid_write_data_block_atr()
857 /* TODO: unimplemented ATR T0 parameters */ in ccid_write_data_block_atr()
865 /* TODO: unimplemented ATR T1 parameters */ in ccid_write_data_block_atr()
875 DPRINTF(s, D_WARN, "%s: error: unsupported ATR protocol %d\n", in ccid_write_data_block_atr()
878 ccid_write_data_block(s, recv->bSlot, recv->bSeq, atr, len); in ccid_write_data_block_atr()
1025 /* atr is written regardless of error. */ in ccid_handle_bulk_out()