[TABLE="class: code, width: 0"]
[TR]
[TD]/*[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] icc_async.c[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] Asynchronous ICC's handling functions[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] This file is part of the Unix driver for Towitoko smartcard readers[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] Copyright (C) 2000 2001 Carlos Prados <cprados@yahoo.com>[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] This version is modified by doz21 to work in a special manner

[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] This library is free software; you can redistribute it and/or[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] modify it under the terms of the GNU Lesser General Public[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] License as published by the Free Software Foundation; either[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] version 2 of the License, or (at your option) any later version.[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] This library is distributed in the hope that it will be useful,[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] but WITHOUT ANY WARRANTY; without even the implied warranty of[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] Lesser General Public License for more details.[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] You should have received a copy of the GNU Lesser General Public[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] License along with this library; if not, write to the Free Software[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]*/[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "../globals.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#ifdef WITH_CARDREADER[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "../oscam-lock.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "../oscam-string.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "icc_async.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "protocol_t0.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "io_serial.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "ifd_phoenix.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#include "../oscam-time.h"[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define OK 0[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define ERROR 1[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]// Default T0/T14 settings[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define DEFAULT_WI 10[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]// Default T1 settings[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define DEFAULT_IFSC 32[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define MAX_IFSC 251 /* Cannot send > 255 buffer */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define DEFAULT_CWI 13[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define DEFAULT_BWI 4[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define EDC_LRC 0[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define PPS_MAX_LENGTH 6[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define PPS_HAS_PPS1(block) ((block[1] & 0x10) == 0x10)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define PPS_HAS_PPS2(block) ((block[1] & 0x20) == 0x20)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#define PPS_HAS_PPS3(block) ((block[1] & 0x40) == 0x40)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]/*[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] * Not exported functions declaration[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static uint16_t tempfi; // used to capture FI and use it for rounding or not[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static void ICC_Async_InvertBuffer(uint32_t size, unsigned char *buffer);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t Parse_ATR(struct s_reader *reader, ATR *atr, uint16_t deprecated);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t PPS_Exchange(struct s_reader *reader, unsigned char *params, uint32_t *length);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static uint32_t PPS_GetLength(unsigned char *block);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t InitCard(struct s_reader *reader, ATR *atr, unsigned char FI, uint32_t D, unsigned char N, uint16_t deprecated);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static uint32_t ETU_to_us(struct s_reader *reader, uint32_t ETU);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static unsigned char PPS_GetPCK(unsigned char *block, uint32_t length);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t SetRightParity(struct s_reader *reader);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]/*[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] * Exported functions definition[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_Device_Init(struct s_reader *reader)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->fdmc = -1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Opening device %s", reader->device);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->written = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t ret = reader->crdr.reader_init(reader);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret == OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { rdr_debug_mask(reader, D_IFD, "Device %s succesfully opened", reader->device); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->typ != R_SC8in1) { NULLFREE(reader->crdr_data); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "ERROR: Can't open %s device", reader->device);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return ret;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_Init_Locks(void)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Init device specific locks here, called from init thread[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // before reader threads are running[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] struct s_reader *rdr;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] LL_ITER itr = ll_iter_create(configured_readers);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] while((rdr = ll_iter_next(&itr)))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(rdr->crdr.lock_init)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { rdr->crdr.lock_init(rdr); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_GetStatus(struct s_reader *reader, int32_t *card)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if (reader->typ == R_SMART && reader->smartdev_found >= 4) {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->statuscnt = reader->statuscnt + 1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if (reader->statuscnt == 6) {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t in = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.get_status(reader, &in));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(in)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {reader->modemstat = 1; *card = 1; reader->statuscnt = 0;}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {reader->modemstat = 0; *card = 0; reader->statuscnt = 0;}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] } else {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] *card = reader->modemstat;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t in = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.get_status(reader, &in));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(in)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { *card = 1;}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { *card = 0;}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_Activate(struct s_reader *reader, ATR *atr, uint16_t deprecated)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Activating card");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->current_baudrate = DEFAULT_BAUDRATE;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->atr[0] != 0 && !reader->ins7e11_fast_reset)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Using ATR from reader config");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ATR_InitFromArray(atr, reader->atr, ATR_MAX_SIZE);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.activate(reader, atr));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.skip_extra_atr_parsing)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { return OK; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char atrarr[ATR_MAX_SIZE];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t atr_size;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ATR_GetRaw(atr, atrarr, &atr_size);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] char tmp[atr_size * 3 + 1];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "ATR: %s", cs_hexdump(1, atrarr, atr_size, tmp, sizeof(tmp)));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] memcpy(reader->card_atr, atrarr, atr_size);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->card_atr_length = atr_size;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] /* Get ICC reader->convention */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetConvention(atr, &(reader->convention)) != ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "ERROR: Could not read reader->convention");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->convention = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->protocol_type = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return ERROR;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->protocol_type = ATR_PROTOCOL_TYPE_T0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Parse_ATR and InitCard need to be included in lock because they change parity of serial port[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.lock)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->crdr.lock(reader); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t ret = Parse_ATR(reader, atr, deprecated);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.unlock)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->crdr.unlock(reader); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { rdr_log(reader, "ERROR: Parse_ATR returned error"); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { return ERROR; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Card succesfully activated");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_CardWrite(struct s_reader *reader, unsigned char *command, uint16_t command_len, unsigned char *rsp, uint16_t *lr)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t ret;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] *lr = 0; //will be returned in case of error[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.card_write)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.card_write(reader, command, rsp, lr, command_len));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.lock)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->crdr.lock(reader); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t try = 1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint16_t type = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] do[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] switch(reader->protocol_type)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(try > 1)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Warning: needed try nr %i, next ECM has some delay", try);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case ATR_PROTOCOL_TYPE_T0:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = Protocol_T0_Command(reader, command, command_len, rsp, lr);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] type = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] break;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case ATR_PROTOCOL_TYPE_T1:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = Protocol_T1_Command(reader, command, command_len, rsp, lr);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] type = 1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret != OK && !reader->crdr.skip_t1_command_retries)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //try to resync[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Resync error: readtimeouts %d/%d (max/min) us, writetimeouts %d/%d (max/min) us", reader->maxreadtimeout, reader->minreadtimeout, reader->maxwritetimeout, reader->minwritetimeout);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char resync[] = { 0x21, 0xC0, 0x00, 0xE1 };[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = Protocol_T1_Command(reader, resync, sizeof(resync), rsp, lr);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret == OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //reader->ifsc = DEFAULT_IFSC; //tryfix cardtimeouts: ifsc is setup at card init, on resync it should not return to default_ifsc[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "T1 Resync command succesfull ifsc = %i", reader->ifsc);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = ERROR;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "T1 Resync command error, trying to reactivate!");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ATR atr;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ICC_Async_Activate(reader, &atr, reader->deprecated);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.unlock)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->crdr.unlock(reader); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return ERROR;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] break;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case ATR_PROTOCOL_TYPE_T14:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = Protocol_T14_ExchangeTPDU(reader, command, command_len, rsp, lr);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] type = 14;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] break;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] default:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "ERROR: Unknown protocol type %i", reader->protocol_type);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] type = 99; // use 99 for unknown.[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = ERROR;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] try++;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] while((try < 3) && (ret != OK)); //always do one retry when failing[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.unlock)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->crdr.unlock(reader); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_TRACE, "ERROR: Protocol_T%d_Command returns error", type);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return ERROR;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_ddump_mask(reader, D_READER, rsp, *lr, "Answer from cardreader:");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_GetTimings(struct s_reader *reader, uint32_t wait_etu)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t timeout = ETU_to_us(reader, wait_etu);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Setting timeout to %i ETU (%d us)", wait_etu, timeout);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return timeout;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_Transmit(struct s_reader *reader, uint32_t size, uint32_t expectedlen, unsigned char *data, uint32_t delay, uint32_t timeout)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(expectedlen) //expectedlen = 0 means expected len is unknown[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { rdr_debug_mask(reader, D_IFD, "Transmit size %d bytes, expected len %d bytes, delay %d us, timeout=%d us", size, expectedlen, delay, timeout); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { rdr_debug_mask(reader, D_IFD, "Transmit size %d bytes, delay %d us, timeout=%d us", size, delay, timeout); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_ddump_mask(reader, D_IFD, data, size, "Transmit:");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char *sent = data;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->convention == ATR_CONVENTION_INVERSE && reader->crdr.need_inverse)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ICC_Async_InvertBuffer(size, sent);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.transmit(reader, sent, size, expectedlen, delay, timeout));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Transmit succesful");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->convention == ATR_CONVENTION_INVERSE && reader->crdr.need_inverse)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // revert inversion cause the code in protocol_t0 is accessing buffer after transmit[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ICC_Async_InvertBuffer(size, sent);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_Receive(struct s_reader *reader, uint32_t size, unsigned char *data, uint32_t delay, uint32_t timeout)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Receive size %d bytes, delay %d us, timeout=%d us", size, delay, timeout);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.receive(reader, data, size, delay, timeout));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Receive succesful");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->convention == ATR_CONVENTION_INVERSE && reader->crdr.need_inverse == 1)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { ICC_Async_InvertBuffer(size, data); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_Close(struct s_reader *reader)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Closing device %s", reader->device);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.close(reader));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->typ != R_SC8in1) { NULLFREE(reader->crdr_data); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Device %s succesfully closed", reader->device);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]void ICC_Async_DisplayMsg(struct s_reader *reader, char *msg)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.display_msg)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->crdr.display_msg(reader, msg); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]int32_t ICC_Async_Reset(struct s_reader *reader, struct s_ATR *atr,[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t (*rdr_activate_card)(struct s_reader *, struct s_ATR *, uint16_t deprecated),[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t (*rdr_get_cardsystem)(struct s_reader *, struct s_ATR *))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(!reader->crdr.do_reset)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { return 0; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return reader->crdr.do_reset(reader, atr, rdr_activate_card, rdr_get_cardsystem);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]/*static uint32_t ICC_Async_GetClockRate_NewSmart(int32_t cardmhz)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return (cardmhz * 10000L);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}*/[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static uint32_t ICC_Async_GetClockRate(int32_t cardmhz)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] switch(cardmhz)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case 357:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case 358:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return (372L * 9600L);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case 368:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return (384L * 9600L);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] default:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return (cardmhz * 10000L);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t ICC_Async_GetPLL_Divider(struct s_reader *reader)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->divider != 0) { return reader->divider; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->cardmhz != 8300) /* Check dreambox is not DM7025 */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] float divider;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader," TEST tempo mhz check = %u mhz", reader->mhz);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] divider = ((float) reader->cardmhz) / ((float) reader->mhz);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if (tempfi == 9) reader->divider = (int32_t) divider; // some card's runs only when slightly oveclocked like HD02[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->divider = (int32_t) divider;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(divider > reader->divider) { reader->divider++; } /* to prevent over clocking, ceil (round up) the divider */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_DEVICE, "PLL maxmhz = %.2f, wanted mhz = %.2f, divider used = %d, actualcardclock=%.2f", (float) reader->cardmhz / 100, (float) reader->mhz / 100,[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->divider, (float) reader->cardmhz / reader->divider / 100);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->mhz = reader->cardmhz / reader->divider;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else /* STB is DM7025 */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t i, dm7025_clock_freq[] = {518, 461, 395, 360, 319, 296, 267, 244, 230, 212, 197},[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] dm7025_PLL_setting[] = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, t_cardmhz = reader->mhz;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] for(i = 0; i < 11; i++)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(t_cardmhz >= dm7025_clock_freq
) { break; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(i > 10) { i = 10; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->mhz = dm7025_clock_freq;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->divider = dm7025_PLL_setting; /*Nicer way of codeing is: reader->divider = i + 6;*/[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_DEVICE, "DM7025 PLL maxmhz = %.2f, wanted mhz = %.2f, PLL setting used = %d, actualcardclock=%.2f", (float) reader->cardmhz / 100, (float) t_cardmhz / 100,[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->divider, (float) reader->mhz / 100);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return reader->divider;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static void ICC_Async_InvertBuffer(uint32_t size, unsigned char *buffer)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t i;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] cs_debug_mask(D_IFD, "%s: size=%u buf[0]=%02x", __func__, size, buffer[0]);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] for(i = 0; i < size; i++)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { buffer = ~(INVERT_BYTE(buffer)); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t Parse_ATR(struct s_reader *reader, ATR *atr, uint16_t deprecated)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char FI = ATR_DEFAULT_FI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t D = ATR_DEFAULT_D;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t N = ATR_DEFAULT_N;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t ret;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] char tmp[256];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t numprot = atr->pn;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //if there is a trailing TD, this number is one too high[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char tx;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, numprot - 1, ATR_INTERFACE_BYTE_TD, &tx) == ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if((tx & 0xF0) == 0)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { numprot--; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t i, point;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] char txt[50];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] bool OffersT[3]; //T14 stored as T2[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] for(i = 0; i <= 2; i++)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { OffersT = 0; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] for(i = 1; i <= numprot; i++)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] point = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, i, ATR_INTERFACE_BYTE_TA, &tx) == ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] snprintf((char *)txt + point, sizeof(txt) - point, "TA%i=%02X ", i, tx);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] point += 7;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, i, ATR_INTERFACE_BYTE_TB, &tx) == ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] snprintf((char *)txt + point, sizeof(txt) - point, "TB%i=%02X ", i, tx);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] point += 7;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, i, ATR_INTERFACE_BYTE_TC, &tx) == ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] snprintf((char *)txt + point, sizeof(txt) - point, "TC%i=%02X ", i, tx);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] point += 7;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, i, ATR_INTERFACE_BYTE_TD, &tx) == ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] snprintf((char *)txt + point, sizeof(txt) - point, "TD%i=%02X ", i, tx);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] point += 7;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tx &= 0X0F;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] snprintf((char *)txt + point, sizeof(txt) - point, "(T%i)", tx);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(tx == 14)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { OffersT[2] = 1; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { OffersT[tx] = 1; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] snprintf((char *)txt + point, sizeof(txt) - point, "no TD%i means T0", i);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] OffersT[0] = 1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "%s", txt);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t numprottype = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] for(i = 0; i <= 2; i++)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(OffersT)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { numprottype ++; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "%i protocol types detected. Historical bytes: %s",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] numprottype, cs_hexdump(1, atr->hb, atr->hbn, tmp, sizeof(tmp)));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ATR_GetParameter(atr, ATR_PARAMETER_N, &(N));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ATR_GetProtocolType(atr, 1, &(reader->protocol_type)); //get protocol from TD1[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char TA2;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] bool SpecificMode = (ATR_GetInterfaceByte(atr, 2, ATR_INTERFACE_BYTE_TA, &TA2) == ATR_OK); //if TA2 present, specific mode, else negotiable mode[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(SpecificMode)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->protocol_type = TA2 & 0x0F;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if((TA2 & 0x10) != 0x10) //bit 5 set to 0 means F and D explicitly defined in interface characters[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char TA1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, 1 , ATR_INTERFACE_BYTE_TA, &TA1) == ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] FI = TA1 >> 4;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ATR_GetParameter(atr, ATR_PARAMETER_D, &(D));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] FI = ATR_DEFAULT_FI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] D = ATR_DEFAULT_D;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Specific mode: speed 'implicitly defined', not sure how to proceed, assuming default values");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] FI = ATR_DEFAULT_FI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] D = ATR_DEFAULT_D;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t F = atr_f_table[FI];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "Specific mode: T%i, F=%d, D=%d, N=%d",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->protocol_type, F, D, N);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else //negotiable mode[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->read_timeout = 1000000; // in us[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] bool PPS_success = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] bool NeedsPTS = ((reader->protocol_type != ATR_PROTOCOL_TYPE_T14) && (numprottype > 1 || (atr->ib[0][ATR_INTERFACE_BYTE_TA].present == 1 && atr->ib[0][ATR_INTERFACE_BYTE_TA].value != 0x11) || N == 255)); //needs PTS according to old ISO 7816[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(NeedsPTS && deprecated == 0)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // PTSS PTS0 PTS1 PCK[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char req[6] = { 0xFF, 0x10, 0x00, 0x00 }; //we currently do not support PTS2, standard guardtimes or PTS3,[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //but spare 2 bytes in arrayif card responds with it[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] req[1] = 0x10 | reader->protocol_type; //PTS0 always flags PTS1 to be sent always[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, 1, ATR_INTERFACE_BYTE_TA, &req[2]) != ATR_OK) //PTS1[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { req[2] = 0x11; } //defaults FI and DI to 1[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t len = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(SetRightParity(reader));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = PPS_Exchange(reader, req, &len);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret == OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] FI = req[2] >> 4;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char DI = req[2] & 0x0F;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] D = atr_d_table[DI];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t F = atr_f_table[FI];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] PPS_success = 1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "PTS Succesfull, selected protocol: T%i, F=%d, D=%d, N=%d",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->protocol_type, F, D, N);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { rdr_ddump_mask(reader, D_ATR, req, len, "PTS Failure, response:"); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //When for SCI, T14 protocol, TA1 is obeyed, this goes OK for mosts devices, but somehow on DM7025 Sky S02 card goes wrong when setting ETU (ok on DM800/DM8000)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(!PPS_success) //last PPS not succesfull[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char TA1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, 1 , ATR_INTERFACE_BYTE_TA, &TA1) == ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] FI = TA1 >> 4;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ATR_GetParameter(atr, ATR_PARAMETER_D, &(D));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else //do not obey TA1[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] FI = ATR_DEFAULT_FI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] D = ATR_DEFAULT_D;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(NeedsPTS)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if((D == 32) || (D == 12) || (D == 20)) //those values were RFU in old table[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { D = 0; } // viaccess cards that fail PTS need this[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t F = atr_f_table[FI];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "No PTS %s, selected protocol T%i, F=%d, D=%d, N=%d",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] NeedsPTS ? "happened" : "needed", reader->protocol_type, F, D, N);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }//end negotiable mode[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //make sure no zero values[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t F = atr_f_table[FI];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(!F)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] FI = ATR_DEFAULT_FI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Warning: F=0 is invalid, forcing FI=%d", FI);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(!D)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] D = ATR_DEFAULT_D;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Warning: D=0 is invalid, forcing D=%d", D);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Init card protocol T%i, FI=%d, F=%d, D=%d, N=%d", reader->protocol_type, FI, F, D, N);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(deprecated == 0)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { return InitCard(reader, atr, FI, D, N, deprecated); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { return InitCard(reader, atr, ATR_DEFAULT_FI, ATR_DEFAULT_D, N, deprecated); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t PPS_Exchange(struct s_reader *reader, unsigned char *params, uint32_t *length)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char confirm[PPS_MAX_LENGTH];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t len_request, len_confirm;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] char tmp[128];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t ret;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] len_request = PPS_GetLength(params);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] params[len_request - 1] = PPS_GetPCK(params, len_request - 1);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "PTS: Sending request: %s",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] cs_hexdump(1, params, len_request, tmp, sizeof(tmp)));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.set_protocol)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = reader->crdr.set_protocol(reader, params, length, len_request);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return ret;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] /* Send PPS request */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(ICC_Async_Transmit(reader, len_request, len_request, params, 0, 1000000));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] /* Get PPS confirm */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(ICC_Async_Receive(reader, 2, confirm, 0, 1000000));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] len_confirm = PPS_GetLength(confirm);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(ICC_Async_Receive(reader, len_confirm - 2, confirm + 2, 0, 1000000));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "PTS: Receiving confirm: %s",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] cs_hexdump(1, confirm, len_confirm, tmp, sizeof(tmp)));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if((len_request != len_confirm) || (memcmp(params, confirm, len_request)))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { ret = ERROR; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { ret = OK; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] /* Copy PPS handshake */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] memcpy(params, confirm, len_confirm);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] (*length) = len_confirm;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return ret;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static uint32_t PPS_GetLength(unsigned char *block)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t length = 3;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(PPS_HAS_PPS1(block))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { length++; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(PPS_HAS_PPS2(block))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { length++; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(PPS_HAS_PPS3(block))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { length++; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return length;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static uint32_t ETU_to_us(struct s_reader *reader, uint32_t ETU)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return (uint32_t)((double) ETU * reader->worketu); // in us[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t ICC_Async_SetParity(struct s_reader *reader, uint16_t parity)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.set_parity)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_IFD, "Setting right parity");[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.set_parity(reader, parity));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t SetRightParity(struct s_reader *reader)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //set right parity[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint16_t parity = PARITY_EVEN;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->convention == ATR_CONVENTION_INVERSE)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { parity = PARITY_ODD; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->protocol_type == ATR_PROTOCOL_TYPE_T14)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { parity = PARITY_NONE; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(ICC_Async_SetParity(reader, parity));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.flush)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { IO_Serial_Flush(reader); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static int32_t InitCard(struct s_reader *reader, ATR *atr, unsigned char FI, uint32_t D, unsigned char N, uint16_t deprecated)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t I, F, Fi, BGT = 0, edc, GT = 0, WWT = 0, EGT = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char wi = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //set the amps and the volts according to ATR[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetParameter(atr, ATR_PARAMETER_I, &I) != ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { I = 0; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tempfi = FI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //set clock speed to max if internal reader[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.max_clock_speed == 1)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->mhz == 357 || reader->mhz == 358) //no overclocking[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->mhz = atr_fs_table[FI] / 10000; } //we are going to clock the card to this nominal frequency[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->cardmhz > 2000 && reader->autospeed == 1) // -1 replaced by autospeed parameter is magic number pll internal reader set cardmhz according to optimal atr speed[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->mhz = atr_fs_table[FI] / 10000 ; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->cardmhz > 2000)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->divider = 0; //reset pll divider so divider will be set calculated again.[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ICC_Async_GetPLL_Divider(reader); // calculate pll divider for target cardmhz.[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] Fi = atr_f_table[FI]; //get the frequency divider also called clock rate conversion factor[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.set_baudrate)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->current_baudrate = DEFAULT_BAUDRATE;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(deprecated == 0)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->protocol_type != ATR_PROTOCOL_TYPE_T14) //dont switch for T14[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t baud_temp = (double)D * ICC_Async_GetClockRate(reader->cardmhz) / (double)Fi; // just a test[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Setting baudrate to %d bps", baud_temp);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.set_baudrate(reader, baud_temp));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->current_baudrate = baud_temp;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->cardmhz > 2000 && reader->typ == R_INTERNAL) { F = reader->mhz; } // for PLL based internal readers[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if ((reader->typ == R_SMART) || (!strcasecmp(reader->crdr.desc, "smargo"))) {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if (reader->autospeed == 1) {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t Fsmart = atr_fs_table[FI];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->mhz = Fsmart/10000;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->mhz >= 1600) { reader->mhz = 1600; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 1200) { reader->mhz = 1200; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 961) { reader->mhz = 961; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 800) { reader->mhz = 800; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 686) { reader->mhz = 686; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 600) { reader->mhz = 600; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 534) { reader->mhz = 534; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 480) { reader->mhz = 534; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 436) { reader->mhz = 436; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 400) { reader->mhz = 400; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 369) { reader->mhz = 369; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 357) { reader->mhz = 369; } // 357 not suported by smartreader[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->mhz >= 343) { reader->mhz = 343; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->mhz = 320; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] F = reader->mhz; } // all other readers[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->worketu = (double)((double)(1 / (double)D) * ((double)Fi / (double)((double)F / 100))); // expressed in us[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "Calculated work ETU is %.2f us reader mhz = %u", reader->worketu, reader->mhz);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //set timings according to ATR[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->read_timeout = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->block_delay = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->char_delay = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] switch(reader->protocol_type)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case ATR_PROTOCOL_TYPE_T0:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case ATR_PROTOCOL_TYPE_T14:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] /* Integer value WI = TC2, by default 10 */[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#ifndef PROTOCOL_T0_USE_DEFAULT_TIMINGS[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, 2, ATR_INTERFACE_BYTE_TC, &(wi)) != ATR_OK)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#endif[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] wi = DEFAULT_WI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] WWT = (uint32_t) 960 * D * wi; //in work ETU[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char tmpatr[7]; // this is card atr of conax with pairingecmrotation, they need some additional WWT time but this isnt in those ATRs[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmpatr[0] = 0x3B;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmpatr[1] = 0x24;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmpatr[2] = 0x00;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmpatr[3] = 0x30;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmpatr[4] = 0x42;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmpatr[5] = 0x30;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmpatr[6] = 0x30;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // WWT = (uint32_t) 960 * D * wi; //in work ETU[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if (!memcmp(reader->card_atr, tmpatr, sizeof(tmpatr))){ // check for conax pairingecmrotation card atr.[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] WWT = WWT * 600; // if found add some additional WWT time[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT = 2; // standard guardtime[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT += 1; // start bit[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT += 8; // databits[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT += 1; // parity bit[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(N != 255) //add extra Guard Time by ATR[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { EGT += N; } // T0 protocol, if TC1 = 255 then dont add extra guardtime[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->CWT = 0; // T0 protocol doesnt have char waiting time (used to detect errors within 1 single block of data)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->BWT = 0; // T0 protocol doesnt have block waiting time (used to detect unresponsive card, this is max time for starting a block answer)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "Protocol: T=%i, WWT=%u, Clockrate=%u", reader->protocol_type, WWT, F * 10000);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->read_timeout = WWT; // Work waiting time used in T0 (max time to signal unresponsive card!)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->char_delay = GT + EGT; // Character delay is used on T0[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "Setting timings: timeout=%u ETU, block_delay=%u ETU, char_delay=%u ETU",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->read_timeout, reader->block_delay, reader->char_delay);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] break;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] case ATR_PROTOCOL_TYPE_T1:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char ta, tb, tc, cwi, bwi;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Set IFSC[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, 3, ATR_INTERFACE_BYTE_TA, &ta) == ATR_NOT_FOUND)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->ifsc = DEFAULT_IFSC; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if((ta != 0x00) && (ta != 0xFF))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->ifsc = ta; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->ifsc = DEFAULT_IFSC; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //FIXME workaround for Smargo until native mode works[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->smargopatch == 1)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->ifsc = MIN(reader->ifsc, 28); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Towitoko and smartreaders dont allow IFSC > 251[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { reader->ifsc = MIN(reader->ifsc, MAX_IFSC); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#ifndef PROTOCOL_T1_USE_DEFAULT_TIMINGS[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Calculate CWI and BWI[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, 3, ATR_INTERFACE_BYTE_TB, &tb) == ATR_NOT_FOUND)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#endif[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] cwi = DEFAULT_CWI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] bwi = DEFAULT_BWI;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#ifndef PROTOCOL_T1_USE_DEFAULT_TIMINGS[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] cwi = tb & 0x0F;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] bwi = tb >> 4;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#endif[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Set CWT = 11+(2^CWI) work etu[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->CWT = (uint16_t) 11 + (1 << cwi); // in work ETU[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Set BWT = (2^BWI * 960 * 372 / clockspeed in mhz) us + 11*work etu[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Set BWT = (2^BWI * 960 * 372 / clockspeed in mhz) / worketu + 11[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->BWT = (uint32_t) ((1<<bwi) * 960 * 372 / (double)((double)F / 100) / (double) reader->worketu) + 11; // BWT in work ETU[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Set BGT = 22 * work etu[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] BGT = 22L; // Block Guard Time in ETU used to interspace between block responses[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT = 2; // standard guardtime[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT += 1; // start bit[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT += 8; // databits[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] GT += 1; // parity bit[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(N == 255)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { GT -= 1; } // special case, ATR says standard 2 etu guardtime is decreased by 1 (in ETU) EGT remains zero![/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { EGT += N; } // ATR says add extra guardtime (in ETU)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Set the error detection code type[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ATR_GetInterfaceByte(atr, 3, ATR_INTERFACE_BYTE_TC, &tc) == ATR_NOT_FOUND)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { edc = EDC_LRC; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { edc = tc & 0x01; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] // Set initial send sequence (NS)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->ns = 1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "Protocol: T=%i: IFSC=%d, CWT=%d etu, BWT=%d etu, BGT=%d etu, EDC=%s, N=%d",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->protocol_type, reader->ifsc,[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->CWT, reader->BWT,[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] BGT, (edc == EDC_LRC) ? "LRC" : "CRC", N);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->read_timeout = reader->BWT;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->block_delay = BGT;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->char_delay = GT + EGT;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_debug_mask(reader, D_ATR, "Setting timings: reader timeout=%u ETU, block_delay=%u ETU, char_delay=%u ETU",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->read_timeout, reader->block_delay, reader->char_delay);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] break;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] default:[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return ERROR;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] break;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }//switch[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] SetRightParity(reader); // some reader devices need to get set the right parity[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t ETU = Fi / D;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(atr->hbn >= 6 && !memcmp(atr->hb, "IRDETO", 6) && reader->protocol_type == ATR_PROTOCOL_TYPE_T14)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ETU = 0; // for Irdeto T14 cards, do not set ETU[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] reader->worketu *= 2; // overclocked T14 needs this otherwise high ecm reponses[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->crdr.write_settings)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.write_settings(reader, ETU, EGT, 5, I, (uint16_t) Fi, (unsigned char)D, N));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->crdr.write_settings2)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.write_settings2(reader, (uint16_t) Fi, (uint8_t) D, WWT, EGT, BGT));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else if(reader->crdr.write_settings3)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#if defined(__SH4__) || defined(STB04SCI)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] Fi = F/100; // workaround: SH4 internal reader needs base frequency like 1,2,3,4,5,6 Mhz not clock rate conversion factor (Fi)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#endif[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] call(reader->crdr.write_settings3(reader, ETU, Fi, WWT, reader->CWT, reader->BWT, EGT, (unsigned char)I));[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->typ == R_INTERNAL)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->cardmhz > 2000)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "PLL Reader: ATR Fsmax is %i MHz, clocking card to %.2f Mhz (nearest possible mhz specified reader->cardmhz)",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] atr_fs_table[FI] / 1000000, (float) reader->mhz / 100);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "ATR Fsmax is %i MHz, clocking card to %.2f (specified in reader->mhz)",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] atr_fs_table[FI] / 1000000, (float) reader->mhz / 100);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if ((reader->typ == R_SMART) && (reader->autospeed == 1))[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "ATR Fsmax is %i MHz, clocking card to atr Fsmax for smartreader cardspeed off %.2f MHz (specified in reader->mhz)",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] atr_fs_table[FI] / 1000000, (float) reader->mhz / 100);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] rdr_log(reader, "ATR Fsmax is %i MHz, clocking card to wanted user cardspeed off %.2f MHz (specified in reader->mhz)",[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] atr_fs_table[FI] / 1000000, (float) reader->mhz / 100);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] //Communicate to T1 card IFSD -> we use same as IFSC[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(reader->protocol_type == ATR_PROTOCOL_TYPE_T1 && reader->ifsc != DEFAULT_IFSC && !reader->crdr.skip_setting_ifsc)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] {[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char rsp[CTA_RES_LEN];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint16_t lr = 0;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] int32_t ret;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char tmp[] = { 0x21, 0xC1, 0x01, 0x00, 0x00 };[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmp[3] = reader->ifsc; // Information Field size[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] tmp[4] = reader->ifsc ^ 0xE1;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] ret = Protocol_T1_Command(reader, tmp, sizeof(tmp), rsp, &lr);[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] if(ret != OK) { rdr_log(reader, "Warning: Card returned error on setting ifsd value to %d", reader->ifsc); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] else { rdr_log(reader, "Card responded ok for ifsd request of %d", reader->ifsc); }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return OK;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]static unsigned char PPS_GetPCK(unsigned char *block, uint32_t length)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]{[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] unsigned char pck;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] uint32_t i;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] pck = block[0];[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] for(i = 1; i < length; i++)[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] { pck ^= block; }[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD][/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD] return pck;[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]}[/TD]
[/TR]
[TR]
[TH="bgcolor: #EEEEDD, align: right"]
Sie müssen registriert sein, um Links zu sehen.
[/TH]
[TD]#endif[/TD]
[/TR]
[/TABLE]