Changeset 969 for trunk/src/ifd
- Timestamp:
- 06/21/07 09:41:53 (5 years ago)
- File:
-
- 1 edited
-
trunk/src/ifd/ifd-ccid.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ifd/ifd-ccid.c
r964 r969 450 450 unsigned char recvbuf[CCID_MAX_MSG_LEN + 1]; 451 451 int r; 452 unsigned char ctlbuf[3], *ctlptr=0; 453 454 ctlptr=NULL; 455 if (st->reader_type == TYPE_CHAR) { 456 ctlbuf[0] = 0; 457 ctlbuf[1] = rlen & 0xff; 458 ctlbuf[2] = (rlen >> 8) & 0xff; 459 ctlptr = ctlbuf; 460 } 452 461 453 462 r = ccid_prepare_cmd(reader, sendbuf, st->maxmsg, 454 slot, CCID_CMD_XFRBLOCK, NULL, sbuf, slen);463 slot, CCID_CMD_XFRBLOCK, ctlptr, sbuf, slen); 455 464 if (r < 0) 456 465 return r; … … 695 704 st->ifsd = ccid.dwMaxIFSD; 696 705 697 if (st->reader_type == TYPE_CHAR) {698 ct_error("ccid: Character mode readers not supported");699 free(st);700 ifd_device_close(dev);701 return -1;702 }703 704 706 /* must provide AUTO or at least one of 5/3.3/1.8 */ 705 707 if (st->voltage_support == 0) { … … 1119 1121 } 1120 1122 r = ccid_exchange(reader, s, pts, ptslen, ptsret, 1121 sizeof(ptsret));1123 ptslen); 1122 1124 if (r < 0) 1123 1125 return r; … … 1131 1133 memset(¶mbuf[r], 0, sizeof(parambuf) - r); 1132 1134 if (proto == IFD_PROTOCOL_T0) { 1133 p = ifd_protocol_new(IFD_PROTOCOL_TRANSPARENT, 1134 reader, slot->dad); 1135 if (st->reader_type == TYPE_CHAR) { 1136 p = ifd_protocol_new(proto, 1137 reader, slot->dad); 1138 } else { 1139 p = ifd_protocol_new(IFD_PROTOCOL_TRANSPARENT, 1140 reader, slot->dad); 1141 } 1135 1142 } else { 1136 1143 p = ifd_protocol_new(proto, reader, slot->dad); … … 1156 1163 return -1; 1157 1164 } 1165 /* ccid_recv needs to know the exact expected data length */ 1166 if (st->reader_type == TYPE_CHAR) 1167 ifd_protocol_set_parameter(p, IFD_PROTOCOL_BLOCK_ORIENTED, 0); 1158 1168 if (slot->proto) { 1159 1169 ifd_protocol_free(slot->proto); … … 1238 1248 st->sbuf[dad] = NULL; 1239 1249 st->slen[dad] = 0; 1250 if (r < 0) 1251 ifd_debug(3, "failed: %d", r); 1240 1252 return r; 1241 1253 }
Note: See TracChangeset
for help on using the changeset viewer.
