Changeset 1394
- Timestamp:
- 02/01/10 19:59:09 (14 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/csctapi/config.h
r1389 r1394 1 /* config.h. Generated by configure. */2 /* config.h.in. Generated from configure.ac by autoheader. */3 4 1 #include "../oscam-config.h" 5 6 /* Debug CT-API */7 /* #undef DEBUG_CTAPI */8 // #define DEBUG_CTAPI 19 10 /* Debug Integrated Circuit Card */11 /* #undef DEBUG_ICC */12 // #define DEBUG_ICC 113 2 14 3 /* Debug Interface Device */ … … 16 5 //#define DEBUG_IFD 1 17 6 18 /* Debug IFD Handler */19 /* #undef DEBUG_IFDH */20 //#define DEBUG_IFDH 121 22 /* Debug Input/Output */23 7 /* #undef DEBUG_IO */ 24 8 // #define DEBUG_IO 1 … … 32 16 33 17 //#define PROTOCOL_T0_ISO 1 34 //#define PROTOCOL_T1_ISO 135 36 37 /* Define to 1 if you have the <dlfcn.h> header file. */38 #define HAVE_DLFCN_H 139 40 /* Define to 1 if you have the <inttypes.h> header file. */41 #define HAVE_INTTYPES_H 142 43 /* Define to 1 if you have the <memory.h> header file. */44 #define HAVE_MEMORY_H 145 18 46 19 /* Define to 1 if you have the `nanosleep' function. */ … … 48 21 #define HAVE_NANOSLEEP 1 49 22 #endif 50 51 /* Define to 1 if you have the `poll' function. */52 #define HAVE_POLL 153 54 /* Define to 1 if you have the <pthread.h> header file. */55 //#define HAVE_PTHREAD_H 156 57 /* Define to 1 if you have the <stdint.h> header file. */58 #define HAVE_STDINT_H 159 60 /* Define to 1 if you have the <stdlib.h> header file. */61 #define HAVE_STDLIB_H 162 63 /* Define to 1 if you have the <strings.h> header file. */64 #define HAVE_STRINGS_H 165 66 /* Define to 1 if you have the <string.h> header file. */67 #define HAVE_STRING_H 168 69 /* Define to 1 if you have the `syslog' function. */70 #define HAVE_SYSLOG 171 72 /* Define to 1 if you have the <sys/stat.h> header file. */73 #define HAVE_SYS_STAT_H 174 75 /* Define to 1 if you have the <sys/time.h> header file. */76 #define HAVE_SYS_TIME_H 177 78 /* Define to 1 if you have the <sys/types.h> header file. */79 #define HAVE_SYS_TYPES_H 180 81 /* Define to 1 if you have the <unistd.h> header file. */82 #define HAVE_UNISTD_H 183 84 /* Memory size */85 /* #undef ICC_SYNC_MEMORY_LENGTH */86 87 /* Memory smartcard type (0,1,2,3) */88 /* #undef ICC_SYNC_MEMORY_TYPE */89 90 /* ATR for asynchronous cards is cheked */91 #define IFD_TOWITOKO_STRICT_ATR_CHECK 192 93 /* Enable Linux 2.4.X devfs support */94 /* #undef IO_ENABLE_DEVFS */95 #define IO_ENABLE_DEVFS 196 97 /* Enable /dev/pcsc/ links */98 /* #undef IO_ENABLE_DEVPCSC */99 100 /* Enable USB support */101 //#define IO_ENABLE_USB 1102 103 /* FreeBSD Operating System */104 /* #undef OS_AIX */105 106 /* Cywin32 for Windows NT environment */107 //#define OS_CYGWIN32 1108 109 /* FreeBSD Operating System */110 /* #undef OS_FREEBSD */111 112 /* HPUX Operating System */113 /* #undef OS_HPUX */114 115 /* IRIX Operating System */116 /* #undef OS_IRIX */117 118 /* Linux Operating System */119 //#define OS_LINUX 1120 121 /* FreeBSD Operating System */122 /* #undef OS_NETBSD */123 124 /* OpenBSD Operating System */125 /* #undef OS_OPENBSD */126 127 /* Other Operating System */128 /* #undef OS_OTHER */129 130 /* SCO Operating System */131 /* #undef OS_SCO */132 133 /* Sun Operating System */134 /* #undef OS_SOLARIS */135 136 /* Name of package */137 #define PACKAGE "towitoko"138 139 /* Define to the address where bug reports for this package should be sent. */140 #define PACKAGE_BUGREPORT ""141 142 /* Define to the full name of this package. */143 #define PACKAGE_NAME ""144 145 /* Define to the full name and version of this package. */146 #define PACKAGE_STRING ""147 148 /* Define to the one symbol short name of this package. */149 #define PACKAGE_TARNAME ""150 151 /* Define to the version of this package. */152 #define PACKAGE_VERSION ""153 23 154 24 /* Transportation of APDUs by T=0 */ … … 161 31 /* #undef PROTOCOL_T1_USE_DEFAULT_TIMINGS */ 162 32 163 /* Timings in ATR are not used after PTS */164 /* #undef PTS_USE_DEFAULT_TIMINGS */165 166 /* Define to 1 if you have the ANSI C header files. */167 #define STDC_HEADERS 1168 169 /* Version number of package */170 #define VERSION "2.0.7"171 172 /* This may be usefull for LinuxThreads */173 #define _REENTRANT 1 -
trunk/csctapi/icc_async.c
r1391 r1394 82 82 { 83 83 wr = 0; 84 #ifdef DEBUG_IO 85 printf ("IO: Opening serial port %s\n", reader[ridx].device); 86 #endif 84 cs_debug ("IFD: Opening serial port %s\n", reader[ridx].device); 87 85 88 86 #if defined(SCI_DEV) || defined(COOL) … … 91 89 reader[ridx].handle = open (reader[ridx].device, O_RDWR|O_NONBLOCK|O_NOCTTY); 92 90 #elif COOL 93 return !Cool_Init(); //if cool_init succeeds, it returns 0, so device_init returns 1 ? /FIXME I think the ! should disappear91 return Cool_Init(); 94 92 #else 95 93 reader[ridx].handle = open (reader[ridx].device, O_RDWR); … … 180 178 } 181 179 182 #ifdef DEBUG_IFD 183 printf ("IFD: com%d Status = %s / %s\n", reader[ridx].typ, in ? "card": "no card", in ? "change": "no change"); 184 #endif 180 cs_debug ("IFD: com%d Status = %s", reader[ridx].typ, in ? "card": "no card"); 185 181 186 182 return OK; -
trunk/csctapi/ifd_smartreader.c
r1391 r1394 50 50 cs_log("looking for device %s on bus %s",devname,busname); 51 51 #endif 52 reader->smartreader_usb_dev= NULL;53 if(! (reader->smartreader_usb_dev=find_smartreader((const char *)devname,(const char *)busname, &reader->ftdic)))52 reader->smartreader_usb_dev=find_smartreader((const char *)devname,(const char *)busname, &reader->ftdic); 53 if(!reader->smartreader_usb_dev) 54 54 return ERROR; 55 55 //The smartreader has different endpoint addresses … … 67 67 return ERROR; 68 68 } 69 ftdi_usb_reset(&reader->ftdic);70 69 71 70 #ifdef DEBUG_USB_IO … … 491 490 } 492 491 493 ret = usb_bulk_read(reader->ftdic.usb_dev,reader->ftdic.out_ep,(char*)local_buffer, 64,1000);492 ret = usb_bulk_read(reader->ftdic.usb_dev,reader->ftdic.out_ep,(char*)local_buffer,4,1000); 494 493 if(ret<0) { 495 494 #ifdef DEBUG_USB_IO … … 498 497 } 499 498 sched_yield(); 500 #ifdef DEBUG_ IO499 #ifdef DEBUG_USB_IO 501 500 if(usb_debug) { 502 501 cs_log("IO:SR: usb_bulk_read read %d bytes",ret); -
trunk/csctapi/io_serial.c
r1389 r1394 93 93 unsigned short dtr_bits[2]={0x100, 0}; 94 94 95 #ifdef DEBUG_IO 96 printf("IO: multicam.o %s %s\n", dtr ? "dtr" : "rts", set ? "set" : "clear"); fflush(stdout); 97 #endif 95 cs_debug("IO: multicam.o %s %s\n", dtr ? "dtr" : "rts", set ? "set" : "clear"); fflush(stdout); 98 96 if ((rc=ioctl(fdmc, GET_PCDAT, &msr))>=0) 99 97 { … … 304 302 cs_log("WARNING: Failed to reset reader %s", reader[ridx].label); 305 303 306 #ifdef DEBUG_IO 307 printf("IO: Setting properties\n"); 308 #endif 309 304 cs_debug("IO: Setting properties\n"); 310 305 return OK; 311 306 } … … 337 332 } 338 333 339 #ifdef DEBUG_IFD 340 printf ("IFD: Setting parity from %s to %s\n", 341 current_parity == PARITY_ODD ? "Odd" : 342 current_parity == PARITY_NONE ? "None" : 343 current_parity == PARITY_EVEN ? "Even" : "Invalid", 344 parity == PARITY_ODD ? "Odd" : 345 parity == PARITY_NONE ? "None" : 346 parity == PARITY_EVEN ? "Even" : "Invalid"); 347 #endif 334 cs_debug ("IFD: Setting parity from %s to %s\n", 335 current_parity == PARITY_ODD ? "Odd" : 336 current_parity == PARITY_NONE ? "None" : 337 current_parity == PARITY_EVEN ? "Even" : "Invalid", 338 parity == PARITY_ODD ? "Odd" : 339 parity == PARITY_NONE ? "None" : 340 parity == PARITY_EVEN ? "Even" : "Invalid"); 348 341 349 342 if (current_parity != parity) … … 400 393 } 401 394 402 #ifdef DEBUG_IO 403 printf ("IO: Receiving: "); 404 fflush (stdout); 405 #endif 395 cs_debug ("IO: Receiving: "); 406 396 for (count = 0; count < size * (_in_echo_read ? (1+io_serial_need_dummy_char) : 1); count++) 407 397 { … … 422 412 423 413 data[_in_echo_read ? count/(1+io_serial_need_dummy_char) : count] = c; 424 #ifdef DEBUG_IO 425 printf ("%X ", c); 426 fflush (stdout); 427 #endif 414 cs_debug_nolf ("%02X ", c); 428 415 #else 429 416 if (!IO_Serial_WaitToRead (0, timeout)) … … 431 418 if (read (reader[ridx].handle, &c, 1) != 1) 432 419 { 433 #ifdef DEBUG_IO 434 printf ("ERROR\n"); 435 fflush (stdout); 436 #endif 420 cs_debug_nolf ("ERROR\n"); 437 421 return ERROR; 438 422 } 439 423 data[_in_echo_read ? count/(1+io_serial_need_dummy_char) : count] = c; 440 441 #ifdef DEBUG_IO 442 printf ("%X ", c); 443 fflush (stdout); 444 #endif 424 cs_debug_nolf ("%02X ", c); 445 425 } 446 426 else 447 427 { 448 #ifdef DEBUG_IO 449 printf ("TIMEOUT\n"); 450 fflush (stdout); 451 #endif 428 cs_debug_nolf ("TIMEOUT\n"); 452 429 tcflush (reader[ridx].handle, TCIFLUSH); 453 430 return ERROR; … … 455 432 #endif 456 433 } 457 458 _in_echo_read = 0; 459 460 #ifdef DEBUG_IO 461 printf ("\n"); 462 fflush (stdout); 463 #endif 464 465 return OK; 466 } 467 468 469 434 cs_debug_nolf("\n"); //UGLY this is essential, resets global var, do not delete 435 _in_echo_read = 0; 436 return OK; 437 } 470 438 471 439 bool IO_Serial_Write (unsigned delay, unsigned size, BYTE * data) … … 473 441 unsigned count, to_send, i_w; 474 442 BYTE data_w[512]; 475 #ifdef DEBUG_IO 476 unsigned i; 477 478 printf ("IO: Sending: "); 479 fflush (stdout); 480 #endif 443 481 444 /* Discard input data from previous commands */ 482 445 // tcflush (reader[ridx].handle, TCIFLUSH); … … 501 464 if (u != (1+io_serial_need_dummy_char)*to_send) 502 465 { 503 #ifdef DEBUG_IO 504 printf ("ERROR\n"); 505 fflush (stdout); 506 #endif 466 cs_debug ("ERROR\n"); 507 467 if(reader[ridx].typ != R_INTERNAL) 508 468 wr += u; … … 513 473 wr += to_send; 514 474 515 #ifdef DEBUG_IO 516 for (i=0; i<(1+io_serial_need_dummy_char)*to_send; i++) 517 printf ("%X ", data_w[count + i]); 518 fflush (stdout); 519 #endif 475 cs_ddump (data_w+count, (1+io_serial_need_dummy_char)*to_send, "IO: Sending: "); 520 476 } 521 477 else 522 478 { 523 #ifdef DEBUG_IO 524 printf ("TIMEOUT\n"); 525 fflush (stdout); 526 #endif 479 cs_debug ("TIMEOUT\n"); 527 480 // tcflush (reader[ridx].handle, TCIFLUSH); 528 481 return ERROR; 529 482 } 530 483 } 531 532 #ifdef DEBUG_IO533 printf ("\n");534 fflush (stdout);535 #endif536 537 484 return OK; 538 485 } … … 541 488 { 542 489 543 #ifdef DEBUG_IO 544 printf ("IO: Clossing serial port %s\n", reader[ridx].device); 545 #endif 490 cs_debug ("IO: Clossing serial port %s\n", reader[ridx].device); 546 491 547 492 #if defined(TUXBOX) && defined(PPC) -
trunk/globals.h
r1389 r1394 117 117 #define CS_RDR_INIT_HIST 118 118 #endif 119 120 #define D_DUMP 1 // Debug Dumps 121 #define D_MASTER 2 // Debug Master Process 122 #define D_READER 4 // Debug Reader/Proxy Process 123 #define D_CLIENT 8 // Debug Client Process 124 #define D_ DEVICE 16 // Debug Reader I/O125 #define D_ WATCHDOG 32 // Debug Watchdog126 #define D_ALL_DUMP 63 119 ///////////////////////////design: actual: 120 #define D_DUMP 1 // Debug Dumps // nothing 121 #define D_MASTER 2 // Debug Master Process // nothing 122 #define D_READER 4 // Debug Reader/Proxy Process // traffic from/to cardreader on reader-xxxx.c level + ATR analysis + ecm dump?!? 123 #define D_CLIENT 8 // Debug Client Process // client traffic + cw: dump ?!? 124 #define D_PROTOCOL 16 // Debug IFD+protocol // nothing 125 #define D_DEVICE 32 // Debug Reader I/O // DEBUG_IO 126 #define D_ALL_DUMP 63 // dumps all 127 127 128 128 #define R_MOUSE 0x1 // Reader smartcard mouse … … 607 607 ulong srtimeout; // SerialReaderTimeount in millisec 608 608 int max_log_size; 609 int show_ecm_dw;610 609 int waitforcards; 611 610 int preferlocalcards; -
trunk/oscam-config.c
r1381 r1394 351 351 return; 352 352 } 353 if( !strcmp(token, "showecmdw")) { cfg->show_ecm_dw = atoi(value); return; }354 353 if( !strcmp(token, "waitforcards")) { cfg->waitforcards = atoi(value); return; } 355 354 if( !strcmp(token, "preferlocalcards")) { cfg->preferlocalcards = atoi(value); return; } -
trunk/oscam-log.c
r826 r1394 155 155 time(&t); 156 156 lt=localtime(&t); 157 sprintf(buf, "[LOG000]%4d/%02d/%02d %2d:%02d:%02d %s\n",157 sprintf(buf, "[LOG000]%4d/%02d/%02d %2d:%02d:%02d %s\n", 158 158 lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, 159 159 lt->tm_hour, lt->tm_min, lt->tm_sec, txt); … … 217 217 218 218 // cs_log("cs_debug called, cs_ptyp=%d, cs_dblevel=%d, %d", cs_ptyp, client[cs_idx].dbglvl ,cs_ptyp & client[cs_idx].dbglvl); 219 220 // if ((cs_ptyp & cs_dblevel)==cs_ptyp) 221 if ((cs_ptyp & client[cs_idx].dbglvl)==cs_ptyp) 219 if (client[cs_idx].dbglvl & cs_ptyp) 222 220 { 223 221 va_list params; … … 228 226 } 229 227 } 228 int number_of_chars_printed = 0; 229 void cs_debug_nolf(char *fmt,...) 230 { 231 char txt[256]; 232 233 // cs_log("cs_debug called, cs_ptyp=%d, cs_dblevel=%d, %d", cs_ptyp, client[cs_idx].dbglvl ,cs_ptyp & client[cs_idx].dbglvl); 234 if (client[cs_idx].dbglvl & cs_ptyp) 235 { 236 va_list params; 237 va_start(params, fmt); 238 vsprintf(txt, fmt, params); 239 va_end(params); 240 if(!memcmp(txt,"\n", 1)) { 241 number_of_chars_printed = 0; 242 } 243 else 244 number_of_chars_printed++; 245 246 int i; 247 time_t t; 248 struct tm *lt; 249 char buf[512],sbuf[16]; 250 251 if (use_syslog && !use_ac_log) // system-logfile 252 syslog(LOG_INFO, "%s", txt); 253 time(&t); 254 lt=localtime(&t); 255 if (number_of_chars_printed == 1) 256 sprintf(buf, "[LOG000]%4d/%02d/%02d %2d:%02d:%02d %s", 257 lt->tm_year+1900, lt->tm_mon+1, lt->tm_mday, 258 lt->tm_hour, lt->tm_min, lt->tm_sec, txt); 259 else 260 if (number_of_chars_printed == 16) { 261 number_of_chars_printed = 0; 262 sprintf(buf, "[LOG000]%s\n", txt); 263 } 264 else 265 sprintf(buf, "[LOG000]%s", txt); 266 267 if ((*log_fd) && (client[cs_idx].typ!='l') && (client[cs_idx].typ!='a')) 268 write_to_pipe(*log_fd, PIP_ID_LOG, (uchar *) buf+8, strlen(buf+8)); 269 else 270 cs_write_log(buf+8); 271 272 store_logentry(buf); 273 274 for (i=0; i<CS_MAXPID; i++) // monitor-clients 275 { 276 if ((client[i].pid) && (client[i].log)) 277 { 278 if (client[i].monlvl<2) 279 { 280 if ((client[cs_idx].typ!='c') && (client[cs_idx].typ!='m')) 281 continue; 282 if (strcmp(client[cs_idx].usr, client[i].usr)) 283 continue; 284 } 285 sprintf(sbuf, "%03d", client[i].logcounter); 286 client[i].logcounter=(client[i].logcounter+1) % 1000; 287 memcpy(buf+4, sbuf, 3); 288 monitor_send_idx(i, buf); 289 } 290 } 291 } 292 } 230 293 231 294 void cs_dump(uchar *buf, int n, char *fmt, ...) … … 249 312 char txt[512]; 250 313 251 // if (((cs_ptyp & cs_dblevel)==cs_ptyp) && (fmt))252 if (( (cs_ptyp & client[cs_idx].dbglvl)==cs_ptyp) && (fmt))314 //if (((cs_ptyp & client[cs_idx].dbglvl)==cs_ptyp) && (fmt)) 315 if ((cs_ptyp & client[cs_idx].dbglvl) && (fmt)) 253 316 { 254 317 va_list params; … … 259 322 //printf("LOG: %s\n", txt); fflush(stdout); 260 323 } 261 // if (((cs_ptyp | D_DUMP) & cs_dblevel)==(cs_ptyp | D_DUMP))262 if ( ((cs_ptyp | D_DUMP) & client[cs_idx].dbglvl)==(cs_ptyp | D_DUMP))324 //if (((cs_ptyp | D_DUMP) & client[cs_idx].dbglvl)==(cs_ptyp | D_DUMP)) 325 if (cs_ptyp & client[cs_idx].dbglvl) 263 326 { 264 327 for (i=0; i<n; i+=16) -
trunk/oscam-reader.c
r1217 r1394 331 331 } 332 332 333 if (cfg->show_ecm_dw || client[cs_idx].dbglvl) 334 cs_dump(er->ecm, er->l, "casc ecm:"); 333 cs_ddump(er->ecm, er->l, "casc ecm:"); 335 334 rc=0; 336 335 if (sflag) … … 398 397 return; 399 398 } 400 if (cfg->show_ecm_dw || client[cs_idx].dbglvl) 401 cs_dump(er->ecm, er->l, "ecm:"); 399 cs_ddump(er->ecm, er->l, "ecm:"); 402 400 er->rc=reader_ecm(er); 403 401 write_ecm_answer(fd_c2m, er); -
trunk/oscam.c
r1389 r1394 1608 1608 #endif 1609 1609 1610 if( cfg->show_ecm_dw || client[cs_idx].dbglvl ) 1611 cs_dump(er->cw, 16, "cw:"); 1610 cs_ddump(er->cw, 16, "cw:"); 1612 1611 if (er->rc==7) er->rc=0; 1613 1612 ph[client[cs_idx].ctyp].send_dcw(er); -
trunk/reader-common.c
r1389 r1394 102 102 #endif 103 103 int card; 104 cs_ptyp_orig=cs_ptyp; 105 cs_ptyp=D_PROTOCOL; 104 106 if (ICC_Async_GetStatus (&card)) { 105 107 cs_log("Error getting status of terminal."); 106 108 return 0; //corresponds with no card inside!! 107 109 } 110 cs_ptyp=cs_ptyp_orig; 108 111 return (card); 109 112 } … … 126 129 127 130 /* Activate card */ 131 cs_ptyp_orig=cs_ptyp; 132 cs_ptyp=D_DEVICE; 128 133 for (i=0; i<5; i++) { 129 134 if (!ICC_Async_Activate(atr)) { … … 134 139 cs_sleepms(500); 135 140 } 141 cs_ptyp=cs_ptyp_orig; 136 142 if (i<100) return(0); 137 143 … … 252 258 #ifdef TUXBOX 253 259 reader[ridx].typ = reader_device_type(device); 254 if (ICC_Async_Device_Init()) 255 cs_log("[tuxbox] Cannot open device: %s", device); 256 else 257 rc = OK; 258 #else 260 #endif 259 261 if (ICC_Async_Device_Init()) 260 262 cs_log("Cannot open device: %s", device); 261 263 else 262 264 rc = OK; 263 #endif264 265 cs_debug("ct_init on %s: %d", device, rc); 265 266 cs_ptyp=cs_ptyp_orig; -
trunk/reader-videoguard2.c
r1389 r1394 597 597 unsigned char atr_viasat_scandinavia[] = { 0x3F, 0x7F, 0x11, 0x25, 0x03, 0x33, 0xB0, 0x09, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x56, 0x54, 0x01, 0x00, 0x00 }; 598 598 unsigned char atr_premiere[] = { 0x3F, 0xFF, 0x11, 0x25, 0x03, 0x10, 0x80, 0x41, 0xB0, 0x07, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x50, 0x31, 0x01, 0x00, 0x11 }; 599 unsigned char atr_kbw[] = { 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x54, 0xB0, 0x01, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x4B, 0x57, 0x01, 0x00, 0x00}; 600 unsigned char atr_get[] = { 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x10, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x5A, 0x45, 0x01, 0x00, 0x00}; 599 unsigned char atr_kbw[] = { 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x54, 0xB0, 0x01, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x4B, 0x57, 0x01, 0x00, 0x00}; 600 unsigned char atr_get[] = { 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x10, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x5A, 0x45, 0x01, 0x00, 0x00}; 601 unsigned char atr_foxtel_90b[] = { 0x3F, 0x7F, 0x11, 0x25, 0x03, 0x33, 0xB0, 0x09, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x46, 0x44, 0x01, 0x00, 0x00}; 601 602 602 603 if ((atr_size == sizeof (atr_bskyb)) && (memcmp (atr, atr_bskyb, atr_size) == 0)) … … 649 650 cs_log("Type: Videoguard Get Kabel Norway"); 650 651 BASEYEAR = 2004; 652 } 653 else if ((atr_size == sizeof (atr_foxtel_90b)) && (memcmp (atr, atr_foxtel_90b, atr_size) == 0)) 654 { 655 cs_log("Type: Videoguard Foxtel Australia (090b)"); 656 BASEYEAR = 2000; 651 657 } 652 658 /* else
Note:
See TracChangeset
for help on using the changeset viewer.