- Timestamp:
- 01/11/10 12:43:42 (14 years ago)
- Location:
- trunk/csctapi
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/csctapi/icc_async.c
r1182 r1183 266 266 } 267 267 268 #ifdef COOL269 extern unsigned char cardbuffer[255];270 extern int cardbuflen;271 #endif272 273 268 int ICC_Async_Transmit (ICC_Async * icc, unsigned size, BYTE * data) 274 269 { … … 292 287 293 288 #ifdef COOL 294 //transmit buffer to SC and put answer in cardbuffer295 289 if (icc->ifd->io->com == RTYP_SCI) { 296 #define TIMEOUT 4000 //max 4294 297 cardbuflen = 256;//it needs to know max buffer size to respond? 298 if (cnxt_smc_read_write(handle, FALSE, sent, size, cardbuffer, &cardbuflen, TIMEOUT, 0)) 299 return ICC_ASYNC_IFD_ERROR; 300 301 #ifdef DEBUG_IFD 302 //usually done in IFD_Towitoko, for COOL do it here 303 printf ("COOLIFD: Transmit: "); 304 int i; 305 for (i = 0; i < size; i++) 306 printf ("%X ", sent[i]); 307 printf ("\n"); 308 #endif 309 } 310 else 311 #else 290 if (!Cool_Transmit(sent, size)) 291 return ICC_ASYNC_IFD_ERROR; 292 } 293 else 294 #endif 312 295 if (IFD_Towitoko_Transmit (icc->ifd, &timings, size, sent) != IFD_TOWITOKO_OK) 313 296 return ICC_ASYNC_IFD_ERROR; 314 #endif315 297 316 298 if (icc->convention == ATR_CONVENTION_INVERSE) … … 328 310 329 311 #ifdef COOL 330 //receive buffer to SC 331 if (size > cardbuflen) 332 size = cardbuflen; //never read past end of buffer 333 memcpy(data,cardbuffer,size); 334 cardbuflen -= size; 335 memmove(cardbuffer,cardbuffer+size,cardbuflen); 336 337 #ifdef DEBUG_IFD 338 int i; 339 printf ("COOLIFD: Receive: "); //I think 340 for (i = 0; i < size; i++) 341 printf ("%X ", data[i]); 342 printf ("\n"); 343 fflush(stdout); 344 #endif 345 return ICC_ASYNC_OK; 312 if (icc->ifd->io->com == RTYP_SCI) { 313 if (!Cool_Receive(data, size)) 314 return ICC_ASYNC_IFD_ERROR; 315 } 316 else 346 317 #else 347 318 if (IFD_Towitoko_Receive (icc->ifd, &timings, size, data) != IFD_TOWITOKO_OK) -
trunk/csctapi/ifd_cool.c
r1182 r1183 7 7 #include <stdio.h> 8 8 #include <time.h> 9 #include <string.h> 9 10 #include"ifd_cool.h" 10 11 // all other IFD_Towitoko functions should be12 // -eliminated (like SetLed or administrative jobs)13 // -rewritten eg. setparity should become a call to getproperties, setproperties14 // ActivateICC should call ResetICC automagically15 // DeactivateICC for symmetry and cleanup16 //17 11 18 12 #define OK 1 … … 53 47 //state = 0 no card, 1 = not ready, 2 = ready 54 48 if (state) 55 49 *in = 1; //CARD, even if not ready report card is in, or it will never get activated 56 50 else 57 51 *in = 0; //NOCARD … … 61 55 int Cool_Reset (ATR ** atr) 62 56 { 63 //Cool_Reset(atr); 64 //reset needs clock to be reset by hand 65 typedef unsigned long u_int32; 66 u_int32 clk; 67 clk = 357*10000; // MHZ 68 if (cnxt_smc_set_clock_freq(handle, clk)) 57 if (!Cool_SetBaudrate(357)) 69 58 return ERROR; 70 59 … … 95 84 } 96 85 } 97 /*98 int Cool_DeactivateICC ()99 {100 #ifdef DEBUG_IFD101 printf ("IFD: Deactivating card\n");102 #endif103 /*104 int in;105 106 #if defined(TUXBOX) && (defined(MIPSEL) || defined(PPC) || defined(SH4))107 if(ioctl(ifd->io->fd, IOCTL_GET_IS_CARD_PRESENT, &in)<0)108 #else109 if(ioctl(ifd->io->fd, IOCTL_GET_IS_CARD_ACTIVATED, &in)<0)110 #endif111 return IFD_TOWITOKO_IO_ERROR;112 113 if(in)114 {115 if(ioctl(ifd->io->fd, IOCTL_SET_DEACTIVATE)<0)116 return IFD_TOWITOKO_IO_ERROR;117 }118 */119 /*120 return OK;121 }122 */123 86 124 87 int Cool_Transmit (BYTE * sent, unsigned size) … … 126 89 #define TIMEOUT 4000 //max 4294 127 90 cardbuflen = 256;//it needs to know max buffer size to respond? 128 int rc = cnxt_smc_read_write(handle, FALSE, sent, size, cardbuffer, &cardbuflen, TIMEOUT, 0); 91 if (cnxt_smc_read_write(handle, FALSE, sent, size, cardbuffer, &cardbuflen, TIMEOUT, 0)) 92 return ERROR; 129 93 130 94 #ifdef DEBUG_IFD … … 136 100 printf ("\n"); 137 101 #endif 138 139 //FIXME implement rc 102 return OK; 140 103 } 141 104 142 int Cool_Receive (BYTE * buffer, unsigned size) 143 { //receive buffer to SC 144 //memcpy(buffer,cardbuffer,cardbuflen); 145 //size = cardbuflen; 105 int Cool_Receive (BYTE * data, unsigned size) 106 { 107 if (size > cardbuflen) 108 size = cardbuflen; //never read past end of buffer 109 memcpy(data,cardbuffer,size); 110 cardbuflen -= size; 111 memmove(cardbuffer,cardbuffer+size,cardbuflen); 146 112 147 113 #ifdef DEBUG_IFD 148 114 int i; 149 printf (" IFD: Receive: "); //I think115 printf ("COOLIFD: Receive: "); //I think 150 116 for (i = 0; i < size; i++) 151 printf ("%X ", buffer[i]);117 printf ("%X ", data[i]); 152 118 printf ("\n"); 119 fflush(stdout); 153 120 #endif 154 155 121 return OK; 156 122 } … … 160 126 typedef unsigned long u_int32; 161 127 u_int32 clk; 162 //clk = 357 * 10000; // MHZ 163 clk = mhz * 10000; // MHZ 128 clk = mhz * 10000; 164 129 if (cnxt_smc_set_clock_freq (handle, clk)) 165 130 return ERROR; -
trunk/csctapi/pps.c
r1171 r1183 471 471 #elif COOL 472 472 if(pps->icc->ifd->io->com==RTYP_SCI) { 473 typedef unsigned long u_int32; 474 u_int32 clk; 475 clk = atr_fs_table[pps->parameters.FI]; 476 if (cnxt_smc_set_clock_freq(handle, clk)) 477 return ICC_ASYNC_IFD_ERROR; 478 #ifdef DEBUG_PROTOCOL 479 printf("Coolstream: set clock to %lu Hz\n", clk); 480 #endif 481 return ICC_ASYNC_OK; 473 int mhz = atr_fs_table[pps->parameters.FI] / 10000; 474 if (!Cool_SetBaudrate(mhz)) 475 return PPS_ICC_ERROR; 476 #ifdef DEBUG_PROTOCOL 477 printf("Coolstream: set clock to %i * 10kHz\n", mhz); 478 #endif 479 return PPS_OK; 482 480 } 483 481 else
Note:
See TracChangeset
for help on using the changeset viewer.