Changeset 1303 for branches/smartreader/csctapi/ifd_smartreader.c
- Timestamp:
- 01/20/10 15:51:11 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/smartreader/csctapi/ifd_smartreader.c
r1297 r1303 1 #ifdef HAVE_LIBUSB 2 #ifdef USE_PTHREAD 1 #if defined(HAVE_LIBUSB) && defined(USE_PTHREAD) 3 2 /* 4 3 ifd_smartreader.c … … 29 28 ftdic.out_ep = 0x82; 30 29 30 31 31 //open the first smartreader if found by find_smartreader 32 32 if ((ret = ftdi_usb_open(&ftdic, 0x0403, 0x6001)) < 0) { 33 cs_log("unable to open ftdi device: %d (%s) \n", ret, ftdi_get_error_string(&ftdic));33 cs_log("unable to open ftdi device: %d (%s)", ret, ftdi_get_error_string(&ftdic)); 34 34 return ERROR; 35 35 } … … 47 47 ftdi_setflowctrl(&ftdic, 0); 48 48 49 // star the reading thread 50 g_read_buffer_size = 0; 51 pthread_mutex_init(&g_read_mutex,NULL); 52 pthread_mutex_init(&g_usb_mutex,NULL); 49 53 ret = pthread_create(&rt, NULL, ReaderThread, (void *)&ftdic); 50 54 if (ret) { 51 cs_log("ERROR; return code from pthread_create() is %d \n", ret);55 cs_log("ERROR; return code from pthread_create() is %d", ret); 52 56 return ERROR; 53 57 } … … 133 137 134 138 sr_config.fs=mhz*1000; //freq in KHz 135 EnableSmartReader(&ftdic, sr_config.fs, sr_config.F, sr_config.D, sr_config.N, sr_config.inv);139 EnableSmartReader(&ftdic, sr_config.fs, sr_config.F, (BYTE)sr_config.D, sr_config.N, sr_config.inv); 136 140 137 141 return OK; … … 147 151 148 152 if (ftdi_init(ftdic) < 0) { 149 fprintf(stderr, "ftdi_init failed\n");153 cs_log("ftdi_init failed"); 150 154 return ERROR; 151 155 } … … 153 157 if ((ret = ftdi_usb_find_all(ftdic, &devlist, 0x0403, 0x6001)) < 0) 154 158 { 155 fprintf(stderr, "ftdi_usb_find_all failed: %d (%s)\n", ret, ftdi_get_error_string(ftdic));156 return ERROR; 157 } 158 159 printf("Number of FTDI devices found: %d\n", ret);160 159 cs_log( "ftdi_usb_find_all failed: %d (%s)", ret, ftdi_get_error_string(ftdic)); 160 return ERROR; 161 } 162 #ifdef DEBUG_IO 163 cs_log("Number of FTDI devices found: %d", ret); 164 #endif 161 165 i = 0; 162 166 dev_found=FALSE; 163 167 for (curdev = devlist; curdev != NULL; i++) 164 168 { 165 printf("Checking device: %d\n", i); 166 if ((ret = ftdi_usb_get_strings(ftdic, curdev->dev, manufacturer, 128, description, 128, NULL, 0)) < 0)167 {168 fprintf(stderr, "ftdi_usb_get_strings failed: %d (%s)\n", ret, ftdi_get_error_string(ftdic));169 #ifdef DEBUG_IO 170 cs_log("Checking device: %d", i); 171 if ((ret = ftdi_usb_get_strings(ftdic, curdev->dev, manufacturer, 128, description, 128, NULL, 0)) < 0) { 172 cs_log( "ftdi_usb_get_strings failed: %d (%s)", ret, ftdi_get_error_string(ftdic)); 169 173 return ERROR; 170 174 } 171 printf("Manufacturer: %s, Description: %s\n\n", manufacturer, description); 175 cs_log("Manufacturer: %s, Description: %s", manufacturer, description); 176 #endif 172 177 if (i==index) 173 178 { 174 printf("Found device index %d\n",i); 179 #ifdef DEBUG_IO 180 cs_log("Found device index %d",i); 181 #endif 175 182 dev_found=TRUE; 176 183 break; … … 183 190 if(!dev_found) 184 191 { 185 printf("Device not found\n");192 cs_log("Smartreader device number %d not found",index); 186 193 187 194 ftdi_deinit(ftdic); … … 238 245 int ret = 0; 239 246 int idx; 240 printf("write: "); 241 hexdump(buff, size, 0); 242 247 248 #ifdef DEBUG_IO 243 249 struct timeval start, stop, taken; 244 250 gettimeofday(&start, NULL); 251 #endif 245 252 246 253 if (udelay == 0) { … … 261 268 } 262 269 270 #ifdef DEBUG_IO 263 271 gettimeofday(&stop, NULL); 264 272 timersub(&stop, &start, &taken); 265 printf(" took %u.000%u seconds\n", (unsigned int) taken.tv_sec, (unsigned int) taken.tv_usec); 273 cs_log(" took %u.000%u seconds", (unsigned int) taken.tv_sec, (unsigned int) taken.tv_usec); 274 #endif 266 275 return ret; 267 276 } … … 316 325 317 326 smart_flush(ftdic); 318 EnableSmartReader(ftdic, 3571200, 372, 1, 0, 0); 327 319 328 // set smartreader+ default values 320 329 sr_config.F=372; … … 324 333 sr_config.T=0; 325 334 sr_config.inv=0; 335 EnableSmartReader(ftdic, sr_config.fs, sr_config.F, (BYTE)sr_config.D, sr_config.N, sr_config.inv); 326 336 327 337 } … … 333 343 bool running = TRUE; 334 344 int ret; 345 int copy_size; 335 346 unsigned char local_buffer[64]; //64 is max transfer size of FTDI bulk pipe 336 347 … … 350 361 pthread_yield_np(); 351 362 352 if(ret>2) { //FTDI always sends modem status bytes as first 2 chars with the 232BM363 if(ret>2) { //FTDI always sends modem status bytes as first 2 chars with the 232BM 353 364 pthread_mutex_lock(&g_read_mutex); 354 365 355 intcopy_size = sizeof(g_read_buffer) - g_read_buffer_size > ret-2 ?ret-2: sizeof(g_read_buffer) - g_read_buffer_size;366 copy_size = sizeof(g_read_buffer) - g_read_buffer_size > ret-2 ?ret-2: sizeof(g_read_buffer) - g_read_buffer_size; 356 367 memcpy(g_read_buffer+g_read_buffer_size,local_buffer+2,copy_size); 357 368 g_read_buffer_size += copy_size; 358 //printf("Transferred %u bytes to read buffer - current buffer = ",copy_size); hexdump(g_read_buffer,g_read_buffer_size); printf("\n");359 369 pthread_mutex_unlock(&g_read_mutex); 360 }else{ 370 } 371 else { 361 372 //sleep for 50ms since there was nothing to read last time 362 373 usleep(50000); … … 367 378 } 368 379 369 #endif // USE_PTHREAD 370 #endif //HAVE_LIBUSB 380 #endif // HAVE_LIBUSB && USE_PTHREAD
Note:
See TracChangeset
for help on using the changeset viewer.