/[pcsclite]/trunk/Drivers/ccid/src/ccid_serial.c
ViewVC logotype

Diff of /trunk/Drivers/ccid/src/ccid_serial.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 607 by rousseau, Mon Sep 22 14:24:26 2003 UTC revision 608 by rousseau, Thu Jan 15 08:30:31 2004 UTC
# Line 154  status_t WriteSerial(int lun, int length Line 154  status_t WriteSerial(int lun, int length
154    
155          if (length > GEMPCTWIN_MAXBUF-3)          if (length > GEMPCTWIN_MAXBUF-3)
156          {          {
157                  DEBUG_CRITICAL3("WriteSerial: command too long: %d for max %d",                  DEBUG_CRITICAL3("command too long: %d for max %d",
158                          length, GEMPCTWIN_MAXBUF-3);                          length, GEMPCTWIN_MAXBUF-3);
159                  return STATUS_UNSUCCESSFUL;                  return STATUS_UNSUCCESSFUL;
160          }          }
# Line 179  status_t WriteSerial(int lun, int length Line 179  status_t WriteSerial(int lun, int length
179          if (write(serialDevice[LunToReaderIndex(lun)].fd, low_level_buffer,          if (write(serialDevice[LunToReaderIndex(lun)].fd, low_level_buffer,
180                  length+3) != length+3)                  length+3) != length+3)
181          {          {
182                  DEBUG_CRITICAL2("WriteSerial: write error: %s", strerror(errno));                  DEBUG_CRITICAL2("write error: %s", strerror(errno));
183                  return STATUS_UNSUCCESSFUL;                  return STATUS_UNSUCCESSFUL;
184          }          }
185    
# Line 316  int get_bytes(int lun, unsigned char *bu Line 316  int get_bytes(int lun, unsigned char *bu
316          int offset = serialDevice[LunToReaderIndex(lun)].buffer_offset;          int offset = serialDevice[LunToReaderIndex(lun)].buffer_offset;
317          int offset_last = serialDevice[LunToReaderIndex(lun)].buffer_offset_last;          int offset_last = serialDevice[LunToReaderIndex(lun)].buffer_offset_last;
318    
319          DEBUG_COMM3("get_bytes: available: %d, needed: %d", offset_last-offset,          DEBUG_COMM3("available: %d, needed: %d", offset_last-offset,
320                  length);                  length);
321          /* enough data are available */          /* enough data are available */
322          if (offset + length <= offset_last)          if (offset + length <= offset_last)
323          {          {
324                  DEBUG_COMM("get_bytes: data available");                  DEBUG_COMM("data available");
325                  memcpy(buffer, serialDevice[LunToReaderIndex(lun)].buffer + offset, length);                  memcpy(buffer, serialDevice[LunToReaderIndex(lun)].buffer + offset, length);
326                  serialDevice[LunToReaderIndex(lun)].buffer_offset += length;                  serialDevice[LunToReaderIndex(lun)].buffer_offset += length;
327          }          }
# Line 334  int get_bytes(int lun, unsigned char *bu Line 334  int get_bytes(int lun, unsigned char *bu
334    
335                  if (present > 0)                  if (present > 0)
336                  {                  {
337                          DEBUG_COMM2("get_bytes: some data available: %d", present);                          DEBUG_COMM2("some data available: %d", present);
338                          memcpy(buffer, serialDevice[LunToReaderIndex(lun)].buffer + offset,                          memcpy(buffer, serialDevice[LunToReaderIndex(lun)].buffer + offset,
339                                  present);                                  present);
340                  }                  }
341    
342                  /* get fresh data */                  /* get fresh data */
343                  DEBUG_COMM2("get_bytes: get more data: %d", length - present);                  DEBUG_COMM2("get more data: %d", length - present);
344                  rv = ReadChunk(lun, serialDevice[LunToReaderIndex(lun)].buffer, sizeof(serialDevice[LunToReaderIndex(lun)].buffer), length - present);                  rv = ReadChunk(lun, serialDevice[LunToReaderIndex(lun)].buffer, sizeof(serialDevice[LunToReaderIndex(lun)].buffer), length - present);
345                  if (rv < 0)                  if (rv < 0)
346                          return STATUS_COMM_ERROR;                          return STATUS_COMM_ERROR;
# Line 350  int get_bytes(int lun, unsigned char *bu Line 350  int get_bytes(int lun, unsigned char *bu
350                          length - present);                          length - present);
351                  serialDevice[LunToReaderIndex(lun)].buffer_offset = length - present;                  serialDevice[LunToReaderIndex(lun)].buffer_offset = length - present;
352                  serialDevice[LunToReaderIndex(lun)].buffer_offset_last = rv;                  serialDevice[LunToReaderIndex(lun)].buffer_offset_last = rv;
353                  DEBUG_COMM3("get_bytes: offset: %d, last_offset: %d",                  DEBUG_COMM3("offset: %d, last_offset: %d",
354                          serialDevice[LunToReaderIndex(lun)].buffer_offset,                          serialDevice[LunToReaderIndex(lun)].buffer_offset,
355                          serialDevice[LunToReaderIndex(lun)].buffer_offset_last);                          serialDevice[LunToReaderIndex(lun)].buffer_offset_last);
356          }          }
# Line 411  int ReadChunk(int lun, unsigned char *bu Line 411  int ReadChunk(int lun, unsigned char *bu
411  #endif  #endif
412    
413                  already_read += rv;                  already_read += rv;
414                  DEBUG_COMM3("ReadChunk, read: %d, to read: %d", already_read,                  DEBUG_COMM3("read: %d, to read: %d", already_read,
415                          min_length);                          min_length);
416          }          }
417    
# Line 431  status_t OpenSerial(int lun, int channel Line 431  status_t OpenSerial(int lun, int channel
431          int i;          int i;
432          int reader = LunToReaderIndex(lun);          int reader = LunToReaderIndex(lun);
433    
434          DEBUG_COMM3("OpenSerial: Lun: %X, Channel: %d", lun, channel);          DEBUG_COMM3("Lun: %X, Channel: %d", lun, channel);
435    
436          /*          /*
437           * Conversion of old-style ifd-hanler 1.0 CHANNELID           * Conversion of old-style ifd-hanler 1.0 CHANNELID

Legend:
Removed from v.607  
changed lines
  Added in v.608

  ViewVC Help
Powered by ViewVC 1.1.5