Changeset 4651
- Timestamp:
- 01/29/11 23:59:25 (13 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/csctapi/ifd_smargo.c
r4640 r4651 19 19 #define HIBYTE(w) ((BYTE)((w) >> 8)) 20 20 21 #define DELAY 5021 #define DELAY 150 22 22 23 23 static int smargo_set_settings(struct s_reader *reader, int freq, unsigned char T, unsigned char inv, unsigned short Fi, unsigned char Di, unsigned char Ni) { … … 32 32 tcsetattr(reader->handle, TCSANOW, &term); 33 33 34 cs_sleepms(DELAY); 35 34 36 cs_debug_mask(D_DEVICE, "Smargo: sending F=%04X (%d), D=%02X (%d), Freq=%04X (%d), N=%02X (%d), T=%02X (%d), inv=%02X (%d) to smartreader",Fi, Fi, Di, Di, freqk, freqk, Ni, Ni, T, T, inv, inv); 35 37 … … 40 42 data[3]=Di; 41 43 ret = IO_Serial_Write(reader, 0, 4, data); 42 43 cs_sleepms(DELAY);44 44 } 45 45 … … 49 49 ret = IO_Serial_Write(reader, 0, 3, data); 50 50 51 cs_sleepms(DELAY);52 53 51 data[0]=0x03; 54 52 data[1]=Ni; 55 53 ret = IO_Serial_Write(reader, 0, 2, data); 56 54 57 cs_sleepms(DELAY);58 59 55 data[0]=0x04; 60 56 data[1]=T; 61 57 ret = IO_Serial_Write(reader, 0, 2, data); 62 63 cs_sleepms(DELAY);64 58 65 59 data[0]=0x05; … … 94 88 } 95 89 90 bool IO_Serial_WaitToRead (struct s_reader * reader, unsigned delay_ms, unsigned timeout_ms); 91 int smargo_Serial_Read(struct s_reader * reader, unsigned timeout, unsigned size, BYTE * data, int *read_bytes) 92 { 93 BYTE c; 94 uint count = 0; 95 96 for (count = 0; count < size ; count++) 97 { 98 if (!IO_Serial_WaitToRead (reader, 0, timeout)) 99 { 100 if (read (reader->handle, &c, 1) != 1) 101 { 102 cs_ddump_mask(D_DEVICE, data, count, "IO: Receiving:"); 103 cs_log("ERROR in smargo_Serial_Read errno=%d", errno); 104 return ERROR; 105 } 106 } 107 else 108 { 109 cs_ddump_mask(D_DEVICE, data, count, "IO: Receiving:"); 110 cs_debug_mask(D_DEVICE, "TIMEOUT in IO_Serial_Read"); 111 *read_bytes=count; 112 return ERROR; 113 } 114 data[count] = c; 115 } 116 cs_ddump_mask(D_DEVICE, data, count, "IO: Receiving:"); 117 return OK; 118 } 119 120 96 121 static int smargo_reset(struct s_reader *reader, ATR *atr) { 97 122 cs_debug_mask(D_IFD, "Smargo: Resetting card:"); … … 115 140 call (IO_Serial_SetParity (reader, parity[i])); 116 141 117 IO_Serial_Flush(reader); 142 //IO_Serial_Flush(reader); 143 144 IO_Serial_Read(reader, 500, ATR_MAX_SIZE, buf); 118 145 119 146 IO_Serial_RTS_Set(reader); … … 122 149 123 150 int n=0; 124 while(n<ATR_MAX_SIZE && !IO_Serial_Read(reader, ATR_TIMEOUT, 1, buf+n)) 125 n++; 151 //while(n<ATR_MAX_SIZE && !IO_Serial_Read(reader, ATR_TIMEOUT, 1, buf+n)) 152 // n++; 153 154 smargo_Serial_Read(reader, ATR_TIMEOUT, ATR_MAX_SIZE, buf, &n); 126 155 127 156 if(n==0 || buf[0]==0) 128 157 continue; 129 158 130 cs_ddump_mask(D_IFD, buf, n, "Smargo ATR: ");159 cs_ddump_mask(D_IFD, buf, n, "Smargo ATR: %d bytes", n); 131 160 132 161 if((buf[0]!=0x3B && buf[0]!=0x03 && buf[0]!=0x3F) || (buf[1]==0xFF && buf[2]==0x00)) -
trunk/csctapi/io_serial.c
r4640 r4651 60 60 static int IO_Serial_Bitrate(int bitrate); 61 61 62 staticbool IO_Serial_WaitToRead (struct s_reader * reader, unsigned delay_ms, unsigned timeout_ms);62 bool IO_Serial_WaitToRead (struct s_reader * reader, unsigned delay_ms, unsigned timeout_ms); 63 63 64 64 static bool IO_Serial_WaitToWrite (struct s_reader * reader, unsigned delay_ms, unsigned timeout_ms); … … 620 620 } 621 621 622 staticbool IO_Serial_WaitToRead (struct s_reader * reader, unsigned delay_ms, unsigned timeout_ms)622 bool IO_Serial_WaitToRead (struct s_reader * reader, unsigned delay_ms, unsigned timeout_ms) 623 623 { 624 624 fd_set rfds; -
trunk/reader-conax.c
r4582 r4651 191 191 192 192 for (i = 0; i < rdr->nprov; i++) { 193 ok = (!memcmp(&ep->emm[6], rdr->sa[i], 4)); 193 if (rdr->typ == R_CAMD35 || rdr->typ == R_CS378X) // camd35 is only sending 3 bytes of sa 194 ok = (!memcmp(&ep->emm[6], rdr->sa[i], 3)); 195 else 196 ok = (!memcmp(&ep->emm[6], rdr->sa[i], 4)); 194 197 if (ok) break; 195 198 } … … 239 242 filter[38+8] = 0x70; 240 243 filter[38+8+16] = 0xFF; 241 memcpy(filter+38+4, rdr->sa[0], 4); 242 memset(filter+38+4+16, 0xFF, 4); 244 if (rdr->typ == R_CAMD35 || rdr->typ == R_CS378X) { 245 memcpy(filter+38+4, rdr->sa[0], 3); 246 memset(filter+38+4+16, 0xFF, 3); 247 } else { 248 memcpy(filter+38+4, rdr->sa[0], 4); 249 memset(filter+38+4+16, 0xFF, 4); 250 } 243 251 244 252 filter[70]=UNIQUE;
Note:
See TracChangeset
for help on using the changeset viewer.